繁体   English   中英

具有相等纵横比的子图

[英]Subplot with equal aspect ratio

我想在同一行中以相同的纵横比绘制 2 个子图。 不然真的很丑!

所以,通常,我使用axes().set_aspect('equal') (因为我还想删除轴,而且我不能使用 'off' 和 'equal'),但它不起作用就在这里,只出现第二张图片

我的代码:

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)

你有办法弄清楚吗?

编辑: 数据样本

我使用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']

我认为这应该做你想做的。 我将每个轴定义为图形的子图并更改它们的属性以获得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()

我正在寻找相同的功能。 您可以通过传递subplots_kw=dict(<kw arguments for plt.axes>)来设置所有子图的纵横比

例如,

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM