R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图

news/2024/9/20 9:29:40/文章来源:https://www.cnblogs.com/fkxxgis/p/18315885

  本文介绍基于R语言中的readxl包与ggplot2包,读取Excel表格文件数据,并绘制具有多个系列柱状图条形图的方法。

  首先,我们配置一下所需用到的R语言readxl包与ggplot2包;其中,readxl包是用来读取Excel表格文件数据的,而ggplot2包则是用以绘制柱状图的。包的下载方法也非常简单,以readxl包为例,我们输入如下的代码即可。

install.packages("readxl")

  输入代码后,按下回车键,运行代码;如下图所示。

image

  待readxl包下载完成后,通过同样的方法配置ggplot2包。

install.packages("ggplot2")

  此外,在用代码进行数据分析、可视化时,有时需要对数据加以长数据宽数据的转换(具体什么意思在后文有介绍),这里需要用到另一个R语言包reshape2,我们也就在此将其一并配置好。

install.packages("reshape2")

  接下来,我们即可开始代码的撰写。首先,我们将需要用到的包导入。

library(readxl)
library(ggplot2)
library(reshape2)

  随后,我们进行Excel表格文件数据的读取;这里我们就通过readxl包中的read_excel()函数来实现表格数据的读取。其中,函数的第一个参数表示待读取的Excel表格文件路径与名称,第二个参数则表示这些数据具体在哪一个Sheet中;由于我这里需要的数据存放在Excel表格文件的第2Sheet中,因此就选择sheet = 2即可。

xlsx_file <- read_excel(r"(E:\02_Project\01_Chlorophyll\ClimateZone\Split\Result\Result.xlsx)", sheet = 2)

  其中,原本在表格文件中我的数据如下所示。

  通过上述代码,我们即可将数据读入R语言中;其具体格式如下图所示。可以看到,读入后的数据是一个tibble类别的变量,tibbleData Frame格式数据的一种改进,我们在这里可以就将其视作Data Frame格式数据加以后续处理。

  此外,如果大家是使用RStudio软件进行代码的撰写,还可以双击这一变量,更直观地查看读入后的数据具体是什么样子的,如下图所示。

  接下来,我们需要对数据加以长、宽转换。首先,简单来说,宽数据就是如上图所示的数据,而长数据则是如下图所示的数据;其中,我们在获取、记录原始数据时,往往获取的是宽数据,因为这一类数据具有更加直观、更易记录的特点;而在用数据分析软件或代码对数据加以深入处理或可视化操作时,往往系统需要的是长数据。因此,我们这里需要对宽数据长数据加以转换;这一转换可以通过melt()函数来实现,具体的代码如下所示。

xlsx_data <- melt(xlsx_file, id.var = "...1")

  其中,melt()函数的第一个参数表示需要进行转换的变量,第二个参数则是ID变量,一般情况下就是表述数据序号的第一列数据;我这里由于原本Excel的数据中就没有表示序号的那一列数据,因此就选择了原有数据的第一列作为ID变量。执行上述代码后,我们得到的长数据如下图所示。

  此外,melt()函数在运行时,还可以指定数据转换后的列名。如以下代码就表示,我们希望将转换后表示变量的列的名称设置为Factor,表示观测值的列的名称设置为q

xlsx_data <- melt(xlsx_file, id.var = "...1", variable.name = "Factor", value.name = "q")

  执行上述代码,得到的长数据如下图所示。

  当然,这里需要提一句,关于宽数据长数据的转换,涉及到很多内容;如果大家有需要,可以查看melt()函数的官方帮助文档。

  完成数据格式转换后,我们即可开始绘图。这里我们就直接通过ggplot2包的ggplot()函数,对柱状图加以绘制即可;具体代码如下所示。

ggplot(data = xlsx_data, mapping = aes(x = Factor, y = q, fill = ...1)) + geom_bar(stat = "identity", position = "dodge")

  其中,ggplot()函数的第一个参数data表示需要参与绘图的数据,第二个参数mapping表示我们需要用哪一列数据作为X轴,哪一列作为Y轴;同时,其内部的fill参数表示我们需要将柱状图分为多个系列(如果大家的柱状图只有1个系列,那么就不需要fill这个参数了),其后指定的变量就表示我们需要基于这一变量对数据的系列加以区分。接下来,加号后面的geom_bar参数,是我们绘制多序列柱状图所需要设定的,其中position参数设置为"dodge"就表示我们希望将不同的系列平行放置(如果不设置position参数,那么不同系列的柱子就会垂直堆积,有点类似堆积柱状图)。

  执行上述代码,得到如下所示的结果。

  此外,如果大家希望柱状图是横向伸展的,就在最后增添+ coord_flip()代码即可。

