Python中带图例的条形图的具体画法和参数调节

首先如上图所示的图是如何画出来的呢,它主要是分三个部分, 首先第一部分是将四个单独的图按照横轴的方式叠加起来,第二部分是如何调节右上角图例的位置和大小,第三部分是标注出整个横轴和竖轴的坐标并调节字体的大小。

一.将四个图进行叠加在同一条横轴之上

#导入必要的包,画图所必需的matplotlib.pyplot
import pandas as pd
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 4, figsize=(14, 5))
#将整个图划分为一行四列,呈横轴排列,共四个图,figsize是划定整个图的大小比例
data0 = pd.read_excel('data.xlsx')
data2 = data0.iloc[3,1:7]
labels_2 = data0.iloc[1,1:7]
colors = ['red', 'blue', 'green', 'orange', 'purple','pink'] 

导入所需的数据,可以将自己每一个柱子所要使用的颜色提前规定好,如上所示。

axs[1].bar(labels_2, data2, color=colors)
axs[1].set_title('E2')
# 不显示横坐标  
axs[1].set_xticklabels([])
# Set y-axis limits
axs[1].set_ylim([0, 1.4])
data1 = data0.iloc[9,1:7]
labels_1 = data0.iloc[1,1:7]
colors = ['red', 'blue', 'green', 'orange', 'purple','pink']
axs[0].bar(labels_1, data1, color=colors)
axs[0].set_title('E1')
# 不显示横坐标  
axs[0].set_xticklabels([])
axs[0].set_ylim([0, 1.4])
# plt.ylabel('产量')
data3 = data0.iloc[15,1:7]
labels_3 = data0.iloc[1,1:7]
colors = ['red', 'blue', 'green', 'orange', 'purple','pink']
axs[2].bar(labels_3, data3, color=colors)
axs[2].set_title('E3')
# 不显示横坐标  
axs[2].set_xticklabels([])
axs[2].set_ylim([0, 1.4])
data4 = data0.iloc[21,1:7]
labels_4 = data0.iloc[1,1:7]
colors = ['red', 'blue', 'green', 'orange', 'purple','pink']
axs[3].bar(labels_4, data4, color=colors)
axs[3].set_title('E4')
# 不显示横坐标  
axs[3].set_xticklabels([])
axs[3].set_ylim([0, 1.4])

 接着开始将每一个小图所需的数据和命令导入,将每一个小图画好再按照横轴进行叠加。

 执行完上述命令便得到没有图例和大的横纵坐标的堆叠条形图,如上图所示,大家还可以看到我的代码中有标注不显示横坐标这一选项,通过如下代码实现,可对每一个单独小图设定,如将下图所示代码注释后,第四个小图中每种颜色代表的含义便会显现出来。

axs[3].set_xticklabels([])

大家此时还可以看出上述代码中有如下所示代码程序,此时是指设置每个小图纵坐标的刻度,由上图可知我们所设置的范围都是0-1.4,将每个小图的纵坐标设置相同的范围便于进行比较。 

axs[3].set_ylim([0, 1.4])

 二.导入数据将小图画完之后下一步开始进行右上角图例的绘制,将每一个颜色代表的含义通过图例表达出来。

加上图例之后我们便可以看到如下图所示代码,且图例的位置可调节。

import matplotlib.patches as mpatches
labels11 = ['XGB', 'RF', 'SVR_rbf', 'SVR_linear', 'LGB', 'Stacking']
# Create patch objects for each color
patches = [mpatches.Patch(color=c, label=labels11) for c in colors]
# Add the legend to the plot
# axs[3].legend(handles=patches, bbox_to_anchor=(1.05, 1), loc='upper left') 
axs[3].legend(handles=patches, labels=labels11,bbox_to_anchor=(1.05, 1), loc='upper left')
# plt.xlabel('Wheat599')
fig = plt.gcf() 

 如上所示代码,执行之后就加入了图例,颜色所对应的标签应该是可以直接读入的,因为格式不太对,这里便直接读取了浮点数进行转换。

bbox_to_anchor=(1.05, 1), loc='upper left'

这一行代码可调整图例的位置距离具体放在哪个位置。

三.有了图例之后我们没有画出每个小图的横纵坐标,所以此时我们为这个大图添加总的横纵坐标,一个横向一个纵向就形成了最终的图,同时大小可调节。

 

