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

Matplotlib绘制柱状图时如何为正负值分别设置柱形颜色?

你只需要先根据y1的数值正负生成对应的颜色列表,再将列表传入bar方法的color参数即可,修改后的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt

x = [1,2,3,4,5,6]
y2 = [10000,11682,20842,12879,4576,7845]
y1 = [-1456,-10120,-2118,10003,-2004,1644]

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax2.plot(x, y2, color='k')
ax2.set_ylabel('Y2 data', color='k')
# 生成对应颜色列表:正值绿色,负值红色
colors = ['g' if value > 0 else 'r' for value in y1]
ax1.bar(x, y1, color=colors)
plt.show()

实现原理:matplotlib的柱状图绘制方法支持传入与数据长度一致的颜色序列,每个位置的柱子会对应使用序列同位置的颜色配置。上述代码通过列表推导式遍历y1的所有数值,为正值匹配经典绿色、负值匹配红色,自动生成对应长度的颜色列表传入参数即可实现需求。如果需要对等于0的数值单独配置颜色,调整推导式的判断逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:27:04