千家信息网

Python怎么实现渐变色的水平堆叠图

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Python怎么实现渐变色的水平堆叠图",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python怎么实现渐变色的水平堆叠图"吧!关
千家信息网最后更新 2026年11月02日Python怎么实现渐变色的水平堆叠图

这篇文章主要讲解了"Python怎么实现渐变色的水平堆叠图",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python怎么实现渐变色的水平堆叠图"吧!

关键词:python、matplotlib、barh、堆叠
起源:做数据处理时候需要制造一张如下的图片:

示例图

恰逢最近在学Python,然后就想试一下用python去实现,因为稍微接触过matplotlib这个库,然后就想着用它去实现

首先通过查资料,才知道这种图的名字叫做"水平堆叠条状图",然后使用Matplotlib.plot.barh()就可以实现水平堆叠的效果;

水平或者垂直堆叠的效果,网上有挺多教程的了,这里就不再进行描述,主要是为了记录一下怎么去实现渐变色

一开始找资料,并没有找到这种堆叠图的渐变色怎么做出来
如果有大哥找到了简便方法,还请告知一下!然后就尝试着自己去写一些语句去实现;现在就将研究的流程做个记录

首先是绘图函数的认识

barh函数的参数很多,但是我们只关注几个参数:
X表示是上图中的 E1 E2 E3这样的坐标(可以理解为刻度值吧)
width表示的是当前堆叠部分的长度,这个值很关键!
left值是当前堆叠部分的起始点,这个值也很关键
color表示的是当前堆叠部分的颜色,遵循RGB顺序,但是它范围(0——0.1),即我们需将实际(R,G,B)值除以255再传入
alpha表示的是当前堆叠部分的颜色透明度,即和上面的color参数一起构成了(RGBA)
label表示的是当前堆叠部分的图形样例,即上图中的"label=二级指标1"那样的图例;该参数为空的时候不创建图例,如果不为空就会根据传入的字符串创建图例,默认是不支持中文的,如果要用中文,需要加以下这两句话在import matplotlib之后

#用来正常显示中文plt.rcParams['font.sans-serif']=['SimHei','Times New Roman'] plt.rcParams['axes.unicode_minus']=False`

然后讲讲怎么思考的

X的就是数轴上的显示的刻度值(你也可以给他重命名);
width表示的是堆叠(填充)长度,left是本次填充起始点,那么我们将这两个参数结合以下,就可以将本该一次填充完的长度,分成几次填充,再分别给这几次填充使用临近的RGB值,就会呈现一种渐变的效果

# 一次填充完成import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif']=['SimHei','Times New Roman'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False    # 网上找到的渐变色的RGB配色方案Color1 = np.array([131, 175, 155])Color2 = np.array([200, 200, 169])Color3 = np.array([249, 205, 173])x = ["E1"]Y1 = np.array([0.1])Y2 = np.array([0.3])plt.barh(x, Y1, align="center", color=Color1 / 255, alpha=1, label="ONE1")plt.barh(x, Y2, left=Y1, color=Color2 / 255, alpha=1, label="ONE2")plt.legend()plt.show()

上述代码运行以后的效果是这样的

然后基于我们上述的分析,我们将对"ONE2"色块运用参数:X,width,left,color进行分次填充实现渐变效果:

首先我们定义一个变量divid,这个变量将会决定了你分多少次填充

#填充次数,值越大渐变效果越好,但是计算量也会相应的增大divid=20

其次我们将我们原来的填充量、颜色渐变差值分别分别除以divid

Y2_rate=Y2/divid#用下一个颜色减去当前色快的颜色;这也将会解释了我后来的完整代码里,将会严格要求Color个数大于 Y 的个数 #实际上Color和Y大多数情况下是行向量,但仍然用"个数"来表述,为了更方便理解Color_rate=(Color3-Color2)/divid

然后我们将会将这两个值在barh函数里进行使用

for i in range(divid):    if i==int( divid /2 ): #这里是去原先整个色块的中心RGB作为图例色        plt.barh(x,Y_rate,left=Y1+Y_rate*i,color=(Color1+i*Color_rate) / 255, alpha=1.0,label='ONE2')    else:        plt.barh(x,Y_rate,left=Y1+Y_rate*i,color=(Color1+i*Color_rate) / 255, alpha=1.0)

运行之后的效果为

而为了说明divid在这里影响渐变效果我们将分辨用几个递增的divid值来进行演示
divid=2时候,出现了明显的分界线

divid=8时候,分界线被淡化了,但还是隐约可见

divid=50的时候,几乎看不到分界线了

感谢各位的阅读,以上就是"Python怎么实现渐变色的水平堆叠图"的内容了,经过本文的学习后,相信大家对Python怎么实现渐变色的水平堆叠图这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

效果 水平 变色 参数 时候 部分 颜色 图例 中文 个数 关键 函数 分界线 长度 学习 上图 两个 代码 内容 刻度 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 华服互联网科技怎么样 互联网科技工作委员会 礼当家互联网科技 科技互联网创业计划书 互联网 科技馆 崇明区互联网教育科技诚信经营 成都互联网科技公司工作好不好 开一家科技互联网公司需要多少钱 天津腾达互联网科技有限公司 互联网科技创新的路径 朱啸虎曾投资哪些互联网科技企业 小米互联网科技园入驻 北京市互联网新科技 富国互联网科技002692 互联网科技包装股份有限公司上市 新氧科技和美国互联网有关系吗 互联网时代高科技布局 青岛互联网科技园 瑞安市蟠桃会互联网科技有限公司 科技互联网 互联网科技工作委员会 重生之互联网科技帝国 麻工互联网科技 中国 科技 互联网 睿民互联网科技 湖北码尼互联网科技有限公司电话 四川互联网展示科技馆设计 半导体是互联网高科技吗 广州燕处互联网科技有限公司
0