from matplotlib.font_manager import FontProperties
font = FontProperties(size=20)
# fig.suptitle('Pearson correlation coefficient (PCC)', fontsize=20)
fig.text(0.5, 0.04, 'Wheat599', ha='center',fontproperties=font)  
fig.text(0.08, 0.5, 'RMSE', va='center', rotation='vertical',fontproperties=font)
plt.show()

 此时的大小通过size参数进行调整,且位置可以进行调整,我们此时看到横坐标轴的横坐标和纵坐标轴的纵坐标大小都是0.5,此时的参数不是指画的图上的纵坐标的刻度大小。

总的代码如下

#RMSE均方根误差
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
# 设置matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False     # 正常显示负号

fig, axs = plt.subplots(1, 4, figsize=(14, 5))

data0 = pd.read_excel('jieguoxin.xlsx')
data2 = data0.iloc[3,1:7]
labels_2 = data0.iloc[1,1:7]
colors = ['red', 'blue', 'green', 'orange', 'purple','pink'] 

axs[1].bar(labels_2, data2, color=colors)
axs[1].set_title('E2')
# 不显示横坐标  
axs[1].set_xticklabels([])
# Set y-axis limits
axs[1].set_ylim([0, 1.4])
data1 = data0.iloc[9,1:7]
labels_1 = data0.iloc[1,1:7]
colors = ['red', 'blue', 'green', 'orange', 'purple','pink']
axs[0].bar(labels_1, data1, color=colors)
axs[0].set_title('E1')
# 不显示横坐标  
axs[0].set_xticklabels([])
axs[0].set_ylim([0, 1.4])
# plt.ylabel('产量')
data3 = data0.iloc[15,1:7]
labels_3 = data0.iloc[1,1:7]
colors = ['red', 'blue', 'green', 'orange', 'purple','pink']
axs[2].bar(labels_3, data3, color=colors)
axs[2].set_title('E3')
# 不显示横坐标  
axs[2].set_xticklabels([])
axs[2].set_ylim([0, 1.4])
data4 = data0.iloc[21,1:7]
labels_4 = data0.iloc[1,1:7]
colors = ['red', 'blue', 'green', 'orange', 'purple','pink']
axs[3].bar(labels_4, data4, color=colors)
axs[3].set_title('E4')
# 不显示横坐标  
axs[3].set_xticklabels([])
axs[3].set_ylim([0, 1.4])

import matplotlib.patches as mpatches

labels11 = ['XGB', 'RF', 'SVR_rbf', 'SVR_linear', 'LGB', 'Stacking']
# Create patch objects for each color
patches = [mpatches.Patch(color=c, label=labels11) for c in colors]
# Add the legend to the plot
# axs[3].legend(handles=patches, bbox_to_anchor=(1.05, 1), loc='upper left') 
axs[3].legend(handles=patches, labels=labels11,bbox_to_anchor=(0.85, 1), loc='upper left')
# plt.xlabel('Wheat599')
fig = plt.gcf() 

from matplotlib.font_manager import FontProperties
font = FontProperties(size=20)
# fig.suptitle('Pearson correlation coefficient (PCC)', fontsize=20)
fig.text(0.5, 0.04, 'Wheat599', ha='center',fontproperties=font)  
fig.text(0.08, 0.5, 'RMSE', va='center', rotation='vertical',fontproperties=font)
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/153907.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QQ邮箱地址一键自动粘贴,工作效率迅速提升

您是否曾经为了输入邮箱地址而烦恼?每次需要输入邮箱地址时,总是要反复复制粘贴,不仅浪费时间,还容易出错。现在,我们为您带来了一项全新的QQ邮箱自动粘贴功能,让您的工作更加高效便捷! 首先&a…

《变形监测与数据处理》笔记/期末复习资料(择期补充更新)

变形: 变形是物体在外来因素作用下产生的形状、大小及位置的变化(随时间域和空间域的变化),它是自然界普遍存在的现象。 变形体: 一般包括工程建筑物、构筑物、大型机械设备以及其他自然和人工对象等。 变形体和变形…

华为鸿蒙开发记录

错误 1No module found. Make sure the project sync is completed successfully and the module is set in Edit Configuration > General 应该是项目建立的是Api是9 ,但是 华为远程模拟器是应该建立的是 8的,导致 版本过低。从新建立项目选择APi8就…

QtiPlot for Mac v1.1.3(科学数据分析工具)

QtiPlot是一款跨平台科学绘图软件,它可以在Windows、Linux和Mac OS X等多个平台上运行。QtiPlot具有强大的数据分析和可视化功能,被广泛应用于学术界和工业界的数据处理和图形制作。 QtiPlot支持多种语言,包括但不限于英语、中文等&#xff…

JS-项目实战-批量删除水果库存记录

