一直对matplotlib都是碰到哪个函数百度哪个,次数多了就有点烦,干脆列个知识清单系统地学习一下。
1.快速绘图
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 10, 1000)#在(0,10)均匀返回1000个点 y = np.sin(x) z = np.cos(x**2) plt.figure(figsize=(8,4)) #设置大小为800*400像素 plt.plot(x,y,label="sin(x)",color="red",linewidth=2) plt.plot(x,z,"b--",label="cos(x^2)") plt.xlabel("Time(s)") plt.ylabel("Volt") plt.title("PyPlot First Example") plt.ylim(-1.2,1.2) #y的绘图范围 plt.legend() #显示图例,即显示label plt.show()
plot()中有一个线型的参数
linesyle:'-'实线, '--'短线, '-.'短点相间线, ':'虚点线。
2.绘制多轴图
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt plt.subplot(221) # 第一行的左图 plt.subplot(222) # 第一行的右图 plt.subplot(212) # 第二整行 plt.show()
subplot(numRows, numCols, plotNum)
subplot将整个绘图区域等分为numRows行 * numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。选择在plotNum处绘图。
3.绘制叠加图
除了绘制多轴图外,也可以在同一幅图里绘制多条曲线
t = np.arange(0., 5., 0.02) y1=t y2=t**2 y3=t**3 plt.plot(t, y1, 'r-', t, y2, 'b--', t, y3, 'g:') plt.show()
扫描二维码关注公众号,回复:
29054 查看本文章
4.绘制多样式图
首先给出一组数据
x = [1, 2, 3, 4, 5] y = [2.3, 3.4, 1.2, 6.6, 7.0]
1)曲线图
即为第一部分的plot
2)散点图
plt.scatter(x, y, color='r', marker='+') plt.show()
scatter()常用的color和marker见
https://blog.csdn.net/qiu931110/article/details/68130199
3)扇形图
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt labels='frogs','hogs','dogs','logs' sizes=15,20,45,10 colors='yellowgreen','gold','lightskyblue','lightcoral' explode=0,0.2,0,0 plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=50) plt.axis('equal') plt.show()
其中explode是分离系数,默认为0,0.2即为0.2倍的半径长度
autopct='%1.1f%%'是指小数点后保留1位小数
shadow为True时有阴影,有立体效果,个人觉得更好看。
startangle即起始角度,参考系类似于二维坐标系,逆时针为正。
4)柱状图
plt.figure(figsize=(9,6)) n = 8 X = np.arange(n)+1 #X是1,2,3,4,5,6,7,8,柱的个数 # numpy.random.uniform(low=0.0, high=1.0, size=None), normal #uniform均匀分布的随机数,normal是正态分布的随机数,0.5-1均匀分布的数,一共有n个 Y1 = np.random.uniform(0.5,1.0,n) Y2 = np.random.uniform(0.5,1.0,n) plt.bar(X,Y1,width = 0.35,facecolor = 'lightskyblue',edgecolor = 'white') #width:柱的宽度 plt.bar(X+0.35,Y2,width = 0.35,facecolor = 'yellowgreen',edgecolor = 'white') #水平柱状图plt.barh,属性中宽度width变成了高度height #打两组数据时用+ #facecolor柱状图里填充的颜色 #edgecolor是边框的颜色 #想把一组数据打到下边,在数据前使用负号 #plt.bar(X, -Y2, width=width, facecolor='#ff9999', edgecolor='white') #给图加text for x,y in zip(X,Y1): plt.text(x, y, '%.2f' % y, ha='center', va= 'bottom') for x,y in zip(X,Y2): plt.text(x+0.35, y, '%.2f' % y, ha='center', va= 'bottom') plt.ylim(0,+1.25) plt.show()
5.一些设置工具
1)plt.text()添加文字说明
- text()可以在图中的任意位置添加文字,并支持LaTex语法
- xlable(), ylable()用于添加x轴和y轴标签
- title()用于添加图的题目
2)plt.axis()设置x,y轴范围
plt.axis([Xmin,Xmax,Ymin,Ymax])
3)plt.annotate()文本注释
t = np.arange(0.0, 5.0, 0.01) s = np.cos(2*np.pi*t) line, = plt.plot(t, s, lw=2) plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.0),)#shrink为收缩指数 plt.ylim(-2,2) plt.xlabel('X') plt.ylabel('Y') plt.title('Sample') plt.show()