首页 > 解决方案 > 如果值小于零并填充空白,则更改条形图的颜色

问题描述

我创建了一个数据框:

df.tail(20)
       Speed
130 -0.000272
131 -0.000219
132 -0.000178
133 -0.000234
134 -0.000261
135 -0.000281
136 -0.000244
137 -0.000255
138 -0.000290
139 -0.000210
140 -0.000216
141 -0.000209
142 -0.000139
143 -0.000060
144  0.000007
145  0.000043
146  0.000068
147  0.000093
148 -0.000025
149 -0.000005

我正在使用条形图绘制条形图:

ind = np.arange(len(df))
ax.bar(ind, df['Speed'], width=0.5, color="r")

我想要做的是,如果值小于零,则将条形颜色更改为红色,如果值大于零,则将其更改为绿色。并显示平滑图形而不是带有空白的条形。

谢谢

标签: pythonmatplotlib

解决方案


让我们尝试使用颜色参数作为列表。

fig,ax = plt.subplots()
ind = np.arange(len(df))
colormat=np.where(df['Speed']>0, 'g','r')
ax.bar(ind, df['Speed'], width=0.5, color=colormat)

输出:

在此处输入图像描述


推荐阅读