熊猫-条形图和折线图-日期时间轴

时间:2019-02-01 11:32:43

标签: python python-3.x pandas matplotlib

我正在尝试绘制条形图和折线图,其中我的数据以日期时间为索引。 这是代码:

import pandas as pd
import numpy as np
dates = pd.date_range('2019-01-01', '2019-01-31', freq='B')
df = pd.DataFrame(index=dates, 
              columns=['a', 'b', 'c'],
              data = np.random.randn(len(dates), 3))

fig, ax = plt.subplots()
df.plot.bar(ax=ax)
df.sum(axis=1).plot(ax=ax)

不幸的是,它仅最终显示了所请求的最后一个图表。 enter image description here

我正在使用

python 3.6.8
pandas 0.24.0
matplotlib 3.0.2

问候

2 个答案:

答案 0 :(得分:2)

在@ImportanceOfBeingErnest后面的评论中,我认为回答此问题的最佳方法是使用use_index=False kwarg。 对于数据格式等,这是另一个问题,取决于要实现的目标。

import pandas as pd
import numpy as np
dates = pd.date_range('2019-01-01', '2019-01-31', freq='B')
df = pd.DataFrame(index=dates,
                  columns=['a', 'b', 'c'],
                  data = np.random.randn(len(dates), 3))

fig, ax = plt.subplots()
df.plot.bar(ax=ax)
df.sum(axis=1).plot(ax=ax, use_index=False)

enter image description here

答案 1 :(得分:-2)

您可以这样做:

fig = plt.figure()
ax = df.plot.bar()
ax2 = ax.twinx()
ax2.plot(df.sum(axis=1).values)
plt.show()

df.plot.bar返回可用于下一个绘图的轴:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html#pandas-dataframe-plot

也讨论过:

How to align the bar and line in matplotlib two y-axes chart?

Plot Pandas DataFrame as Bar and Line on the same one chart

enter image description here