【发布时间】:2020-10-07 22:12:30
【问题描述】:
我有一个df,例如:
Date Sig
2020-06-16 09:00:00 1
2020-06-16 13:00:00 0
2020-06-16 17:00:00 -1
2020-06-16 21:00:00 -1
2020-06-17 01:00:00 0
2020-06-17 05:00:00 1
2020-06-17 09:00:00 1
2020-06-17 13:00:00 0
2020-06-17 17:00:00 0
2020-06-17 21:00:00 -1
我要做的是在 Matplotlib 中做一个简单的散点图,索引为 X 轴,Sig 列在 Y 上,但只显示 1 和 -1,其中 1 为蓝色,-1 为红色的。但如果有意义的话,我不希望从散点图中省略 0 行。
我显然可以只做散点图,因此 'plt.scatter(x=df.index, y=df['Sig'])' 但是这当然会在Sig 中绘制所有数字并且没有颜色代码他们。
任何帮助将不胜感激。干杯
【问题讨论】:
-
在参数中你可以使用
facecolor = ["blue" if s>0 else "red" for s in df["Sig"]]。如果您需要,我们可以在数据正好为 0 时为第三种颜色添加额外的 if/else。 -
即
facecolor = [{-1: "red", 0: "black", 1: "blue"}[sign] for sign in df["Sig"]]。
标签: python pandas matplotlib