matplotlib 保持不均匀子地块的地块大小

14ifxucb  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(98)

我一直在matplotlib中基于this问题创建不均匀的子图。gridspec解决方案(第三个答案)对我来说更好一点,因为它为子图的确切大小提供了更多的灵活性。
当我用imshow()添加一个2D数组的图时,受影响的子图会根据数组的形状调整大小。有没有办法避免这种情况,并保持子图大小(或更确切地说,纵横比)固定?
下面是示例代码和结果图像,子图大小我很满意:

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之前)额外绘制来自2D数组的数据时会发生的情况:

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

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

pprl5pva

pprl5pva1#

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

相关问题