matplotlib.pyplot是一个有命令风格的函数集合,它看起来和MATLAB很相似。每一个pyplot函数都使一副图像做出些许改变,例如创建一幅图,在图中创建一个绘图区域,在绘图区域中添加一条线等等。在matplotlib.pyplot中,各种状态通过函数调用保存起来,以便于可以随时跟踪像当前图像和绘图区域这样的东西。绘图函数是直接作用于当前axes(matplotlib中的专有名词,图形中组成部分,不是数学中的坐标系。)
import matplotlib.pyplot as plt
#import matplotlib.pyplot //也可以
显示画图时出现的中文和负号
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
画图样例
from matplotlib import pyplot as plt
colors=['r','g','b','k']
x=np.linspace(-2*np.pi,2*np.pi,500)#生成-2*pi到2*pi 含有500个数据的数组
y1=x**2
y2=np.sin(x)
y3=np.cos(x)
y4=np.log(abs(x))
f=[y1,y2,y3,y4]
ff=['$y=x^2$','$y=sin(x)$','$y=cos(x)$','$y=log(x)$']
plt.figure(figsize=(16,10))
for i in range(1,len(colors)+1):
plt.subplot(220+i)#subplot(abc)代表在a*b的画布里的第几个图
plt.plot(x,f[i-1],color=colors[i-1]);
plt.title(ff[i-1],size=18)
import numpy as np
import matplotlib.pyplot as plt
#正确显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
# 数据准备
x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
z=np.cos(x)
# 设置画布大小
plt.figure(figsize=(12, 5))
# plot 画x与y和x与z的关系图
plt.plot(x,y,label='sin(x)',color='red', linewidth=1,marker='o',markersize=3)
plt.plot(x,z,label='cos(x)',color='blue',linewidth=1,linestyle='dashed',marker='<',markersize=3)
# 设置x轴标签、坐标轴范围,坐标轴刻度,坐标轴刻度旋转角度
plt.xlabel('x',size=14)
plt.xlim(-np.pi,np.pi)
plt.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],rotation=60,size=12) #
# 设置y轴标签、坐标轴范围,坐标轴刻度,坐标轴刻度旋转角度
plt.ylabel('y',size=14)
plt.ylim(-1,1)
plt.yticks([-1,-0.5,0.5,0,1],rotation=0,size=12)
#标题
plt.title('sin/cos画图',size=18)
# 紧凑布局:自动调整图形、坐标轴、标签之间的距离,对于多个子图时尤其有用。
plt.tight_layout()
# 设置显示图例,要在plt.plot 时设置 label='xxx'才能显示图例
plt.legend()
#加网格线
plt.grid(True)
# 保存图像,可以是任意后缀名,dpi设置图像清晰度
#plt.savefig('./fig1.pdf', dpi=600) #要放在plt.show()之前,否作保存的图像为空白
# 显示图像
plt.show()
设置两条曲线共用x轴,但不共用y轴,或者相反。从而将两个数量级差距很大的曲线画在同一幅画中。下面以sin(x)和cos(x)举例
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,10,num=60)
y=np.sin(x)
z=0.01*np.cos(x)-0.9
plt.figure(figsize=(12,5))
# plot 画x与y的关系图
L1,=plt.plot(x,y,label='sin(x)',color='red', linewidth=1)
plt.ylabel('y')
plt.ylim(-1,1)
plt.yticks([-1,-0.5,0,1],rotation=0)
# 设置共用x轴
plt.twinx()
# plot 画x与z的关系图
L2,=plt.plot(x,z,label='cos(x)',color='blue',linewidth=1)
plt.ylabel('z')
plt.ylim(-0.91,-0.89)
plt.yticks([-0.91,-0.905,-0.90,-0.895,-0.89],rotation=0)
plt.legend(handles=[L1,L2])
plt.xlabel('x')
plt.title('$\sin(x) \quad and \quad \cos(x)$画图')
plt.tight_layout()
plt.show()
# 创建图表对象
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 7))
# 创建子图
ax1 = fig.add_axes([0, 0.5, 0.45, 0.45]) # 在图表的左上角创建一个子图
ax2 = fig.add_axes([0, 0, 0.45, 0.45]) # 在图表的左下方创建一个子图
ax3 = fig.add_axes([0.5, 0.5, 0.45, 0.45]) # 在图表的右上角创建一个子图
ax4 = fig.add_axes([0.5, 0, 0.45, 0.45]) # 在图表的右下方创建一个子图
# 左上角子图:曲线图
x1 = np.linspace(-10, 10, 100)
ax1.plot(x1, np.sin(x1), color="red");
# 右下角子图:柱状图
x2 = ["a", "b", "c", "d", "e", "f"]
y2 = [1.2, 1.3, 2.5, 0.25, 5, 1.56]
ax2.bar(x2, y2, color="blue");
# 左上角子图:曲线图
x3 = np.linspace(-10, 10, 100)
ax3.plot(x3, np.cos(x3), color="green");
# 右下角子图:柱状图
x4 = ["a", "b", "c", "d", "e", "f"]
y4 = [1.2, 1.3, 2.5, 0.25, 5, 1.56]
ax4.plot(x4, y4, color="black");
left, bottom, width, height = 0.55, 0.25, 0.15, 0.15
ax5=fig.add_axes([left, bottom, width, height])
ax5.bar(x4, y4);