python matplotlib画图总结——第一篇

开始前先导入matplotlib

from matplotlib import pyplot as plt

画一幅图,首先新建一个figure

 plt.figure(1)

如果想要在一幅图里画多个图线,用subplot

plt.subplot(221)

“221”即把整个图分为2x2的四个小块,当前图形画在第1个块中,具体1~4代表哪个位置的快可以自己试试~

画图命令plot

plt.plot(x, y, color='r')

和matlab 画图类似,plot画图也需要两组大小相同的数组数据,分别为x和y

后面的color可以设置线的颜色,当然还可以修改线型等等。

为了图像好看可以加个网格grid

plt.grid(alpha=0.4)  # alpha表示透明度

此外,很重要的就是坐标轴的设置了

首先加上坐标的标签xlabel 、ylabel

plt.xlabel("t [s]")
plt.ylabel(r'$\psi$ [deg]')

注意这里如果有希腊字母或者上下标等等这样的特殊字符,要用两个美元符号夹起来,比如下标x_e要写为:

'$x_e$'

要是下标多于一个字符如y_{x=0}要用{}括起来:

'$y_{x=0}$'

要是有希腊字母比如\varepsilon_0必须用r''

r'$\varepsilon_0$=39deg'

刻度线的设置

比如以指定的间隔设置刻度线,每隔100来一条刻度线:

需要添加类:

from matplotlib.pyplot import MultipleLocator
y_major_locator = MultipleLocator(100)  # 每隔100一个刻度线
ax = plt.gca()  # 获得当前轴对象
ax.yaxis.set_major_locator(y_major_locator)  # 设置y轴的刻度线

设置刻度的标签

自动标签是它本来的值,但如果想要自己设置标签的话,可以用xticks来设置:

x_ticks = np.linspace(-1000e+3, 1000e+3, 5)
x_ticks_str = [str(int(i/1000)) for i in x_ticks]
plt.xticks(x_ticks, x_ticks_str)  # 第一个参数是刻度值,第二个参数是自己设置的该刻度值对应的标签

上面是把原来的-1000e+3,-500e+3,0,500e+3,1000e+3设置为-1000,-500,0,500,1000。

另外如果想设置固定的刻度范围,使用xlim

 plt.xlim(x_lim)  # 固定当前x刻度最值 x_lim=[x_min,x_max]
 plt.ylim(y_lim)  # 固定当前y刻度最值 y_lim=[y_min,y_max]

如果想在某一点(假设在第一象限)(x_0,y_0)向坐标轴画虚线,用vlineshline画横线和竖线,同样颜色和线型可以修改:

 plt.vlines(x0, y_min, y0, colors='b', linestyles='dashed')  # 画垂虚线
 plt.hlines(y0, x_min, x0, colors='b', linestyles='dashed')  # 画横虚线

拿vlines来说,第一个参数是竖线vlines的位置,即x=x_0处,第二个参数和第三个参数是虚线的最小值和最大值。

如果想给有子图的图像设置总标题,可以用suptitle

plt.suptitle("总标题")

如果子图的坐标标签相互有重叠,用tight_layout()展开:

plt.tight_layout()  # 保证子图坐标不重叠

保存图像

可以设置图像的格式,如保存成svg矢量格式插入到word里面等等,bbox_inches="tight"保证图像能完整保存。注意,如果有plt.show()命令,一定要放在savefig之后,否则保存的就是一张白纸。

plt.savefig('图像名.svg', dpi=2400, format='svg', bbox_inches="tight") 

如果想在两条曲线之间加上填充颜色或者阴影,可以用fill_between: 

plt.fill_between(x_shade, y1_shade, y2_shade, interpolate=False, alpha=0.2, hatch='///')

前三个参数是曲线一的x、y1数组和曲线二的x、y2数组,x是相同的。

需要注意的是hatch填充的图案只有在svg、pdf等格式下才会显示出来。

添加图例的时候,可以只给某一些图线添加:

line1, = plt.plot(xe, ye, color='r')  # 注意此处的逗号
line2, = plt.plot(xa, ya, ':', color='k')  # 注意此处的逗号
line3, = plt.plot(xb, yb, color='b')
plt.legend([line1, line3], ['line1曲线名', 'line2曲线名'], loc='upper right')

你可能感兴趣的:(matplotlib画图,python)