Панды - линейчатая диаграмма - ось даты и времени - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь построить гистограмму и наложение линий, где мои данные имеют дату и время в качестве индекса.Это код:

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 голосов
/ 01 февраля 2019

После комментария @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

0 голосов
/ 01 февраля 2019

Вы можете сделать это следующим образом:

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

Также обсуждается:

Как выровнять гистограмму и линию на диаграмме двух осей у matplotlib?

Pandas DataFrame в виде столбца и линии на одном и том жедиаграмма

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...