Python怎么绘制百分比堆叠柱状图并填充图案
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍"Python怎么绘制百分比堆叠柱状图并填充图案",在日常操作中,相信很多人在Python怎么绘制百分比堆叠柱状图并填充图案问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2025年11月12日Python怎么绘制百分比堆叠柱状图并填充图案
这篇文章主要介绍"Python怎么绘制百分比堆叠柱状图并填充图案",在日常操作中,相信很多人在Python怎么绘制百分比堆叠柱状图并填充图案问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python怎么绘制百分比堆叠柱状图并填充图案"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
通过Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案。主要原因是有些论文打印出是黑白色的,不同类别之间区分不明显,所以做了这种方案。
存在一个问题:不知道如何根据填充图案设置图例,本文中可谓"曲线救国",将图例的颜色块设置为了白色,所以如果有人知道如何根据hatching设置图例可以讨论,原始的legend方法中是未提供该类参数的。
图形如下:

代码如下
import numpy as npimport matplotlib.pyplot as pltimport matplotlib.patches as mpatchesimport matplotlib.ticker as mtickfrom matplotlib.ticker import PercentFormatter#设置填充的图案marks = ['o','/','*','..','\\'] labels = [i for i in range(2010, 2021)]#数据first = [42.85, 41.15,39.41,35.35,35.53,30.45,29.81,31.85,32.41,30.42,31.49]second = [23.20,26.40,27.77,29.02,32.30,35.40,36.42,35.95,35.45,34.00,31.93]third = [14.08,12.99,12.51,11.54,11.70,12.27,12.69,11.81,10.63,9.98,9.95]fourth = [16.14,16.17,17.34,21.53,17.66,19.36,18.40,17.83,19.15,23.09,24.10]others = [3.73,3.28,2.98,2.57,2.81,2.53,2.67,2.57,2.36,2.51,2.54]data = [first, second, third, fourth, others]x = range(len(labels))width = 0.35# 将bottom_y元素都初始化为0bottom_y = np.zeros(len(labels))data = np.array(data)# 为计算百分比做准备sums = np.sum(data, axis=0)j = 0figsize = 8,6figure, ax = plt.subplots(figsize=figsize)plt.rcParams['font.sans-serif'] = ['SimHei']for i in data: y = i / sums plt.bar(x, y, width, hatch=np.array(marks)[j], bottom=bottom_y, color='white', edgecolor='black') bottom_y = y + bottom_y plt.xticks(x, labels) #plt.yticks(range(1), ylabel) legend_labels = ['o legend1', '/ legend2', '* legend3', '· legend4',r'\ legend5'] color = ['white', 'white', 'white', 'white', 'white'] patches = [mpatches.Patch(color=color[h],label="{:s}".format(legend_labels[h])) for h in range(len(legend_labels))] ax = plt.gca() box = ax.get_position() #纵轴设置为百分比 plt.gca().yaxis.set_major_formatter(PercentFormatter(1)) ax.legend(handles=patches,ncol=1, bbox_to_anchor=(1, 1), borderaxespad = 0.) # 生成legend figure.subplots_adjust(right=0.7) j+=1#绘制平行于x轴的虚线for i in range(1, 11, 1): plt.axhline(y=i/10, linestyle='dashed', color='black', linewidth=0.5)labels = ax.get_xticklabels() + ax.get_yticklabels()#设置数字label字体[label.set_fontname('Times New Roman') for label in labels]plt.savefig(r'filename.svg', format='svg')plt.show()到此,关于"Python怎么绘制百分比堆叠柱状图并填充图案"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
图案
百分
百分比
柱状
学习
图例
不同
方法
更多
白色
类别
问题
帮助
原始
实用
明显
接下来
之间
代码
元素
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华三网络安全设备中标公告
公安局开展网络安全宣传周
自动生成数据库测试数据库
深圳天成网络技术开发公司
完全卸载mysql数据库
软件开发部年终工作总结
g国家网络安全宣传周日期
分布式数据库 同步
如何在c语言中插入一个数据库
奔特力软件开发公司
震坤行网络技术和工业超市
国铁网络安全分几级
蓝盾股份在网络安全行业的地位
计算机网络技术专业好吗
网络安全 工控机平台
mc9.1怎么设置加工数据库
游戏与服务器连接已断开
数据库查询开卡信息
app软件开发硬件环境
网络技术相关的专科专业
浙江嘉兴服务器租赁高档虚拟主机
列举相关软件开发过程模型
网易服务器bug大全集
oracle 替代数据库
线上数据库会使用安全模式吗
数据库表名重复吗
怎么将数据库中的表导入到u盘里
服务器名称
目前网络安全划分有哪些基本方法
计算机网络技术应用专业大学