如果说 pandas 是 python 中一个处理数据的好手,那么 matplotlib 则是把这个数据展现在人们眼球面前的使者,本篇我们来学习一下 matplotlib 的用法和 pyplot 的方式作图,他画图便捷,唯一不足的是我觉得它没有那么高大上。
常用的对象:
Figure 、 可以理解为画板。
Axes 、 理解为画板的上画纸,一个画板上可以放一个以上的画纸。
Labels 、 标签,xlabel,ylabel 分别设置 X,Y 轴的标题文字。
Lim 、 xlim,ylim 分别设置 X,Y 轴的显示范围。
Legend 、 显示图示,即图中表示每条曲线的标签和样式的矩形区域。
常用图形
Plot 散列图
from matplotlib import pyplot as plt #绘图库
import numpy as np #科学计算
x=np.linspace(1,10,100) #等差数列
y=np.sin(x)
z=np.cos(x)
plt.figure(figsize=(10,4))
plt.plot(x,y,label="$sin(x)",color='r',linewidth=2)
plt.plot(x,z,label="$cos(x)",color='g',linewidth=2)
plt.xlabel('X')
plt.ylabel('Y')
plt.title("plt test")
plt.legend()
plt.show()
由于画图里的对象太多,属性更多,为了清晰思路,建议使用面向对象的方式来画图。下图为效果:
Scatter 散点图
from matplotlib import pyplot as plt
import numpy as np
x = np.random.randint(1,10,20)
y = np.random.randint(1,10,20)
plt.figure(figsize=(10,4))
plt.scatter(x,y,s=x*100,label="$xy",marker=(5,1))
plt.xlabel('X')
plt.xlabel('Y')
plt.title("plt test")
plt.legend()
plt.show()
S 代表散点的面积大小,marker 的第一个参数代表散点的边数,第二个参数代表三
点的样式,0 代表多边形,1 代表星形,2 代表放射形,3 表示忽略边形也就是圆
形。
Pie 饼图
from matplotlib import pyplot as plt
import numpy as np
x=[4,5,6]
plt.figure()
plt.pie(x,labels=list('abc'),colors=list('gbr'))
plt.xlabel('X')
plt.ylabel('Y')
plt.title('plt test')
plt.legend()
plt.show()
Labels 代表每一块的标签,colors 是每一块的颜色。可以调整 figsize 调整大小。
可以改变是圆还是椭圆,如果是正方形的 figsize 就是正圆,否则就是椭圆。
Bar 条形图
from matplotlib import pyplot as plt
import numpy as np
x=[1,2,3,4]
y=[6,5,7,4]
y1=[2,3,4,5]
plt.figure(figsize=(10,6))
plt.bar(x,height=y,color='b',width=0.35,label='man')
plt.bar(np.array(x)+0.35,height=y1,color='g',width=0.35,label='woman')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('plt test')
plt.legend()
plt.show()
Bar 可以绘制柱状图,width 设置的是条状的宽度,在这里需要留意下,list 不能
直接和数字相加,需要用 np.array 转化为数组。看看效果。
条状图
使用barh可以画条状图。
from matplotlib import pyplot as plt
import numpy as np
x=[1,2,3,4]
y=[6,5,7,4]
y1=[2,3,4,5]
plt.figure(figsize=(10,6))
plt.barh(np.array(x)-0.5,width=y,color='b',label='man')
plt.barh(np.array(x)+0.5,width=y1,color='r',label='woman')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('plt test')
plt.legend()
plt.show()
Contour 环形图
from matplotlib import pyplot as plt
import numpy as np
x,y = np.ogrid[-1:1:5j,-1:1:5j]
f = x**2+y**2
plt.contour(f,colors=list('gbr'))
plt.xlabel('X')
plt.xlabel('Y')
plt.title('plt test')
plt.legend()
plt.show()