ggplot(data = xlsx_data, mapping = aes(x = Factor, y = q, fill = ...1)) + geom_bar(stat = "identity", position = "dodge") + coord_flip()

  执行上述代码,得到如下所示的结果。

  在这里,我们仅仅是对ggplot()函数做了一个初步的介绍;关于其更深入的了解,大家直接查看其官方帮助文档即可。

  至此,大功告成。

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

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

相关文章

ICMAN触摸滑条方案

ICMAN触摸滑条调光是一种利用触摸技术实现的调光控制方式,是一种更简单、直观且节能的调光方式,有效改善了用户的照明体验,并在智能家居和节能照明领域发挥着重要作用。基于厦门晶尊微电子(ICMAN)触摸芯片实现的触摸滑条调光,常见于智能家居系统、可调光灯具、电子设备等…

使用Nginx反向代理minio,提供文件公共访问

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。 在之前的一篇文章介绍了《使用Docker搭建minio对象存储与mc客户端常用命令》,这…

第五讲:全局锁和表锁 :给表加个字段怎么有这么多阻碍?

目录第五讲:全局锁和表锁 :给表加个字段怎么有这么多阻碍?引言:锁的分类:全局锁场景:弊端:好处分析:回顾:提出问题:问题一:问题二:表级锁表锁:元数据锁(MDL)案例:变故发生:基于案列说问题:操作小结提问:官方:我的理解(片面了):深入: 第五讲:全局锁和表锁…

01-Scala开发环境搭建

Scala开发环境搭建 1. 安装JDK: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 2. IDEA安装Scala插件3.添加Scala的全局的Libraries4.打印Hello WorldTips:Scala中为什么要在object中才能使用Main方法? Scala中将“静态”与“类”区分的很…

2024-07-22 如何让宽度和高度一致(flex布局)

<template><div class="demo-container"><div class="demo-item"><div class="demo-title">方向指示类图标</div><div class="demo-content"><div class="demo-box" v-for="(i…

Scala开发环境搭建

Scala开发环境搭建 1. 安装JDK: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 2. IDEA安装Scala插件3.添加Scala的全局的Libraries4.打印Hello WorldTips:Scala中为什么要在object中才能使用Main方法? Scala中将“静态”与“类”区分的很…

超声波雷达在APA自动泊车功能中的应用与仿真

自动泊车辅助系统(APA)是现代汽车智能驾驶技术的重要组成部分,该系统使得车辆能够在没有任何人为干预的情况下,自动完成泊车过程。具体来说,APA系统在泊车过程中通过布置在车辆周围的传感器(环视摄像头、超声波雷达等)完成对有效车位以及障碍物的感知识别,再进行泊车路…

VScode利用EIDE和cortex-debug进行stm32开发(包括配置以及使用)

目录前言必要准备第一步:安装vscode插件——EIDEEIDE是什么EIDE的下载EIDE的配置(重点)EIDE功能的简单介绍1.项目的建立:新建项目或者导入项目2.为项目选择芯片支持包(不是必须)3.构建配置4.烧录配置5.项目属性和项目设置6.安装实用工具和打开插件设置第二步:安装vscode插…

SFCNR论文阅读笔记

Self-supervised Contrastive Enhancement with Symmetric Few-shot Learning Towers for Cold-start News Recommendation论文阅读笔记 Abstract 现存的问题: ​ 如今,新闻的传播速度快于消费速度。这与快速的新闻周期和延迟更新一起,导致了具有挑战性的新闻冷启动问题。同…

洛谷P10693

洛谷P10693 好奇怪的题目编号 思路提取input 11 2 13 4 5 3 7 9 9 11 11 12 output 9以人造数据为例。 首先我们让\(i\)\(\to\)\(a_i\)连边,整个分三种情况(对应图中三部分)。第一部分:\(i\)坐到了\(a_i\)(\(a_i\)\(\le\)\(n\))这个位置,那么\(a_i\)就没有地方坐了,他只…

WSL默认安装目录

我当前在win11下进行以下操作,其它系统版本有问题可以留言一、安装WSL前提条件:我们需要保证你的操作系统版本满足 **Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 ** 才能使用以下命令。 启用适用于 Linux 的 Windows 子系统:打开powershel…

【日记】坏了,0721 真成为柚子厨的标记了(418 字)

正文今天是 7 月 21 号,0721,然后柚子社入驻 B 站了,开始我以为是整活,结果发现是真的。草,这下 0721 真成柚子厨纪念日了。有点难绷又有点好笑。睡觉的一天。我原以为 14:30 睡到 16:30 差不多了,結果一觉睡到 17:30。草。我想着周末,也就没设闹钟了,睡到什么时候随缘…