从pandas数据框绘制线条图和条形图,在共享x轴上具有时间索引和不同周期

从pandas数据框绘制线条图和条形图,在共享x轴上具有时间索引和不同周期,pandas,matplotlib,grid,time-series,bar-chart,Pandas,Matplotlib,Grid,Time Series,Bar Chart,我有一个熊猫数据框,看起来像这样 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.N

我有一个熊猫数据框,看起来像这样

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”)。所有内容都必须与数据帧的索引对齐。(在R中,我会使用gridExtra来安排一切。)有没有一种巧妙的python方式来安排一切,并在情节的背景中有一个漂亮的网格

下面的代码似乎很适合开始

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]);
我得到下面的图:

这不是我要找的。我正在寻求调整的内容是以文本形式编写的

从以下内容开始:

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]);
并根据需要调整间距和标签

从以下内容开始:

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]);

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

感谢@PutonSpectales为您的帖子提供帮助。如果你能添加更多的细节,比如我上面从你的例子中发布的情节(再次感谢!)看起来更符合我的要求,我将非常高兴。谢谢@putonspectales的帖子。如果你能添加更多的细节,比如我上面从你的例子中发布的情节(再次感谢!),我会非常高兴的。看起来更符合我的要求?