Pyplot - 如果数据小于零,改变线的颜色?

时间:2015-07-10 16:08:13

标签: python matplotlib

我试图弄清楚pyplot中是否有任何内容可以根据数据是负数还是正数来改变我的行的颜色。例如,如果它是负的,我希望该线为红色,如果它是正的,我希望该线为不同的颜色,比如黑色。

图书馆里有什么东西让我这样做吗?我想到的一件事是将数据分成两组正面和负面并分别绘制它们,但我想知道是否有更好的方法。

3 个答案:

答案 0 :(得分:11)

我会制作两个数据集并设置正确的蒙版。 通过使用这种方法,我不会在不同的正面之间划线 部分。

<section id="headline" style="background-color:#128ABC;"> 

Example

答案 1 :(得分:5)

您可以使用where类似语法(如果您习惯使用像Pandas这样的东西)有条件地在轴对象中绘制数据。

ax.plot(x[f(x)>=0], f(x)[f(x)>=0], 'g')
ax.plot(x[f(x)<0],  f(x)[f(x)<0],  'r')

从技术上讲,它将你的数据拆分并绘制成两组,但它相当紧凑和漂亮。

答案 2 :(得分:1)

如果使用散点图,则可以为每个点指定不同的颜色:

x = range(1)
x = range(10)
y = [i - 5 for i in x]
c = [i < 0 for i in y]
plt.scatter(x, y, c=c, s=80)

enter image description here