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
相关产品推荐
相关产品推荐

