Pandas绘制柱状直方图时如何按key值为柱子设置不同颜色
实现方法
你只需要在调用plot()时传入自定义的color参数即可,这个参数接收和柱子数量一一对应的颜色序列,会按行顺序给每个柱子匹配对应颜色。
完整实现代码如下:
import pandas as pd import matplotlib.pyplot as plt # 构造示例DataFrame df = pd.DataFrame([[1,100],[-1,50],[1,140],[1,300],[-1,400]],columns=['key','size']) # 根据key列生成对应颜色列表:key=1为绿色,key=-1为红色 bar_colors = ['green' if k == 1 else 'red' for k in df['key']] # 绘制柱状图,传入颜色参数 ax = df['size'].plot(kind='bar', color=bar_colors) # 可选绘图优化 ax.set_xlabel('行索引') ax.set_ylabel('size取值') plt.show()
关键说明
- 列表推导式会逐行遍历
df['key']的值,生成和DataFrame行数等长的颜色数组,传入plot后自动按行索引顺序匹配柱子颜色:样例数据里索引1、4对应key=-1显示红色,索引0、2、3对应key=1显示绿色,完全匹配需求。 - 如果需要调整色调,直接把列表中的
'green'/'red'替换为目标色值即可,支持matplotlib认可的命名色、十六进制色、RGB元组等格式。
内容的提问来源于stack exchange,提问作者user2874909
相关产品推荐
相关产品推荐

