柱状图:如何选择正值和负值的颜色
4 个回答
4
根据@Max Ghenis的回答(虽然对我来说不太管用,但看起来只是包裹里有个小改动):
tseries = data['values']
color = (tseries > 0).apply(lambda x: 'g' if x else 'r')
splot = tseries.plot.barh(color=color)
结果是:
.. 这就是你期待看到的效果。
40
我会创建一个虚拟的列,用来表示观察值是否大于0。
In [39]: data['positive'] = data['values'] > 0
In [40]: data
Out[40]:
values positive
a -15.0 False
b 10.0 True
c 8.0 True
d -4.5 False
[4 rows x 2 columns]
In [41]: data['values'].plot(kind='barh',
color=data.positive.map({True: 'g', False: 'r'}))
另外,你需要小心不要让列名和数据框(DataFrame)里的属性重名。DataFrame.values
可以获取数据框的底层numpy数组。如果列名和属性重名,就不能使用df.<列名>
这种写法了。