具有相同宽高比的子图

时间:2015-05-12 09:09:59

标签: python matplotlib

我想在同一行中绘制具有相同宽高比的2个子图。否则会很难看!

所以,通常情况下,我使用axes().set_aspect('equal')(因为我也希望删除轴,而且我不能使用' off'' equal& #39;)来自pylab,但它不能在这里工作,只有第二张图片出现

我的代码:

plt.subplot(1,2,1)
axes().set_aspect('equal')
plt.tricontourf(x_exp, y_exp, z_exp)
plt.colorbar(shrink=0.9,drawedges=True, orientation='vertical')
plt.axis('off')
plt.title('tricontour')

plt.subplot(1,2,2)
axes().set_aspect('equal')
plt.tricontourf(x_exp, y_exp, z_exp2)
plt.colorbar(shrink=0.9,drawedges=True, orientation='vertical')
plt.axis('off')
plt.title('tricontour')

plt.show()

它可能适用于以下行,但是子图没有tricontourf图!

fig = plt.figure() ax1 = fig.add_subplot(2,1,1, adjustable='box', aspect=0.3) ax2 = fig.add_subplot(2,1,2)

你有想法弄清楚吗?

编辑: Sample of data

我已使用np.savez("Sample",x_exp=x_exp,y_exp=y_exp,z_exp=z_exp,z_exp2=z_exp2)保存数据。

您可以使用以下行阅读:

import numpy as np
Data = np.load("Sample.npz")
x_exp = Data['x_exp']
y_exp = Data['y_exp']
z_exp = Data['z_exp']
z_exp2 = Data['z_exp2']

2 个答案:

答案 0 :(得分:1)

我认为这应该做你想要的。我将每个轴定义为图的子图并更改其属性以获得equal宽高比并将其关闭:

fig = plt.figure()

ax1 = fig.add_subplot(1,2,1)
im = ax1.tricontourf(x_exp, y_exp, z_exp)
plt.colorbar(im, drawedges=True, orientation='vertical')
ax1.set_aspect('equal')
ax1.set_axis_off()
ax1.set_title('tricontour')

ax2 = fig.add_subplot(1,2,2)
im = ax2.tricontourf(x_exp, y_exp, z_exp2)
plt.colorbar(im, drawedges=True, orientation='vertical')
ax2.set_aspect('equal')
ax2.set_axis_off()
ax2.set_title('tricontour')

plt.show()

答案 1 :(得分:1)

我一直在寻找相同的功能。您可以通过传递 subplots_kw=dict(<kw arguments for plt.axes>)

来设置所有子图的纵横比

例如

fig, axs = plt.subplots(2, 3, subplot_kw=dict(box_aspect=1))