You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7中如何根据direction1值自动设置柱状图颜色(005时设为绿色)

实现Python 2.7中柱状图的自动选色功能

嘿,我看了你的代码,问题出在循环里的判断逻辑上,咱们一步步修正它:

原脚本的问题点

  1. 循环变量x是索引(0到7),不是direction1里的元素,你用x in direction1==005完全搞混了索引和元素的关系;
  2. direction1里的"005"是字符串,你写成了数字005,而且这个判断的语法本身就不对。

修正后的完整代码

import numpy as np
import matplotlib.pyplot as plt

# 你的原始数据集
direction1=['200','250','180','200','300','270','005','080']
time1=['0000','0030','0100','0130','0200','0230','0300','0300']

ind = np.arange(len(time1))
width = 0.50

# 注意:plt.bar需要数值类型的高度,所以先把字符串转成整数
rects1 = plt.bar(ind, [int(d) for d in direction1], width, color='r')

# 用enumerate同时获取索引和对应的数据值
for idx, val in enumerate(direction1):
    # 严格匹配字符串"005"
    if val == "005":
        rects1[idx].set_color('g')

# 添加x轴标签,让图表更清晰
plt.xticks(ind, time1)
# 显示图表
plt.show()

更简洁的写法(直接生成颜色列表)

如果你不想循环修改柱子颜色,可以在创建柱状图的时候就指定好所有颜色,代码更清爽:

import numpy as np
import matplotlib.pyplot as plt

direction1=['200','250','180','200','300','270','005','080']
time1=['0000','0030','0100','0130','0200','0230','0300','0300']

ind = np.arange(len(time1))
width = 0.50

# 生成颜色列表:遇到"005"用绿色,其余用红色
colors = ['g' if d == '005' else 'r' for d in direction1]
# 直接传入颜色列表创建柱状图
rects1 = plt.bar(ind, [int(d) for d in direction1], width, color=colors)

plt.xticks(ind, time1)
plt.show()

关键注意事项

  • 一定要注意direction1里的元素是字符串类型,判断时要和字符串"005"比较,不能写成数字005;
  • plt.bar的高度参数必须是数值类型,所以要把字符串转成整数(或者浮点数),不然会抛出类型错误。

内容的提问来源于stack exchange,提问作者Azam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:22:20