【问题标题】:Subplot with equal aspect ratio具有相等纵横比的子图
【发布时间】:2015-05-12 09:09:59
【问题描述】:

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

所以,通常情况下,我使用 pylab 中的 axes().set_aspect('equal')(因为我还希望删除轴,而且我不能使用 'off' AND '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()

它可能适用于以下行,但 subplot 没有 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']

【问题讨论】:

  • 您能否发布x_expy_expz_expz_exp2 的样本?
  • 当然。我试图弄清楚如何,1 秒。
  • 如果我在下面的答案是你所追求的,请告诉我

标签: python matplotlib


【解决方案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()

【讨论】:

  • 完美!就如此容易 !非常感谢。
【解决方案2】:

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

例如,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 2020-07-12
    • 2014-02-16
    • 1970-01-01
    • 2018-12-04
    • 2013-06-12
    • 1970-01-01
    相关资源
    最近更新 更多