1、fruit.js function $(name) {if (name) {//假设name是 #fruit_tblif (name.startsWith("#")) {name name.substring(1); //fruit_tblreturn document.getElementById(name);} else {return document.getElementsByName(name);}} }//当页面加载完成后执行后面的…

人人商城app禁用

api.map.baidu.com 换成 lbs.map.baidu.com

SQL存储过程和函数

SQL存储过程和函数 变量系统变量用户定义变量局部变量 存储过程存储函数 变量 在MySQL中变量分为三种类型: 系统变量、用户定义变量、局部变量。 系统变量 系统变量 是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBA…

MCAL实战三(S32K324-NXP EB tresos Port驱动配置详解)

一、前言 PORT驱动初始化就是对微控制器(MCU)的整个PORT模块进行初始化配置。很多端口和管脚被分配有多种不同的功能,即可以进行引脚功能复用,比如通用I/O、模数转换、脉宽调制等功能。因此,对PORT必须有一个整体的配置和初始化,对各管脚的具体配置和使用取决于微控制器和…

【部署篇】宝塔liunx中使用docker部署nestjs项目【全过程】

一、 👋 前序工作 连接服务器 获取宝塔面板信息 在命令行输入sudo /etc/init.d/bt default 进入宝塔面板输入账号密码 通过上面网址进入宝塔 安装自己需要的东西 **PS:**这里还需要自己登录宝塔账号,没有账号的同学需要注册一下 安装pm2…

高性能架构设计

1. 引言 高性能架构设计在现代系统中至关重要,它能够应对大规模的数据和用户需求增长,提供优秀的用户体验和实时数据处理能力。同时,它也是解决"三高"问题(高并发、高性能、高可用性)的关键。 2. 高性能定…

GZ038 物联网应用开发赛题第10套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第10套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考…

从内网到公网:使用Axure RP和内网穿透技术发布静态web页面的完整指南

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…

前端界面网页截图(干货)

如果可以实现记得点赞分享,谢谢老铁~ 看了一些谷歌插件,可以对网页进行局部截图或者是整个网页截图,于是想着弄个demo,关于前端的截图。最后选择了 html2canvas 1.下载安装包 Install NPM npm install --save html2canvas或者…

在Linux上安装Oracle 数据库 11g (含静默方式安装)

好久没碰11g了,今天(2023年11月16日)因为有个需求又装了一遍。 在OCI上安装了一个Oracle Linux 6实例: $ uname -a Linux instance-20231116-1239-db11g 4.1.12-124.80.1.el6uek.x86_64 #2 SMP Mon Oct 9 02:32:10 PDT 2023 x86…

【已解决】启动SSH服务报“could not load host key”错误

文章目录 问题复现解决方案 问题复现 解决方案 yum remove openssh-* && yum install -y openssl openssh-server && systemctl restart sshd

Sqlite安装配置及使用

一、下载SQLite Sqlite官网 我下载的是3370000版本:sqlite-dll-win64-x64-3370000.zip 和 sqlite-tools-win32-x86-3370000.zip 二、解压下载的两个压缩包 三、配置环境 四、检查是否安装配置成功 winR:输入cmd调出命令窗口,输入sqlite3后回车查看s…

0x80070002错误代码要怎么解决?修复0x80070002的方法

0x80070002错误代码,这个系统更新相关的错误,经常在进行系统备份或更新时出现,打乱了我们的步调。为了帮助大家解决问题,本文将探讨该错误0x80070002产生的原因,提供详细的解决步骤,并分享预防措施。 一.0x…

配件仓库管理:WMS系统在制造业工厂的应用

一、配件仓库管理系统概述 WMS系统是一种针对仓库管理的软件系统,它涵盖了从物料入库、存储、打包、发货等一系列环节。对于制造业工厂而言,WMS系统可以有效地管理配件仓库,确保生产流程的顺畅。通过WMS系统,企业可以实现仓库的数…

机器学习的逻辑回归

Sigmoid函数 逻辑回归的预测函数 梯度下降法-逻辑回归 import matplotlib.pyplot as plt import numpy as np # 生成一个关于分类器性能的详细报告。 # 这个报告包含了每个类别的精度、召回率、F1分数,以及所有类别的平均精度、召回率和F1分数 from sklearn.metri…

2023上海国际电力电工展盛大举行 规模创新高 与行业「升级、转型、融合」

由中国电力企业联合会、国家电网主办及雅式展览服务有限公司承办的「第三十一届上海国际电力设备及技术展览会 (EP Shanghai 2023)」从11月15日起至17日一连三天于上海新国际博览中心盛大举行,并首度增设专题子展「上海国际储能技术应用展览会」。本届展会以“升级、…