常用操作
- 中文和负数乱码
plt.rcParams['axes.unicode_minus'] = False #解决负号无法正常显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
- 坐标轴设置
- 设置坐标轴范围
plt.xlim([x_min,x_max]) plt.ylim([y_min,y_max])
- 设置坐标轴刻度间隔
ax=plt.gca()#获取当前画布 ax.xaxis.set_major_locator(plt.MultipleLocator(2)) ax.yaxis.set_major_locator(plt.MultipleLocator(100))
- 设置坐标轴的粗细
ax=plt.gca();#获得坐标轴的句柄 ax.spines['bottom'].set_linewidth(2);###设置底部坐标轴的粗细 ax.spines['left'].set_linewidth(2);####设置左边坐标轴的粗细 ax.spines['right'].set_linewidth(2);###设置右边坐标轴的粗细 ax.spines['top'].set_linewidth(2)
- 设置坐标轴刻度的样式
plt.tick_params(axis='x',width=2,size=6) plt.tick_params(axis='y',width=2,size=4)
- 不同类型的两组数据在同一个坐标系中(同一个X轴,不同y轴)
plt.twinx()
- 图列相关设置
font_dict_legend=dict(size=14,
family='Times New Roman',
weight='bold',
style='normal')
plt.legend(frameon=False,prop=font_dict_legend,loc=`upper left`,bbox_to_anchor=(0.2,0.4))//右移百分比和上移百分比,以左下角为原点
loc可能的取值
- 参考线
水平参考线
plt.hlines(value,xmin,xmax,color='red',ls='--',lw=2)
垂直参考线
plt.vlines(value,ymin,ymax,color='red',ls='--',lw=2)
- 在图表中绘制文字
参数x,y表示的是文字在图标坐标系中的坐标
plt.text(x,y,s,size=16,family='Times New Roman',color='black',bbox=dict(facecolor='red', alpha=0.5))
- 刻度设置
plt.xticks(fontsize=12,color='black',family='Times New Roman',style='normal',weight='normal',rotation=90)
- marker相关设置
包括前景色(markerfacecolor)、边界色(markeredgecolor)和边界宽度(markeredgewodth)
plt.plot(x, y, lw=5, ls='-', markersize=6, marker='o', markerfacecolor='white', markeredgecolor=(0, 0, 0), markeredgewidth=1.5)
- 保存图片设置分辨率和图片留白
plt.savefig(filename,dpi=200,bbox_inches='tight')
示例
def createFig(x,y,no):
fig=plt.figure(figsize=(6,4))
plt.plot(x, y, lw=5, ls='-', markersize=6, marker='o', markerfacecolor='white', markeredgecolor=(0, 0, 0), markeredgewidth=1.5)
xlim=plt.xlim()
plt.hlines(0,xlim[0],xlim[1],lw=3,ls='--',color='#ff6929')
plt.xlim(xlim)
xticks=[pdl.date(2017,1,1),pdl.date(2017,7,1),pdl.date(2018,1,1),pdl.date(2018,7,1),pdl.date(2019,1,1),pdl.date(2019,7,1),pdl.date(2020,1,1),pdl.date(2020,7,1),pdl.date(2021,1,1),pdl.date(2021,7,1)]
plt.xticks(xticks,[])
plt.yticks(fontsize=20,color='black',family='Arial',weight='bold')
# 设置坐标轴粗细
ax=plt.gca();#获得坐标轴的句柄
ax.spines['bottom'].set_linewidth(2);###设置底部坐标轴的粗细
ax.spines['left'].set_linewidth(2);####设置左边坐标轴的粗细
ax.spines['right'].set_linewidth(2);###设置右边坐标轴的粗细
ax.spines['top'].set_linewidth(2)
# 设置刻度线粗细
plt.tick_params(axis='x',width=2,size=6)
plt.tick_params(axis='y',width=2,size=4)
plt.savefig("./png/{}.png".format(no))
plt.show()