这一部分主要介绍了Matplotlib所能绘制的一些基本图形,给出的实例包括饼图、直方图、极坐标图、散点图这四种图表类型的绘制。
目录
1.饼图的绘制
#微实例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.直方图的绘制
#微实例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.极坐标图的绘制
#微实例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.散点图的绘制
#微实例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()
5.其他pyplot基础图表函数
事实上,pyplot能够绘制的图表类型远不止上述几种,这里嵩天老师简略给出了pyplot的16种基础图表类型函数,如下:
参考资料:
嵩天. Python数据分析与展示[EB/OL].https://www.icourse163.org/learn/BIT-1001870002.