pyplot给柱形图目标位置填充颜色的方法

随便定义些数字,仅用到【大小】这一列。

目标:完成一个柱形图,并给其中的 “目标bar” 上跟其他bar不同的颜色。

在excel中简单解决的事情,用python难住了我许久,网上也没找到对应的解答,就摸索了下,用列表解析式完成颜色定义。

情况1:给【大小】列中值小于100的bar填充不同颜色

#先用字典定义下对应值的颜色,当取 color[1] 时结果为对应红色,或者下面对应处也可以直接填‘red’
color={0:'blue',1:'red',2:'green'}
#重点在列表解析式上,for循环遍历【大小】列的每一行,然后对单次的值进行跟100的对比,如果符合,则输出color[2]的结果,此处也可以直接填‘green’
plt.bar(range(len(data['大小'])),data['大小'], color=[color[2] if i<100 else color[1] for i in data['大小']], alpha=0.6) plt.show()

结果:

情况2:给【大小】列中最大值的bar ,和最小值的bar填充不同的颜色,方法:多用了一层条件

plt.bar(range(len(data['大小'])),data['大小'],
        color=[color[2] if i==max(data['大小']) else(color[1] if i==min(data['大小']) else color[0]) for i in data['大小']],
        alpha=0.6)
plt.show()

#多条件列表解析式 a=[结果1 if 条件1 else(结果2 if 条件2 结果3) for i in data]

结果: 

 

posted @ 2018-03-02 21:49  大秦大秦  阅读(1353)  评论(0)    收藏  举报