Python怎么绘制百分比堆叠柱状图并填充图案
发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章主要介绍"Python怎么绘制百分比堆叠柱状图并填充图案",在日常操作中,相信很多人在Python怎么绘制百分比堆叠柱状图并填充图案问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2024年11月26日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安全错误
数据库的锁怎样保障安全
乌海精益管理软件开发
计算机互联网网络技术学什么
网络安全法 凤凰
软件开发结束总结报告
什么是服务器远程连接
Pg数据库连接数据库的语句
服务器存在的安全威胁
服务器可以访问域名的用户吗
淄博博山跑腿软件开发app
sql2016服务器名称是什么
东方海外珠海软件开发
中专和大学的计算机网络技术
git 服务器同步
惠普服务器是两根电源线吗
日本上市企业数据库
flask 接收数据库
数据库索引段
阿克苏软件开发销售价格
郑州软件开发在哪个区
联想售后服务器
如何查看dns服务器
网络安全可信验证的方法
张微孟秦网络技术
网络安全者使用信息的原则
数据库如何找到所有人名
诊断仪软件开发
情绪周期数据库
锐思数据库查数据的步骤
微博服务器供应
大一网络技术结课论文怎么写