1 from matplotlib import pyplot as plt 2 3 #调节图形大小,宽,高 4 plt.figure(figsize=(6,9)) 5 #定义饼状图的标签,标签是列表 6 labels = [u'第一部分',u'第二部分',u'第三部分'] 7 #每一个标签占多大,会自动去算百分比 8 sizes = [60,30,10] 9 colors = ['red','yellowgreen','lightskyblue'] 10 #将某部分爆炸出来, 使用括号,将第一块分割出来,数值的大小是分割出来的与其余两块的间隙 11 explode = (0.05,0,0) 12 13 patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors, 14 labeldistance = 1.1,autopct = '%3.1f%%',shadow = False, 15 startangle = 90,pctdistance = 0.6) 16 17 #labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置 18 #autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数 19 #shadow,饼是否有阴影 20 #startangle,起始角度,0,表示从0开始逆时针转,为第一块。通常选择从90度开始比较好看 21 #pctdistance,百分比的text离圆心的距离 22 #patches, l_texts, p_texts,为了获得饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本 23 24 #改变文本的大小 25 #方法是把每个text遍历。调用set_size方法设置它的属性 26 for t in l_text: 27 t.set_size(30) 28 for t in p_text: 29 t.set_size(20) 30 # 设置x,y轴刻度一致,这样饼图才能是圆的 31 plt.axis('equal') 32 plt.legend() 33 plt.show()
解决办法:每次编代码时加上python
每次编代码时都进行参数设置以下: #coding:utf-8 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 #有中文出现的状况,须要u'内容'
import numpy as np import matplotlib.pyplot as plt # 数据个数 n = 1024 # 均值为0, 方差为1的随机数 x = np.random.normal(0, 1, n) y = np.random.normal(0, 1, n) # 计算颜色值 color = np.arctan2(y, x) # 绘制散点图 plt.scatter(x, y, s = 75, c = color, alpha = 0.5) # 设置坐标轴范围 plt.xlim((-1.5, 1.5)) plt.ylim((-1.5, 1.5)) # 不显示坐标轴的值 plt.xticks(()) plt.yticks(()) plt.show()
c = 'r' (red); c = 'g' (green); c = 'k' (black) ; c = 'y'(yellow)
marker 形状,可选值,默认是圆
若是须要其余的,可搜索matplotlib的官网,在官网中搜索markers,选择第一个结果。数组
import numpy as np import matplotlib.pyplot as plt N = 1000 x = np.random.randn(N) y = np.random.randn(N) color = ['r','y','k','g','m'] plt.scatter(x, y,c=color,marker='>') plt.show()
alpha:标量,可选,默认值:无, 0(透明)和1(不透明)之间的alpha混合值dom
import numpy as np import matplotlib.pyplot as plt N = 1000 x = np.random.randn(N) y = np.random.randn(N) plt.scatter(x, y,alpha=0.5) plt.show()
edgecolors,顾名思义,边缘颜色或颜色序列,可选值,默认值:None函数
import numpy as np import matplotlib.pyplot as plt N = 1000 x = np.random.randn(N) y = np.random.randn(N) plt.scatter(x, y,alpha=0.5,edgecolors= 'white') #edgecolors = 'w',亦可 plt.show()
三、直方图spa
直方图与条形图的区别: 条形图是用条形的长度表示各种别频数的多少,其宽度(表示类别)则是固定的; 直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,所以其高度与宽度均有意义。 因为分组数据具备连续性,直方图的各矩形一般是连续排列,而条形图则是分开排列。 条形图主要用于展现分类数据,而直方图则主要用于展现数据型数据。
示例代码: [python] view plain copy #几率分布直方图 #高斯分布 #均值为0 mean = 0 #标准差为1,反应数据集中仍是分散的值 sigma = 1 x=mean+sigma*np.random.randn(10000) fig,(ax0,ax1) = plt.subplots(nrows=2,figsize=(9,6)) #第二个参数是柱子宽一些仍是窄一些,越大越窄越密 ax0.hist(x,40,normed=1,histtype='bar',facecolor='yellowgreen',alpha=0.75) ##pdf几率分布图,一万个数落在某个区间内的数有多少个 ax0.set_title('pdf') ax1.hist(x,20,normed=1,histtype='bar',facecolor='pink',alpha=0.75,cumulative=True,rwidth=0.8) #cdf累计几率函数,cumulative累计。好比须要统计小于5的数的几率 ax1.set_title("cdf") fig.subplots_adjust(hspace=0.4) plt.show()