Python Matplotlib-设置两个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

我用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(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使用绘图。你很可能在不知不觉中强行创建了一个大的子地块。在声称标准不起作用之前,请给出一个完整的最小示例。你是对的,我这样做了。另一种方式: