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

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

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

r 复制代码
install.packages("readxl")

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

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

r 复制代码
install.packages("ggplot2")

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

r 复制代码
install.packages("reshape2")

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

r 复制代码
library(readxl)
library(ggplot2)
library(reshape2)

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

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

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

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

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

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

r 复制代码
xlsx_data <- melt(xlsx_file, id.var = "...1")

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

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

r 复制代码
xlsx_data <- melt(xlsx_file, id.var = "...1", variable.name = "Factor", value.name = "q")

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

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

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

r 复制代码
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()代码即可。

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

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

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

  至此,大功告成。

相关推荐
天桥下的卖艺者16 小时前
chrals.CTI函数升级版发布,增加了CTI衍生的脂肪指数提取
数据库·r语言
小师兄吃牛肉2 天前
什么是R语言?如何快速学习R语言
开发语言·学习·r语言
喆星时瑜3 天前
Win10/11 安装 R 与 RStudio 详细图文教程
开发语言·r语言·安装
喆星时瑜3 天前
R语言基础语法入门
开发语言·r语言
喆星时瑜3 天前
R语言向量语法的详细教程
开发语言·r语言
临床数据科学和人工智能兴趣组5 天前
在R语言中, 使用 as.factor() 函数转换数值型变量
开发语言·r语言
babe小鑫15 天前
信息与计算科学专业应届生面试 怎么证明自己能解决业务问题
学习·r语言·excel
深兰科技16 天前
深兰科技受邀参与第二届中国(南宁)—东盟人工智能场景应用对接会,深化AI国际合作
人工智能·qt·r语言·scala·symfony·智能机器人·深兰科技
赵钰老师17 天前
基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析
python·arcgis·数据分析·r语言
User_芊芊君子21 天前
RStudio 鸿蒙 PC 适配全记录:以 Qt 原生工作区承载嵌入式 R
qt·r语言·harmonyos