首页 > 其他分享 >R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图

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

时间:2024-07-22 14:06:46浏览次数:13  
标签:表格 代码 直方图 柱状图 ggplot2 所示 数据 readxl

  本文介绍基于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()函数做了一个初步的介绍;关于其更深入的了解,大家直接查看其官方帮助文档即可。

  至此,大功告成。

标签:表格,代码,直方图,柱状图,ggplot2,所示,数据,readxl
From: https://www.cnblogs.com/fkxxgis/p/18315885

相关文章

  • 爱思唯尔模板 LATEX 表格标题左对齐
    爱思唯尔模板LATEX表格标题左对齐1.问题描述2.解决方法1.问题描述若出现表格标题如下居中形式,想要变成左对齐的形式。2.解决方法在\begin{document}前面加上\usepackage[font=small,labelfont=bf,labelsep=none]{caption}\captionsetup[table]{labelforma......
  • 解决Element UI 表格组件懒加载数据刷新问题
    一、问题描述elementui的table组件设置成懒加载时,遇到数据表格需要更新、删除等操作,子节点不会自动更新。二、解决思路刷新数据,就是重新调用load(),通过map记录已展开的节点,需要刷新数据时,取出对应treeNode,调用load()进行数据刷新。三、代码实现(VUE)exportdefault{data(......
  • xlsx 前端插件 导出 elment表格示例
    安装yarnaddxlsxyarnaddfile-savergit文档:https://github.com/rockboom/SheetJS-docs-zh-CNnpm地址:https://www.npmjs.com/package/xlsx代码<template> <divclass='box'> pageC <el-buttontype="primary"size="defa......
  • 在考虑表格条件后,在空间上溶解相交的线
    在参加一些表格条件后,我需要溶解来自ageodataframe的所有彼此相交的线串:1)具有相同的ID和2)具有相同的opening年份。这些数据代表道路数据库,我正在使用geopandas数据如下所示:idopeninggeometry0302020LINESTRI......
  • 智能图片识别表格
    文章目录在线体验快速开始一、项目介绍篇1.1PP-Structure概述1.2PP-Structure核心功能:表格识别1.3PP-Structure特点1.4模块介绍1.4.1TableDec.py1.4.2app.py二、核心代码介绍篇2.1app.py2.2TableDec.py2.3扩展-模型选择3.4.1版面分析模型3.4.2表格识别模型......
  • WEB前端08-综合案例(动态表格)
    使用HTML、CSS和JavaScript创建动态表格在本教程中,我们将创建一个动态表格,允许用户添加行、选择项目,并执行批量操作,如全选或删除选中的行。我们将通过HTML、CSS和JavaScript来实现这一功能。让我们逐步了解每个部分是如何协同工作的。HTML结构我们的HTML文档......
  • Python按条件筛选、剔除表格数据并绘制剔除前后的直方图
      本文介绍基于Python语言,读取Excel表格文件数据,以其中某一列数据的值为标准,对于这一列数据处于指定范围的所有行,再用其他几列数据的数值,加以数据筛选与剔除;同时,对筛选前、后的数据分别绘制若干直方图,并将结果数据导出保存为一个新的Excel表格文件的方法。  首先,我们来明确一......
  • vxe-弹窗初始化激活选中Vxe-Table表格中第一行input输入框
    1.实现效果2.Modal弹窗的渲染过程一、Vue组件的生命周期Vue组件从创建到销毁会经历一系列的生命周期钩子,这些钩子为开发者提供了在不同阶段插入自定义逻辑的机会。在Modal弹窗的上下文中,这些生命周期钩子同样适用。beforeCreate:组件实例初始化之后,数据观测和事件配置之前......
  • 蓝桥杯省赛 垂直柱状图(字符串+模拟)
    描述写一个程序从输入文件中去读取四行大写字母(全都是大写的,每行不超过 100 个字符),然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出样例来安排你的输出格式。输入描述四行字符,由大写字母组成,每行不超过 100 个字符。输出描述由若干行组成,前几行由空......
  • 转 | element-ui组件table去除下方滚动条,实现鼠标左右拖拽移动表格
    看起来是vue的语法,我在vue3下面初步试了,还没成功url  https://mp.weixin.qq.com/s/5_EQjUGMrom7Da-T-gzlKQ  element-ui组件table去除下方滚动条,实现鼠标左右拖拽移动表格原创 wsh华仔 懒人wang 2024年07月11日17:44 山东时隔多日,再次遇到值得记录的问题。需求......