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 mpatcheslabels11 = ['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()

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于vue 2.0的H5页面中使用H5自带的定位,高德地图定位,搜索周边商户,覆盖物标记,定位到当前城市

基于vue的H5页面中使用高德地图定位&#xff0c;搜索周边商户&#xff0c;覆盖物标记 首先安装高德地图插件 npm i amap/amap-jsapi-loader --save地图承载容器 <template><div id"container"></div> </template>地图容器样式 <style…

利用Nextcloud搭建企业私有云盘系统

利用Nextcloud搭建企业私有云盘系统 1. 场景介绍2. 环境准备3. 安装NextCloud4. 系统功能验证 1. 场景介绍 Nextcloud是一款免费开源的私有云存储系统&#xff0c;采用PHPMySQL开发&#xff0c;提供了多个同步客户端支持多种设备访问&#xff0c;使用Nextcloud可以快速便捷地搭…

OpenCV必知必会基础3(包括色彩空间的变换、ROI、OpenCV中最重要的结构体Mat以及获取图像的属性)

文章目录 OpenCV的色彩空间——RGB与BGROpenCV的色彩空间——HSV与HSLHSV主要用于OpenCV中HSL OpenCV色彩空间转换YUV主要用于视频中题目 图像操作的基石Numpy【基础操作】np.arraynp.zerosnp.onesnp.fullnp.identitynp.eye Numpy基本操作之矩阵的检索与赋值Numpy基本操作三——…

腾讯待办是什么?关停之后如何继续提醒待办事项?

由于业务方向调整&#xff0c;腾讯待办将于2023年的12月20日全面停止运营并下架。那么腾讯待办是什么呢&#xff1f;它是一款以微信小程序呈现的待办事项和日程管理工具&#xff0c;旨在帮助用户更好地管理自己的待办事项和日程安排。用户可以在该小程序中创建待办事项、设置提…

前三季度亏损近亿元,「缺钱」的北斗智联拟变更控股股东

本月初&#xff0c;北斗星通发布《关于深圳证券交易所重组问询函回复的公告》&#xff0c;针对公司全资子公司拟出售孙公司北斗星通智联科技有限责任公司&#xff08;以下简称北斗智联&#xff09; 15%的股权事宜做出进一步解读。 按照此前计划&#xff0c;15%的股权&#xff0…

使用CycleGAN训练自己的数据集

一、下载源码 源码下载链接&#xff1a;https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix 二、调整自己的数据集格式 按照如下格式放 三、安装好所需要的python包 使用命令&#xff1a;pip install 包名称 在anaconda里面安装&#xff0c; 四、训练和测试 在开始训…

LeetCode - 160. 相交链表(C语言,配图)

思路&#xff1a; 1. 我们算出两个链表的长度lenA&#xff0c;lenB。我们在这里最后判断一下&#xff0c;两个链表的尾节点是否是一样的&#xff0c;如果是相交链表&#xff0c;那它们的尾节点一定是一样的。 2. 算出长链表和短链表的差距n&#xff08;n | lenA- lenB |&#…

html图片控制处理放大缩小移动多种案例(附源码)

文章目录 1.图片处理风格1.1 简约版本图片预览1.2 图片查看器&#xff0c;可放大缩小&#xff0c;旋转1.3 图片放大镜效果1.4 图片放大显示&#xff0c;支持滚轮调整大小1.5 图片上下滑动缩略图字幕效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh …

Google codelab WebGPU入门教程源码<3> - 绘制网格(源码)

对应的教程文章: https://codelabs.developers.google.com/your-first-webgpu-app?hlzh-cn#4 对应的源码执行效果: 对应的教程源码: 此处源码和教程本身提供的部分代码可能存在一点差异。 class Color4 {r: number;g: number;b: number;a: number;constructor(pr 1.0, p…

Linux下好玩的指令(持续更新)

适用于centOS下&#xff0c;别的Linux换个指令就行&#xff0c;内容是一样的 centOS有的指令安装不了&#xff1f;试试拓展yum源&#xff0c;再安装基本就OK啦&#xff01; yum install -y epel-release 下面是作者在centOS环境下亲测可以使用的&#xff0c;如果你是root用户直…

查询附近500米的餐厅

前言 查询附近500米数据&#xff0c;第一反应是用ST_Buffer&#xff0c;但是ST_Buffer文档写了一句话&#xff0c;使用ST_DWithin效率更高。 ST_Buffer (postgis.net) ST_DWithin (postgis.net) 数据取点 我有一种坐标系4326的表ne_10m_admin_0_boundary_lines_land&#xf…

Camtasia2024喀秋莎微课制作神器新版本功能介绍

最近无论是b站&#xff0c;抖音&#xff0c;快手等视频软件中都有不少微课视频、电视剧解说横空出世&#xff0c;通过这些“热度”带来的收益也是无法估量的&#xff0c;很多自媒体博主月入上万惹人羡慕。 不少朋友也想在这股短视频洪流中分一碗羹&#xff0c;但又苦于技术跟不…

Python中的时间序列分析模型ARIMA

大家好&#xff0c;时间序列分析广泛用于预测和预报时间序列中的未来数据点。ARIMA模型被广泛用于时间序列预测&#xff0c;并被认为是最流行的方法之一。本文我们将学习如何在Python中搭建和评估用于时间序列预测的ARIMA模型。 ARIMA模型 ARIMA模型是一种用于分析和预测时间…

软件外包开发设计文档

软件设计文档是在软件开发过程中编写的一个关键文档&#xff0c;用于记录系统的设计和结构。设计文档通常包含以下内容&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.引言&#xff08;Introductio…

GD32_ADC采样+DMA多通道扫描传输

GD32_ADC采样DMA多通道扫描传输 文章目录 GD32_ADC采样DMA多通道扫描传输前言一、资源介绍二、原理1.ADC连续扫描模式2.DMA传输3.ADC内部通道 三、配置1.ADC配置2.DMA配置3.注意事项 四、计算1.分压转换2.数据转换 前言 <1>、硬件平台&#xff1a;可运行软件程序的GD32单…

年产200万件的超级工厂投产!巨头「闭环」汽车电子全产业链

随着汽车电动化程度的提升&#xff0c;汽车电子部件占整车成本比重逐步升高&#xff0c;已经从2012年的25%上升到2021年的55%。 且汽车电子电气架构向整车集中演进&#xff0c;智能汽车已经进入了软件及数据定义时代&#xff0c;底层硬件打破了过去几十年围绕特定应用不断增加…

【luckfox】3、计算重量差

前言 本章结合之前的hx711驱动&#xff0c;实现读取质量&#xff0c;记录时间及剩余质量并存入csv文件&#xff0c;计算质量差并总计。 代码 luckfox-pico\project\app\test_app\hx711\hx711_app_addtime.c #include <stdio.h> #include <stdlib.h> #include &…

文心一言 VS 讯飞星火 VS chatgpt (136)-- 算法导论11.3 2题

二、用go语言&#xff0c;假设将一个长度为r的字符串散列到m 个槽中&#xff0c;并将其视为一个以 128 为基数的数&#xff0c;要求应用除法散列法。我们可以很容易地把数 m 表示为一个 32 位的机器字&#xff0c;但对长度为r的字符串&#xff0c;由于它被当做以 128 为基数的数…

基于JavaWeb+SSM+微信小程序基金优选系统的设计和实现

基于JavaWebSSM微信小程序基金优选系统的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 基金优选是金融机构的核心&#xff0c;是必不可少的一个部分。在金融机构的整个服务行业中…

使用requests解决请求库Session对象设置超时的问题

在使用 Python 中的 requests 库时&#xff0c;有一个常见的问题是关于 Session 对象设置超时的功能。默认情况下&#xff0c;requests 的 Session 对象没有提供一个全局设置超时的属性&#xff0c;而是需要在每个请求中单独设置超时时间&#xff0c;或者创建一个自定义的子类来…