使用python中的子图共享X轴并同时更改大小

时间:2018-04-21 14:38:21

标签: python pandas plot

我有一个数据框如下所示

df =
       index         value   active  
2014-05-21 10:00:00    0.0        1        
2014-05-21 11:00:00    3.4        1        
2014-05-21 12:00:00    nan        0      
2014-05-21 13:00:00    0.0        1        
2014-05-21 14:00:00    nan        0        
2014-05-21 15:00:00    1.0        1 
.....       

并按子图

绘制

代码和图形如下所示

f, (ax11, ax12)= plt.subplots(2, 1, sharex=True)

ax11.plot(df.index, df.value, c='g')
ax12.scatter(df.index, df.active, s = 5)
ax12.xaxis([-2, -1, 0, 1, 2])
plt.tight_layout()
ax11.grid(True), ax12.grid(True)
plt.show()

enter image description here

我想让 ax11 ax12 大两倍,并在同一时间共享x轴。

我已经查看了 subplot2grid gridspec 的教程,他们都可以给出不同的子图大小,但似乎只有子图可以共享x轴或y轴,如何同时进行?有人有想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

您只需要设置gridspec_kw in your subplots call;否则,没有什么可以改变的。

  

gridspec_kw:dict,可选   带有关键字的Dict传递给GridSpec构造函数,用于创建放置子图的网格。

这是一个简单的例子:

fig, (ax1, ax2) = subplots(2, sharex=True, gridspec_kw={'height_ratios': [2, 1]})
ax1.plot([1, 2, 3]);
ax2.plot([3, 2, 4]);

enter image description here