Matplotlib绘制柱状图无法正确设置极值柱子的对应显示颜色
问题根因
- 颜色列表生成逻辑错误:你遍历全量数据集
data['avg_rev']生成的col_val长度和原始数据行数一致,但实际只需要绘制2根柱子,matplotlib会默认取颜色列表前2位匹配柱子,而原始数据前2行都不是最高收入的广告组,取到的都是red,最终两根柱子全显示为红色。 - 拆分两次调用
plt.bar分别绘制最高、最低收入柱的写法冗余,容易出现颜色匹配错位。
修正方案
删除原代码中循环生成col_val、两次调用plt.bar的片段,替换为以下代码:
# 按绘图顺序整理坐标轴数据和对应颜色 x_labels = [t0[0][0], t1[0][0]] rev_values = [t0[0][-1], t1[0][-1]] # 顺序匹配:最高收入柱为绿色,最低收入柱为红色 colors = ['green', 'red'] plt.bar(x_labels, rev_values, width=.5, color=colors)
替换后运行即可达到预期效果:最高平均收入对应的柱子为绿色,最低平均收入对应的柱子为红色。
内容的提问来源于stack exchange,提问作者Pythonic User
相关产品推荐
相关产品推荐

