绘制具有时间索引和共享x轴上的不同周期性的pandas数据帧的线条和条形图

时间:2017-03-12 21:57:54

标签: pandas matplotlib grid time-series bar-chart

我有一个像这样的pandas数据框

import pandas as pd
import numpy as np

index = pd.date_range('1/1/2000', periods=30)
A = np.repeat(0.7, 30)
B = np.append(np.append(np.repeat(np.NaN, 9), [1]), np.append(np.append(np.repeat(np.NaN, 9), [2]), np.append(np.repeat(np.NaN, 9), [3])))
C = np.append(np.append(np.repeat(np.NaN, 14), [0.5]), np.repeat(np.NaN, 15))
df = pd.DataFrame(dict(A=A, B=B, C=C), index=index)

In[1]: df

Out[1]: 
              A   B    C
2000-01-01  0.7 NaN  NaN
2000-01-02  0.7 NaN  NaN
2000-01-03  0.7 NaN  NaN
2000-01-04  0.7 NaN  NaN
2000-01-05  0.7 NaN  NaN
2000-01-06  0.7 NaN  NaN
2000-01-07  0.7 NaN  NaN
2000-01-08  0.7 NaN  NaN
2000-01-09  0.7 NaN  NaN
2000-01-10  0.7   1  NaN
2000-01-11  0.7 NaN  NaN
2000-01-12  0.7 NaN  NaN
2000-01-13  0.7 NaN  NaN
2000-01-14  0.7 NaN  NaN
2000-01-15  0.7 NaN  0.5
2000-01-16  0.7 NaN  NaN
2000-01-17  0.7 NaN  NaN
2000-01-18  0.7 NaN  NaN
2000-01-19  0.7 NaN  NaN
2000-01-20  0.7   2  NaN
2000-01-21  0.7 NaN  NaN
2000-01-22  0.7 NaN  NaN
2000-01-23  0.7 NaN  NaN
2000-01-24  0.7 NaN  NaN
2000-01-25  0.7 NaN  NaN
2000-01-26  0.7 NaN  NaN
2000-01-27  0.7 NaN  NaN
2000-01-28  0.7 NaN  NaN
2000-01-29  0.7 NaN  NaN
2000-01-30  0.7   3  NaN

我想要实现的是将列“A”和“B”绘制为一个图中的线,将“B”列绘制为条形图,并在第一个下方的子图中注释值(即“0.5”) 。 Everythin必须与数据帧的索引对齐。 (在R中我会使用gridExtra来安排所有内容。)是否有一种巧妙的pythonic方法可以快速排列所有内容并在情节背景中有一个漂亮的网格?

以下代码似乎很适合以

开头
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(12, 4))
df[["A", "B"]].plot(ax=axes[0])
df["B"].plot(kind="bar", ax=axes[1]);

我得到以下情节:

enter image description here

这不是我正在寻找的东西。我想要调整的东西是以文本形式写的。

1 个答案:

答案 0 :(得分:0)

从这开始:

file_a

并根据需要调整间距和标签