Python Matplotlib-设置两个x轴之间的距离
我用imshow展示了一个比它的高度宽5倍的图像。我使用以下代码在下面添加第二个x轴:Python Matplotlib-设置两个x轴之间的距离,python,matplotlib,Python,Matplotlib,我用imshow展示了一个比它的高度宽5倍的图像。我使用以下代码在下面添加第二个x轴: newax = figure.add_axes(ax.get_position()) newax.patch.set_visible(False) newax.yaxis.set_visible(False) for spinename, spine in newax.spines.items(): if spinename != 'bottom': spine.set_visible(F
newax = figure.add_axes(ax.get_position())
newax.patch.set_visible(False)
newax.yaxis.set_visible(False)
for spinename, spine in newax.spines.items():
if spinename != 'bottom':
spine.set_visible(False)
但是,第二个x轴远低于第一个x轴
形象
第一个X轴
巨大的空间
第二个X轴
将ylim设置为[0,0]不起作用。如何将第二个x轴仅放置在第一个x轴下方的几个像素处
编辑:添加最小样本以帮助再现问题
import numpy as np
import matplotlib.pyplot as plt
def addReferenceToPlot(figure, ax, xlim):
newax = figure.add_axes(ax.get_position())
newax.patch.set_visible(False)
newax.yaxis.set_visible(False)
for spinename, spine in newax.spines.items():
if spinename != 'bottom':
spine.set_visible(False)
newax.axvline(0.5, color='k', ls='dashed')
data = np.ones((25, 111))
specFig, specAx = plt.subplots()
addReferenceToPlot(specFig, specAx, data.shape[1])
specAx.imshow(data, origin="lower", interpolation="nearest")
specAx.set_xlim([0, data.shape[1]])
plt.show()
编辑添加的与预期结果相似的图片:
现在,下x轴远低于上x轴,虚线超出绘制的矩阵。但是,两个轴应彼此靠近,虚线应停止在打印矩阵的顶部
def plot_mix(image1, image2):
ax.append(plt.subplot2grid((3, 2), (1, 0)))
ax[-1].imshow(image1)
ax[-1].set_title('Mix Image 1')
ax.append(plt.subplot2grid((3, 2), (2, 0)))
ax[-1].imshow(image2)
ax[-1].set_title('Mix Image 2')
plt.tight_layout()
plt.show()
感谢cphlewis和酸橙 a如果你想让我们调试你的代码,你应该展示你的整个代码;b如果你在学习matplotlib,你最好从使用子图开始。也许你想要组合图?如果你不想让它们那么紧凑,请查看紧凑布局示例,plt.tight\u布局不起作用。它只会缩小绘图范围,但不会改变距离。但是,我不使用plt.plot,而是使用imshow。我已经用一行一列实例化了一个子地块。我觉得,绘制数据的区域比显示图像的区域大得多。图像似乎是一个巨大正方形中的矩形。如何将绘图区域缩小到图像的大小?imshow使用绘图。你很可能在不知不觉中强行创建了一个大的子地块。在声称标准不起作用之前,请给出一个完整的最小示例。你是对的,我这样做了。另一种方式: