Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言基于Excel数据绘制多系列条形图

R语言基于Excel数据绘制多系列条形图

作者头像
疯狂学习GIS
发布于 2023-09-18 08:26:02
发布于 2023-09-18 08:26:02
55900
代码可运行
举报
文章被收录于专栏:疯狂学习GIS疯狂学习GIS
运行总次数:0
代码可运行

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
install.packages("readxl")

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
install.packages("ggplot2")

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
install.packages("reshape2")

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(readxl)
library(ggplot2)
library(reshape2)

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()函数来实现,具体的代码如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xlsx_data <- melt(xlsx_file, id.var = "...1")

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
xlsx_data <- melt(xlsx_file, id.var = "...1", variable.name = "Factor", value.name = "q")

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()代码即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot(data = xlsx_data, mapping = aes(x = Factor, y = q, fill = ...1)) + geom_bar(stat = "identity", position = "dodge") + coord_flip()

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

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

  至此,大功告成。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023/09/17 22:00:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 疯狂学习GIS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言学习笔记——柱形图
今天分享R语言中的柱形图,所有图表语法都基于ggplot2包中的ggplot函数完成 。 其实R语言本身就带有各种作图函数,比如plot、bar、pie等,而且语法非常简单明了,为什么还要用ggplot2这种语法独立性很强、自成体系的作图包来作图呢? 一个例子就能感受到: plot(mpg$cty,mpg$hwy)#R语言内置散点图函数(无需加载任何辅助工具包) ggplot(mpg,aes(cty, hwy)) + geom_point(colour="steelblue")+labs(x = "City
数据小磨坊
2018/04/11
3.8K0
R语言学习笔记——柱形图
R包reshape2 |轻松实现长、宽数据表格转换
https://seananderson.ca/2013/10/19/reshape/
生信宝典
2019/10/24
12.3K0
R语言ggplot2画右三角方块热图的简单小例子
这里使用到的是geom_tile()函数。把填充设置为白色,然后把边框线设置为灰色就可以达成这种效果
用户7010445
2021/07/12
3.5K0
R语言ggplot2画右三角方块热图的简单小例子
R语言ggplot2做簇状柱形图并添加误差线的一个完整示例
原始数据存储在一个excel文件里,这个excel文件里有三个子表格,每一个子表格的数据如下:
用户7010445
2021/12/13
2.7K0
R语言ggplot2做簇状柱形图并添加误差线的一个完整示例
R语言 | R基础知识
使用install.packages()函数来安装包,括号中写上要安装的包的包名。以安装ggplot2包为例:
生信real
2022/03/29
1.2K0
R语言 | R基础知识
文献配套GitHub发表级别绘图03-条形图
文章来源:"Preoperative immune landscape predisposes adverse outcomes in hepatocellular carcinoma patients with liver transplantation" (2021,npj Precision Oncology),数据与代码全部公开在https://github.com/sangho1130/KOR_HCC。
生信技能树
2022/03/03
1.6K0
文献配套GitHub发表级别绘图03-条形图
R语言ggplot2科研数据数据可视化实用手册~第八章热图(heatmap)
今天下午7点到9点直播讲解如下代码,腾讯会议,感兴趣的参加,给推文打赏10元获取腾讯会议直播链接
用户7010445
2023/01/06
3.3K0
R语言ggplot2科研数据数据可视化实用手册~第八章热图(heatmap)
ggplot2:堆叠柱状图
在数据展示时为了体现各因素的比重(百分比),有时会用到堆叠柱状图,这里介绍下用 ggplot2 画堆叠柱状图的代码和相应的美化方法。
生信技能树
2021/04/29
7.7K0
ggplot2:堆叠柱状图
R绘图笔记 | 柱状图绘制
绘图:geom_bar用于绘制柱状图,ylim设置纵轴值范围,them设置主题,axis.title设置坐标轴名称参数,axis.text设置坐标轴参数。
DoubleHelix
2020/11/03
1.2K0
R绘图笔记 | 柱状图绘制
R基础知识及快速检阅你的数据
考虑到公众号后台数不胜数的提问其实并不是生物学知识或者数据处理知识的困惑,仅仅是绘图小技巧以及数据转换的困难。所以我们一再强调系统性掌握编程知识的重要性,在这个打基础方面我让实习生“身先士卒”,起码每个人在每个编程语言上面都需要看至少五本书而且每本书都需要看五遍以上,并且详细的记录笔记。
生信技能树
2022/06/08
4.2K0
R基础知识及快速检阅你的数据
是Excel的图,不!是R的图
excel作为一个强大的统计工具,自身包含着一部分数据可视化的功能。R作为可视化的大势,自然也可以画出这些图,有一篇就通过ggplot2包进行了部分总结,甚是有趣,小编复刻学习了一番,现对代码做简单注释,以作分享。
生信宝典
2019/08/01
4.2K0
是Excel的图,不!是R的图
R语言学习 - 柱状图
柱状图绘制 柱状图也是较为常见的一种数据展示方式,可以展示基因的表达量,也可以展示GO富集分析结果,基因注释数据等。 常规矩阵柱状图绘制 有如下4个基因在5组样品中的表达值 data_ori <- "Grp_1;Grp_2;Grp_3;Grp_4;Grp_5 a;2.6;2.9;2.1;2.0;2.2 b;20.8;9.8;7.0;3.7;19.2 c;10.0;11.0;9.2;12.4;9.6 d;9;3.3;10.3;11.1;10" data <- read.table(text=data_ori
生信宝典
2018/02/05
2.7K0
R语言学习 - 柱状图
跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D statistic
论文中提供的是宽格式数据,如果使用ggplot2作图需要转换成长格式,这里本来想尝试一下tidyr包中的pivot_longer()函数了,帮助文档没有看明白。没有搞定,还是直接使用reshape2中的melt()函数吧
用户7010445
2021/05/07
2.9K0
这些条形图的用法您都知道吗?
条形图专用于离散变量和数值变量之间的可视化展现,其通过柱子的高低,直观地比较离散变量各水平之间的差异,它被广泛地应用于工业界和学术界。在R语言的ggplot2包中,读者可以借助于geom_bar函数轻松地绘制条形图。对于条形图大家对其的印象是什么呢?又见过哪些种类的条形图呢?在本篇文章我将带着各位网友说道说道有关条形图的哪些品种。
1480
2019/08/05
6.1K0
这些条形图的用法您都知道吗?
R语言ggplot2做柱形图如何让起始位置不是0?
突然有了想法,做柱形图的时候可以不用 geom_bar() 或者 geom_col()直接画柱子的函数,可以用geom_segment()画线段的函数,只是需要准备示例数据集的时候稍微做一个调整就可以了
用户7010445
2023/01/06
9290
R语言ggplot2做柱形图如何让起始位置不是0?
ggplot2绘制科研数据柱状图~
ggplot2是一个神奇的R包,可以将自己的统计数据绘制成想要的图案。从今天起小编计划为各位观众老爷们带来一个ggplot2的系列教程。那么首先呢,大家在可视化自己的科研数据时,最最最常用的就是绘制一个带误差或者显著值的柱状图。
作图丫
2022/03/29
2.8K0
ggplot2绘制科研数据柱状图~
跟着Nature学作图:R语言ggplot2簇状柱形图完整示例
https://www.nature.com/articles/s41586-022-04664-7#Sec33
用户7010445
2023/01/06
9390
跟着Nature学作图:R语言ggplot2簇状柱形图完整示例
R语言数据重塑及导出操作
今天跟大家简单介绍下几个常用的R数据操纵技巧——导入(xlsx)、导出及长宽转换! 数据导入(xlsx) 之前写过一篇关于R导入不同类型数据的方式,但是其中只涉及到.csv、.txt以及直接从剪切板复制。 之所以当时没有介绍xlsx是因为,excel数据文件属于富文本类型,结构相对复杂,需要解除特殊包的支持以及java环境,当时电脑上还没有配置合适的java环境。 后来倒腾一个上午,才算弄完(主要是因为R语言系统版本与Java环境版本需严格一致,否则R语言无法自动探测到Java路径,R语言中的Rjava包便
数据小磨坊
2018/04/11
1.4K0
R语言数据重塑及导出操作
R语言笔记-5
ggplot2是与base r语言不同的作图语法,最少元素包括:指定数据、美学映射、几何对象
Jon_L
2023/05/21
6570
如何更改ggplot2中堆积条形图中的堆积顺序
博客地址:https://www.jianshu.com/u/619b87e54936
用户1359560
2020/03/20
12.9K0
相关推荐
R语言学习笔记——柱形图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验