【发布时间】:2020-11-10 16:37:42
【问题描述】:
使用如下所示的松散结构的数据框。
ID Price ColorID
Datetime
2020-10-30 07:21:00.074000+00:00 131310 13.13 0
2020-10-30 07:21:00.485128+00:00 5250455 13.02 1
2020-10-30 07:21:00.485000+00:00 130210 13.02 0
2020-10-30 07:21:00.486000+00:00 130110 13.01 0
2020-10-30 07:21:00.486000+00:00 130310 13.03 0
2020-10-30 07:21:00.488000+00:00 130310 13.03 0
我正在尝试绘制每个 ID 的价格进度,其中 colorID 定义了要绘制的颜色。
如果我不使用任何颜色,下面的命令将为我提供我正在寻找的情节,但使用的是内置配色方案,而不是我需要的..
test.groupby("ID").Price.plot(drawstyle="steps-post", marker="d", linewidth=2)
相同的 ID 将保留相同的 colorID,因此首先尝试先创建一个分组对象,然后参考该分组对象以尝试获取配色方案。
grouped = test.groupby("ID")
colors = {0: "b", 1: "r"}
grouped.Price.plot(drawstyle="steps-post", marker="d", linewidth=2, c=colors[grouped.ColorID.last()])
遇到错误:
TypeError: 'Series' 对象是可变的,因此它们不能被散列
而试图通过直接申请
grouped.Price.plot(drawstyle="steps-post", marker="d", linewidth=2,c=np.where(grouped.ColorID==0,"b","r"))
将尝试将颜色数组读取为 RGB 通道,从而导致
ValueError:无效的 RGBA 参数:array('r', dtype='
是否有一种我公然遗漏的直接方法,或者我是否被委托制作多标签组或在 for 循环中逐个绘制,在循环外指定绘图句柄?
【问题讨论】:
标签: python pandas matplotlib