Максимальное количество графиков каждого столбца данных в часах - PullRequest
1 голос
/ 07 июня 2019

У меня есть месячные данные временного ряда (5 минут), в которых каждый день является столбцом, а каждые 5 минут - строкой, поэтому форма (288,30). Я хотел бы представить все данные в виде тонких линий с низким альфа. Кроме того, на том же графике я хотел бы отобразить максимальные значения их соответствующих временных идентификаторов в виде толстых точек, чтобы проиллюстрировать, где они происходят.

Я попробовал приведенный ниже код, но не могу связать ось временного индекса с идентификатором максимальных значений.


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.randint(0,100,size=(8640, 1)),index=pd.date_range(start="20180301", freq='5T',periods=8640),columns=['A'])

df_all_days=df.groupby(df.index.time).aggregate(lambda x:list(x))
df_all_days_exp=df_all_days.apply(pd.Series)

df_all_days_exp_Max=df_all_days_exp.max(axis=0)
df_all_days_exp_MaxID=df_all_days_exp.idxmax(axis=0)
df_all_days_exp_Max_ID=pd.DataFrame([df_all_days_exp_Max,df_all_days_exp_MaxID]).T

plt.figure()
plt.plot(df_all_days_exp,linewidth=0.3,alpha=0.4)
plt.plot(df_all_days_exp_Max_ID,'.k',linewidth=1.5)

1 Ответ

0 голосов
/ 07 июня 2019

IIUC, вы можете попробовать:

hour_df = df.resample('H').max()

fig, ax = plt.subplots(figsize=(10,6))

df.plot(ax=ax, alpha=0.1)

ax2 = ax.twiny()
ax2.scatter(range(len(hour_df)), hour_df, c='r')
ax2.set_xticks([])

plt.show()

Выход: enter image description here

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