在子图环境中使用时 matplotlib.pyplot.imshow 的边距
Margins of matplotlib.pyplot.imshow when used in subplot environment
我正在尝试使用 imshow 在图形的单独图中绘制多个数组的值。
当我只绘制一张图像,并使用具有正确范围的 plt.imshow() 命令时,图形完美地出现了。
但是,当我尝试使用 plt.subplot() 在同一图中创建此图像的多个绘图时,这些绘图中的每一个都以不正确的 x 轴设置结束,并且有白色边距。我尝试用 set_xlim() 命令校正 x 轴范围,但它没有效果(我也不明白)。
最小工作示例如下 - 任何帮助将不胜感激!
from matplotlib import pyplot as plt
import numpy as n
image = n.array([[ 1., 2., 2., 5.],
[ 1., 0., 0., 3.],
[ 1., 2., 0., 2.],
[ 4., 2., 3., 2.]])
xextent, yextent= n.shape(image)
fig, ax = plt.subplots(2,sharex=True, sharey=True)
im0 = ax[0].imshow(image, extent=(0,xextent,yextent,0),interpolation='nearest');
ax[0].set_xlim([0,4])
im1 = ax[1].imshow(image, extent=(0,xextent,yextent,0),interpolation='nearest');
ax[1].set_xlim([0,4])
plt.show()
我认为白色space 的原因是 window 的尺寸。您可以更改 window 大小(您必须计算出数字),也可以调整子图。我通过使用图像弹出窗口中的 "configure subplots" 按钮发现了这一点。
plt.subplots_adjust(right=0.4)
有了这条线,情节将没有白色space,但仍有一些空白space(您可以通过调整window大小来修复)。
所以选项是:
我正在尝试使用 imshow 在图形的单独图中绘制多个数组的值。
当我只绘制一张图像,并使用具有正确范围的 plt.imshow() 命令时,图形完美地出现了。 但是,当我尝试使用 plt.subplot() 在同一图中创建此图像的多个绘图时,这些绘图中的每一个都以不正确的 x 轴设置结束,并且有白色边距。我尝试用 set_xlim() 命令校正 x 轴范围,但它没有效果(我也不明白)。
最小工作示例如下 - 任何帮助将不胜感激!
from matplotlib import pyplot as plt
import numpy as n
image = n.array([[ 1., 2., 2., 5.],
[ 1., 0., 0., 3.],
[ 1., 2., 0., 2.],
[ 4., 2., 3., 2.]])
xextent, yextent= n.shape(image)
fig, ax = plt.subplots(2,sharex=True, sharey=True)
im0 = ax[0].imshow(image, extent=(0,xextent,yextent,0),interpolation='nearest');
ax[0].set_xlim([0,4])
im1 = ax[1].imshow(image, extent=(0,xextent,yextent,0),interpolation='nearest');
ax[1].set_xlim([0,4])
plt.show()
我认为白色space 的原因是 window 的尺寸。您可以更改 window 大小(您必须计算出数字),也可以调整子图。我通过使用图像弹出窗口中的 "configure subplots" 按钮发现了这一点。
plt.subplots_adjust(right=0.4)
有了这条线,情节将没有白色space,但仍有一些空白space(您可以通过调整window大小来修复)。
所以选项是: