从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的帖子。如果你能添加更多的细节,比如我上面从你的例子中发布的情节(再次感谢!),我会非常高兴的。看起来更符合我的要求?