这一部分主要介绍了Matplotlib所能绘制的一些基本图形,给出的实例包括饼图、直方图、极坐标图、散点图这四种图表类型的绘制。
目录
1.饼图的绘制
2.直方图的绘制
3.极坐标图的绘制
4.散点图的绘制
5.其他pyplot基础图表函数
#微实例1:饼图的绘制 import matplotlib.pyplot as plt labels='Frogs','Hogs','Dogs','Logs' #定义饼图的标签 sizes=[15,30,45,10] #给出标签对应饼块的比例 explode=(0,0.1,0,0) #将第二块饼图Hogs突出,突出比例为0.1 plt.pie(sizes,explode=explode,labels=labels,autopct='%.1f%%', shadow=False,startangle=90) #autopct表示中间显示百分数的方式,shadow指定饼图是二维饼图还是带有阴影的饼图(True为有阴影),startangle表示饼图起始那一块竖线的角度 plt.axis('equal') #表示绘制饼图为圆形而非椭圆形 plt.show()
这里使用plt.axis('equal')使得绘制饼图为圆形而非椭圆形,实际运行中没有这一行也为圆形,猜测有可能是因为pyplot饼图的绘制函数升级了。
#微实例2:直方图的绘制 import numpy as np import matplotlib.pyplot as plt np.random.seed(0) mu,sigma=100,20 a=np.random.normal(mu,sigma,size=100) #使用numpy的randon.normal函数生成给定均值和方差的正态分布数组 plt.hist(a,30,density=True,histtype='bar',facecolor='b',edgecolor='k',alpha=0.75) #其中30为bin值,也可写成bin=20,表示直方图中横坐标划分的区间,对应条形的个数,histtype默认为条形,指定为'stepfilled'的话就没有条与条之间的分隔线 plt.title('Histogram') plt.show()
本来这里还在plt.hist()中给出了normed=1表示将数据中每个元素出现的个数归一化为概率,使得直方图的总面积为1,但是加了这个反而会报错,错误类型:
AttributeError: 'Polygon' object has no property 'normed'
经过查找同类型错误分析,发现原因是pyplot取消了这一属性,要实现同样的功能,可以使用density(布尔值)=True。
#微实例3:极坐标图的绘制 import numpy as np import matplotlib.pyplot as plt N=20 #表示绘制的极坐标图中数据的个数 theta=np.linspace(0.0,2*np.pi,N,endpoint=False) #使用np.linspace()从0到2Π也就是360°等分出N个不同的角度 radii=10*np.random.rand(N) #使用random.rand()函数生成N个不同的值 width=np.pi/4*np.random.rand(N) #乘以四分之Π得出宽度值 ax=plt.subplot(111,projection='polar') #projection给出绘制极坐标图的指示,涉及内向对象绘制的知识点 bars=ax.bar(theta,radii,width=width,bottom=0.0) #ax是一个对象,使用bar方法给出了绘制极坐标图的参数,theta对应极坐标中的left参数,指的是绘制的颜色区域从哪开始,radii对应height,值得是中心点向边缘绘制的长度,width对应的就是width,值的是每一块绘图区域对应的面积,也就是角度范围, for r,bar in zip(radii,bars): bar.set_facecolor(plt.cm.viridis(r/10.)) bar.set_alpha(0.5) #用for循环对每一个区域的颜色进行设定 plt.show()
#微实例4:散点图的绘制 import numpy as np import matplotlib.pyplot as plt fig,ax=plt.subplots() #将subplots()这个函数变成一个对象,用fig,ax分别表示该函数生成的图表以及绘图区域,当subplots()给出的值为空的时候默认绘图区域为111 ax.plot(10*np.random.randn(100),10*np.random.randn(100),'o') #横纵轴的值都使用random.randn()生成正态分布的随机数 ax.set_title('Simple Scatter') plt.show()
事实上,pyplot能够绘制的图表类型远不止上述几种,这里嵩天老师简略给出了pyplot的16种基础图表类型函数,如下:
参考资料:
嵩天. Python数据分析与展示[EB/OL].https://www.icourse163.org/learn/BIT-1001870002.