我有一个 Dataframe 如下:
values weekend num_festive kind day_name
date
2018-01-01 236 0.0 1.0 1.0 Monday
2018-01-02 258 0.0 0.0 0.0 Tuesday
2018-01-03 235 0.0 0.0 0.0 Wednesday
2018-01-04 219 0.0 0.0 0.0 Thursday
2018-01-05 197 0.0 0.0 0.0 Friday
... ... ... ... ... ...
2019-12-27 234 0.0 0.0 0.0 Friday
2019-12-28 260 1.0 0.0 0.0 Saturday
2019-12-29 226 1.0 0.0 0.0 Sunday
2019-12-30 216 0.0 0.0 0.0 Monday
2019-12-31 189 0.0 0.0 0.0 Tuesday
我想用不同的颜色画出时间序列,这取决于这一天是否是周末,用不同的颜色画一条线,就像这条:
我还希望能够将它绘制在另一个 Dataframe (格式完全相同)的旁边,以便比较两个时间序列。我编写了以下代码,它没有在坐标轴上绘制任何内容:
fig, ax = plt.subplots(1, 2, squeeze=True)
ax18, ax19 = ax[0], ax[1]
colors = {"weekend": "powderblue", "md": "black", "gu": "orange"}
for idx, val in md18.iterrows():
if val["weekend"]:
ax18.plot(idx, val["value"], color=colors["weekend"]
)
else:
ax18.plot(idx, val["value"], color=colors["md"])
colors = {"weekend": "powderblue", "md": "black", "gu": "orange"}
for idx, val in cm18.iterrows():
if val["weekend"]:
ax18.plot(
idx, val["value"], color=colors["weekend"]
)
else:
ax18.plot(idx, val["value"], color=colors["gu"])
我也尝试过使用色调参数的海运线图,但它只处理周末值或不像不同时间序列的值,并沿着同一个轴绘制它们。考虑到我希望能够用庆祝活动复制它,庆祝活动的值比0或1多,因为可以是国家、地区或地方的?提前感谢!
1条答案
按热度按时间2hh7jdfx1#
希望我能理解这个问题:)
关于您的代码:
这段代码不起作用,因为你只把一个df(md18)标绘到一个轴(ax18)上,你需要把两个df标绘到两个轴上,才能得到想要的输出。
此代码将:将生成两个单独的图,每个图对应一个 Dataframe ,并且将分别根据"md"和"gu"值对线进行着色。
其他解决方案:这将产生一个两个df在同一个轴上的单一图,并将根据周末值给线着色。