Python: "Squeeze" 子图中的特定图

Python: "Squeeze" a particular plot in subplot

下面,我在Python中绘制了下图:

如您所见,右侧的图 "smooth" 比左侧的多得多。这是因为两个图上 x 轴的缩放比例不同。左边的观察结果比右边的多(大约三倍)。因此,我如何 "squeeze" 水平地显示右侧的图,以便我对左侧的图有一些近似的外观?下面是我的代码(我使用 Pandas):

fig, axes = plt.subplots(1, 2, sharey=True, figsize=(30, 15))
        # plot the same data on both axes
        #gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1])
        ax1 = df1.plot(ax=axes[0], grid='off', legend=False,
                                       xticks=[-250, -200, -150, -100, -50,
                                               0, 25], lw=2, colormap='jet',
                                       fontsize=20)
        ax2 = df2.plot(ax=axes[1], grid='off', legend=False,
                                       xticks=[-5, 0, 20, 40, 60, 80], lw=2,
                                       colormap='jet', fontsize=20)
        # zoom-in / limit the view to different portions of the data
        # hide the spines between ax and ax2
        ax1.set_ylabel('Treatment-Control Ratio', fontsize=20)
        ax1.axhline(y=1, color='r', linewidth=1.5)
        ax2.axhline(y=1, color='r', linewidth=1.5)
        ax1.axvline(x=0, color='r', linewidth=1.5, linestyle='--')
        ax2.axvline(x=0, color='r', linewidth=1.5, linestyle='--')
        ax1.set_xlabel('Event Time - 1 Minute', fontsize=20)
        ax2.set_xlabel('Event Time - 1 Minute', fontsize=20)
        ax1.spines['right'].set_visible(False)
        ax2.spines['left'].set_visible(False)
        ax1.yaxis.tick_left()
        ax2.yaxis.set_major_locator(plt.NullLocator())
        ax1.tick_params(labeltop='off')  # don't put tick labels at the top
        plt.subplots_adjust(wspace=0.11)
        plt.tight_layout()

在@cphlewis 和@gboffi 的帮助下,我用下面的代码解决了这个问题:

fig, axes = plt.subplots(figsize=(30, 15))
        # plot the same data on both axes
        gs = gridspec.GridSpec(1, 2, width_ratios=[3, 1.2]) 
        ax1 = plt.subplot(gs[0])
        ax2 = plt.subplot(gs[1], sharey=ax1)
        df_wpc.loc[-260:25].plot(ax=ax1, grid='off', legend=False,
                                       xticks=[-250, -200, -150, -100, -50,
                                               0, 25], lw=2, colormap='jet',
                                       fontsize=20)
        df_pc_et.loc[-5:91].plot(ax=ax2, grid='off', legend=False,
                                       xticks=[-5, 0, 20, 40, 60, 80], lw=2,
                                       colormap='jet', fontsize=20)
        ax1.set_ylabel('Treatment-Control Ratio', fontsize=20)
        ax1.axhline(y=1, color='r', linewidth=1.8)
        ax2.axhline(y=1, color='r', linewidth=1.8)
        ax1.axvline(x=0, color='r', linewidth=1.8, linestyle='--')
        ax2.axvline(x=0, color='r', linewidth=1.8, linestyle='--')
        ax1.set_xlabel('Event Time - 1 Minute', fontsize=20)
        ax2.set_xlabel('Event Time - 1 Minute', fontsize=20)
        ax1.spines['right'].set_visible(False)
        ax2.spines['left'].set_visible(False)
        ax1.yaxis.tick_left()
        ax2.yaxis.set_major_locator(plt.NullLocator())
        ax1.tick_params(labeltop='off')  # don't put tick labels at the top
        plt.subplots_adjust(wspace=0.7)
        plt.tight_layout()