【问题标题】:Matplotlib - maintain plot size of uneven subplotsMatplotlib - 保持不均匀子图的图大小
【发布时间】:2021-11-21 06:40:42
【问题描述】:

我一直根据this 问题在 matplotlib 中创建不均匀的子图。 gridspec 解决方案(第三个答案)对我来说效果更好一些,因为它为子图的确切大小提供了更多的灵活性。

当我使用 imshow() 添加二维数组的图时,受影响的子图的大小会调整为数组的形状。有什么方法可以避免这种情况并保持子图大小(或者更确切地说是纵横比)固定?

这是示例代码和结果图像,其中包含我很满意的子图大小:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec

# generate data
x = np.arange(0, 10, 0.2)
y = np.sin(x)

# plot
fig = plt.figure(figsize=(12, 9))

gs = gridspec.GridSpec(20, 20)

ax1 = fig.add_subplot(gs[0:5,0:11])
ax1.plot(x, y)
ax2 = fig.add_subplot(gs[6:11,0:11])
ax2.plot(y, x)
ax3 = fig.add_subplot(gs[12:20,0:11])
ax3.plot(y, x)
ax4 = fig.add_subplot(gs[0:9,13:20])
ax4.plot(x, y)
ax5 = fig.add_subplot(gs[11:20,13:20])
ax5.plot(y, x)

plt.show()

如果我使用以下几行(在plt.show 之前插入)另外绘制二维数组中的数据,就会发生这种情况:

2Ddata = np.arange(0, 10, 0.1).reshape(10, 10)
im = ax3.imshow(2Ddata, cmap='rainbow')

如何从 ax3(左下角)恢复子图的原始大小?

【问题讨论】:

    标签: python-3.x matplotlib


    【解决方案1】:

    包含ax3.set_aspect('auto')这一行似乎已经解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      • 2021-08-05
      相关资源
      最近更新 更多