matplotlib画图总结–多子图布局

1、subplot布局

subplotnrows, ncols, index, **kwargs)

subplotpos, **kwargs)

subplotax)

x=[1,2,3]
values = [10, 15, 25]
p1=plt.subplot221)
plt.barx, values)
p1.set_ylabel'yy')
p1.set_title'p1')

plt.subplot222)
plt.scatterx, values)

plt.subplot223)
plt.plotx, values)
plt.suptitle'subplot')
plt.show)

上面的图第三张只占半个图纸长度,不美观。那么使用subplot怎么画非对阵图呢?重新定义子图的分布行列即可。

 plt.subplot212) 或plt.subplot2,1,2)把图纸分为2行1列,当前子图是第二个。

x=[1,2,3]
values = [10, 15, 25]
p1=plt.subplot221)
plt.barx, values)
p1.set_ylabel'yy')
p1.set_title'p1')
plt.subplot222)
plt.scatterx, values)
plt.subplot212)
plt.plotx, values)
plt.suptitle'subplot')
plt.show)

先把图纸分为22列,先画图1和图3,然后再把图纸划分为12列,对第二列绘图。

x=[1,2,3]
values = [10, 15, 25]
p1=plt.subplot221)
plt.barx, values)
p1.set_ylabel'yy')
p1.set_title'p1')
plt.subplot223)
plt.scatterx, values)
plt.subplot1,2,2)
plt.plotx, values)
plt.suptitle'subplot')
plt.show)

2、subplots布局

matplotlib.pyplot.subplotsnrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw) :创建一个图形和一组子图。

fig, ax = plt.subplots2, 3)
fig.tight_layout)
ax[0].text0.5,0.5, 'sss')
plt.show)

3、subplot2grid布局

matplotlib.pyplot.subplot2gridshape, loc, rowspan=1, colspan=1, fig=None, **kwargs)

shape : sequence of 2 ints

loc : sequence of 2 ints

rowspan : int

Number of rows for the axis to span to the right.

colspan : int

Number of columns for the axis to span downwards.

fig = plt.figure)
ax1 = plt.subplot2grid3, 3), 0, 0), colspan=3)
ax2 = plt.subplot2grid3, 3), 1, 0), colspan=2)
ax3 = plt.subplot2grid3, 3), 1, 2), rowspan=2)
ax4 = plt.subplot2grid3, 3), 2, 0))
ax5 = plt.subplot2grid3, 3), 2, 1))
plt.show)

x = np.arange1,10)
fig = plt.figure)
ax1 = plt.subplot2grid3, 3), 0, 0), colspan=1, title = 'plt1')
ax1.plotx,x*x)
ax2 = plt.subplot2grid3, 3), 0, 1), colspan=2, title = 'plt2')
ax2.plotx,x*x)
ax3 = plt.subplot2grid3, 3), 1, 0), colspan=3, title = 'plt3')
ax3.plotx,x*x)
ax4 = plt.subplot2grid3, 3), 2, 0), title = 'plt4')
ax4.plotx,x*x)
ax5 = plt.subplot2grid3, 3), 2, 1), title = 'plt5')
ax5.plotx,x*x)
ax6 = plt.subplot2grid3, 3), 2, 2), title = 'plt6')
ax6.plotx,x*x)
plt.legend)
plt.suptitle'subplot2grid figure',  x=0.5,y=0.95, ha='center', va='center', fontsize=15)
plt.show)

可见上面的图,x周名称和附件的图互相干涉。需要缩小图或者加大间隙。

使用layout函数plt.tight_layout)。但是图的title和第一行干涉。

 plt.tight_layoutrect=[0, 0, 1, 0.95]) 或者添加一句fig.subplots_adjusttop=0.85)即可。

matplotlib.pyplot.tight_layoutpad=1.08, h_pad=None, w_pad=None, rect=None)

其中rect可以这样定义:[left, bottom, right, top] in normalized 0, 1) figure coordinates,所以可以定义right和top,进行图的缩放。

A rectangle left, bottom, right, top) in the normalized figure coordinate that the whole subplots area including labels) will fit into. Default is 0, 0, 1, 1).

 图的缩放,做个实验plt.tight_layoutrect=[0, 0, 0.7, 0.5])

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注