2024-04-28 16:20:58 发布
网友
我有一个pandas数据框,用正值和负值作为条形图。我想画出正的颜色“绿色”和负的值“红色”(非常原始…哈哈)。如果>;0“绿色”否则<;0“红色”,我不知道如何通过?
data = pd.DataFrame([[-15], [10], [8], [-4.5]], index=['a', 'b', 'c', 'd'], columns=['values']) data.plot(kind='barh')
我将为观察值是否大于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.<column name>语法。
DataFrame.values
df.<column name>
如果要避免添加列,可以一步完成tomaugspugger的解决方案:
data['values'].plot(kind='barh', color=(data['values'] > 0).map({True: 'g', False: 'r'}))
我将为观察值是否大于0创建一个虚拟列。
另外,您可能需要注意不要让列名与DataFrame属性重叠。
DataFrame.values
为数据帧提供底层numpy数组。有重叠的名称会阻止您使用df.<column name>
语法。如果要避免添加列,可以一步完成tomaugspugger的解决方案:
相关问题 更多 >
编程相关推荐