我正在尝试使用时间戳vs价格的matplotlib创建一个图,并在同一图上,如果“ B / S”列中的值为B或S,则覆盖一个条件标记(蓝色或红色)。值为“ NaN”。绘制时间和价格很简单,但我似乎无法弄清楚如何放置这些条件标记。我已经尝试过在该网站和其他网站上寻找解决方案,但没有找到与之非常接近的解决方案。
df =
timestamp price B/S
0 2018-04-24 06:01:02.600 1 NaN
1 2018-04-24 06:02:02.600 1 NaN
2 2018-04-24 06:03:02.600 2 NaN
3 2018-04-24 06:04:02.600 4 B
4 2018-04-24 06:05:02.775 2 NaN
5 2018-04-24 06:06:02.825 3 NaN
6 2018-04-24 06:07:03.050 5 NaN
7 2018-04-24 06:08:03.125 6 S
8 2018-04-24 06:09:03.275 7 NaN
9 2018-04-24 06:10:03.300 4 NaN
10 2018-04-24 06:11:03.300 3 NaN
11 2018-04-24 06:12:03.950 5 B
12 2018-04-24 06:15:04.050 5 NaN
预先感谢您的帮助。
答案 0 :(得分:0)
我不确定您是否可以将它作为一体。但是下面的代码应该可以解决问题。
markers = {"B": {"marker": "o", "color": "b"}, "S": {"marker": "v", "color": "r"}}
for marker in markers:
plt.scatter(df[df['B/S'] == marker].timestamp,
df[df['B/S'] == marker].price,
marker=markers[marker]['marker'],
color=markers[marker]['color'])
取决于B / S中数据的复杂性。如果有成百上千个不同的值,那么您可能需要一些生成器用于标记+颜色组合。但我想基于标头只有两个值。