低阶通用模板
import numpy as np
import matplotlib.pyplot as plt
# 数据准备
x=np.linspace(0,10,num=30)
y=np.sin(x)
z=np.cos(x)
# 设置画布大小
plt.figure(figsize=(6, 3))
# 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')
plt.xlim(0,10)
plt.xticks([0,5,7,10],rotation=50) #
# 设置y轴标签、坐标轴范围,坐标轴刻度,坐标轴刻度旋转角度
plt.ylabel('y')
plt.ylim(-1,1)
plt.yticks([-1,-0.5,0,1],rotation=0)
#
plt.title('Exaple of plt.plot')
# 紧凑布局:自动调整图形、坐标轴、标签之间的距离,对于多个子图时尤其有用。
plt.tight_layout()
# 设置显示图例,要在plt.plot 时设置 label='xxx'才能显示图例
plt.legend()
# 保存图像,可以是任意后缀名,dpi设置图像清晰度
plt.savefig('./fig1.pdf', dpi=600) #要放在plt.show()之前,否作保存的图像为空白
# 显示图像
plt.show()
高阶技巧:twinx/ twiny
如何设置两条曲线共用x轴,但不共用y轴,或者相反。从而将两个数量级差距很大的曲线画在同一幅图中。
# 数据准备
x=np.linspace(0,10,num=30)
y=np.sin(x)
z=0.01*np.cos(x)-0.9
失败效果:
z应该是cos形状的图形,但由于与y相比数值太小。放在同一个图中无法显示变化曲线。
正确效果:
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,10,num=30)
y=np.sin(x)
z=0.01*np.cos(x)-0.9
plt.figure(figsize=(6, 3))
# 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('Exaple of twinx')
plt.tight_layout()
plt.show()
如何在标题、图例、坐标等位置写latex格式的数学符号和公式?
# plain text
plt.title('alpha > beta')
# math text
plt.title(r'$\alpha > \beta$')
更多用例请看官方文档:https://matplotlib.org/tutorials/text/mathtext.htmlmatplotlib.org
常用颜色
常用线形和标记:
character description
'-' solid line style
'--' dashed line style
'-.' dash-dot line style
':' dotted line style
'.' point marker
',' pixel marker
'o' circle marker
'v' triangle_down marker
'^' triangle_up marker
'<' triangle_left marker
'>' triangle_right marker
'1' tri_down marker
'2' tri_up marker
'3' tri_left marker
'4' tri_right marker
's' square marker
'p' pentagon marker
'*' star marker
'h' hexagon1 marker
'H' hexagon2 marker
'+' plus marker
'x' x marker
'D' diamond marker
'd' thin_diamond marker
'|' vline marker
'_' hline marker