Matplotlib从打印中排除间隔

Matplotlib从打印中排除间隔,matplotlib,Matplotlib,我有一些数据,我已经绘制如下。我想将我在紫色框中标记的区域从绘图中排除,这样子地块1的x轴就是类似于[1981,1993]+[2009,2014]的间隔 我使用的代码如下所示: # do figure 1 fig1, ax1 = plt.subplots(nrows=2, figsize=(8.5, 11)) # > plot 1 ax1[0].set_title('plot1') ax1[0].set_xlabel('x') ax1[0].set_ylabel('y1', color=

我有一些数据,我已经绘制如下。我想将我在紫色框中标记的区域从绘图中排除,这样子地块1的x轴就是类似于
[1981,1993]+[2009,2014]
的间隔

我使用的代码如下所示:

# do figure 1
fig1, ax1 = plt.subplots(nrows=2, figsize=(8.5, 11))

# > plot 1
ax1[0].set_title('plot1')
ax1[0].set_xlabel('x')
ax1[0].set_ylabel('y1', color='tab:red')
ax1[0].plot(cumlassets.index, cumlassets.values, color='tab:red')
ax1[0].tick_params(axis='y', labelcolor='tab:red')

# > plot2
ax1a = ax1[0].twinx()
ax1a.set_ylabel('y2', color='tab:blue')
ax1a.plot(ail_2016.index, ail_2016.values, color='tab:blue')
ax1a.tick_params(axis='y', labelcolor='tab:blue')

# > s
sns.barplot(x='x', y='y', hue='hue', dodge=False, data=res, ax=ax1[1])
ax1[1].set_title('plot2')
ax1[1].set_xticklabels(res['x'].values, rotation='vertical', ha='center')
ax1[1].set_xlabel('x')
ax1[1].set_ylabel('y')

fig1.tight_layout()
我将注意到,顶部的子绘图已经做了一些时髦的
ax[0].twinx()
工作,允许在同一绘图上以不同的比例绘制两条线

如果能找到一种方法在底部的条形图上完成这项工作,那将是一件非常棒的事情,它希望做一些类似的事情。我现在设置它的方式有点老套,在数据中有一个中间点
{'x':'…','y':0}


编辑:关于条形图,我决定只抑制刻度。

类似于?我没有找到一种方法将其与两侧以及子地块上的两个独立刻度一起使用。最重要的是,由于x轴两侧的长度不同,我还没有看到一个正确的缩放,它不会扭曲斜线。简单的方法是只需要两个子图。如果您想让轴具有正确的相对宽度,可以使用类似于
fig,axs=subplot(1,2,gridspec_kw={'width_ratio':[nyears[0]/totyers,nyears[1]/totyers]}的方法轻松实现这一点。
我尝试过,当您尝试添加斜线时,它们无法保持一致的角度。我也找不到一个简单的方法来减少两个子地块之间的水平间距。我不知道你所说的“一致角度”是什么意思。要减少子地块之间的空间,可以在网格规范kwargs中使用“wspace=small_number”。