Python怎么绘制百分比堆叠柱状图并填充图案
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍"Python怎么绘制百分比堆叠柱状图并填充图案",在日常操作中,相信很多人在Python怎么绘制百分比堆叠柱状图并填充图案问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
软件开发 中英文 合同
盐城移动网络技术专家王朝阳
青岛头条网络技术
电视台信息网络安全制度
上海天戏网络技术
火车票 服务器
网络安全法特性
百里守约怎么打到服务器
谁能把国网服务器集采搞清楚
银行软件开发工作在哪里找
数据库中如何实现实体完整性
关于网络安全的讲座英语作文
以网络安全为话题作文800字
网络安全管理工作年鉴
网络安全宣传书法作品
网络安全之qq群
搭建unix服务器
龙腾中东网络技术有限公司评论
全返系统软件开发公司
山东出口外贸软件开发
厢美萱网络技术咨询
南京网络安全审计系统咨询辅导
工厂服务器是什么
数据库删除表的行
网络技术组件有哪些
甩手工具箱服务器不可用
制定镇政府网络安全工作方案
余姚手机游戏软件开发找哪家
mc服务器生存
兼职软件开发团队加盟