【发布时间】:2018-07-28 21:18:24
【问题描述】:
我正在尝试从这样的数据框中制作一组折线图
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame({ 'CITY' : np.random.choice(['PHOENIX','ATLANTA','CHICAGO', 'MIAMI', 'DENVER'], 10000),
'DAY': np.random.choice(['Monday','Tuesday','Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], 10000),
'TIME_BIN': np.random.randint(1, 86400, size=10000),
'COUNT': np.random.randint(1, 700, size=10000)})
df['TIME_BIN'] = pd.to_datetime(df['TIME_BIN'], unit='s').dt.round('10min').dt.strftime('%H:%M:%S')
print(df)
CITY COUNT DAY TIME_BIN
0 ATLANTA 270 Wednesday 10:50:00
1 CHICAGO 375 Wednesday 12:20:00
2 MIAMI 490 Thursday 11:30:00
3 MIAMI 571 Sunday 23:30:00
4 DENVER 379 Saturday 07:30:00
... ... ... ... ...
9995 ATLANTA 107 Saturday 21:10:00
9996 DENVER 127 Tuesday 15:00:00
9997 DENVER 330 Friday 06:20:00
9998 PHOENIX 379 Saturday 19:50:00
9999 CHICAGO 628 Saturday 01:30:00
这就是我现在拥有的:
piv = df.pivot(columns="DAY").plot(x='TIME_BIN', kind="Line", subplots=True)
plt.show()
但是 x 轴格式混乱了,我需要每个城市都有自己的线。我该如何解决?我在想我需要遍历一周中的每一天,而不是尝试在一行中创建一个数组。我试过seaborn没有运气。总而言之,这就是我想要实现的目标:
- x 轴上的 TIME_BIN
- Y 轴计数
- 每个城市都有不同的颜色线
- 每天一张图表
【问题讨论】:
-
在我看来,在 for 循环中执行此操作并将每个框放在单独的子图中会很有帮助 - 然后您可以在第一次运行时轻松修复轴格式(只需正确格式化每个在创建子图时使用
sharex=True)。
标签: python pandas matplotlib time-series seaborn