python matplotlib和子批大小的问题

2024-04-24 10:01:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python创建一个包含6个子图的图形,但是我遇到了一个问题。下面是我的代码的简化版本:

import matplotlib.pyplot as plt
import numpy

g_width = 200
g_height = 200
data = numpy.zeros(g_width*g_height).reshape(g_height,g_width)

ax1 = plt.subplot(231)
im1 = ax1.imshow(data)
ax2 = plt.subplot(232)
im2 = ax2.imshow(data)
ax3 = plt.subplot(233)
im3 = ax3.imshow(data)
ax0 = plt.subplot(234)
im0 = ax0.imshow(data)
ax4 = plt.subplot(235)
im4 = ax4.imshow(data)
ax5 = plt.subplot(236)
ax5.plot([1,2], [1,2])
plt.show()

上图有5个“基于imshow”的子图和一个简单的基于数据的子图。有人能解释一下为什么最后一个子图的盒子和其他子图的尺寸不一样?如果我用“基于imshow”的子图替换最后一个子图,问题就消失了。为什么会这样?我怎样才能修好它?在


Tags: importnumpydatapltwidthheightimshowax1
1条回答
网友
1楼 · 发布于 2024-04-24 10:01:30

宽高比设置为"equal" for the 5imshow()calls (check by callingax1.get\) while forax5it is set toautowhich gives you the non-square shape you observe. I'm guessingimshow()`默认为等于,而plot则不一样。在

要修复此问题,请手动设置所有轴宽高比,例如在创建绘图时ax5 = plt.subplot(236, aspect="equal")

在侧节点上,如果您像这样创建多个轴,您可能会发现这很有用:

fig, ax = plt.subplots(ncols=3, nrows=2, subplot_kw={'aspect':'equal'})

那么ax是一个元组(在本例中是ax = ((ax1, ax2, ax3), (ax4, ax5, ax6))),所以要在i中绘图,j绘图只需调用

^{pr2}$

相关问题 更多 >