Matplotlib - 设置两个x轴之间的距离

时间:2015-03-20 17:56:45

标签: 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(False)

但是,第二个x轴远低于第一个x轴。

图像
首先是xAxis
(巨大的空间)
第二个xAxis

将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()

编辑(添加的图片看起来像预期的结果): The intended result

现在,较低的x轴远低于上x轴,虚线超出绘制的矩阵。但是,两个轴应该彼此靠近,虚线应该停在"顶部"绘制的矩阵。

1 个答案:

答案 0 :(得分:-1)

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和limes!