R语言数据分析(三)

news2024/9/22 17:18:53

R语言数据分析(三)


文章目录

  • R语言数据分析(三)
  • 一、可视化步骤
    • 1.1 创建ggplot
    • 1.2 添加美学和图层
    • 1.3 简化代码
  • 二、可视化分布
    • 2.1 分类变量
    • 2.2 数值变量
  • 三、可视化关系
    • 3.1 数值变量和分类变量
    • 3.2 两个分类变量
    • 3.3 两个数值变量
    • 3.4 三个或更多变量
  • 四、保存可视化结果
  • 总结


#前言

前面我们已经学习了基本的数据导入的知识,这一节,我们将来介绍数据分析中很重要的一个模块,数据可视化的内容。R中数据可视化有很多可以实现的包,而ggplot2是其中最常用的包之一,我们接下来就对其进行介绍。(需提前加载tidyverse包)

一、可视化步骤

我们将使用palmerpenguins包中企鹅数据集来进行可视化的研究。

# install.packages("palmerpenguins")
library(palmerpenguins)
penguins
#> # A tibble: 344 × 8
#>    species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
#>    <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
#>  1 Adelie  Torgersen           39.1          18.7               181        3750
#>  2 Adelie  Torgersen           39.5          17.4               186        3800
#>  3 Adelie  Torgersen           40.3          18                 195        3250
#>  4 Adelie  Torgersen           NA            NA                  NA          NA
#>  5 Adelie  Torgersen           36.7          19.3               193        3450
#>  6 Adelie  Torgersen           39.3          20.6               190        3650
#>  7 Adelie  Torgersen           38.9          17.8               181        3625
#>  8 Adelie  Torgersen           39.2          19.6               195        4675
#>  9 Adelie  Torgersen           34.1          18.1               193        3475
#> 10 Adelie  Torgersen           42            20.2               190        4250
#> # ℹ 334 more rows
#> # ℹ 2 more variables: sex <fct>, year <int>

该数据集包括8列,其中变量包括企鹅的物种等一系列列名元素。可以通过?penguins查看具体信息。下面将一步步讲解可视化的过程。

1.1 创建ggplot

第一步就是使用函数ggplot()开始绘图,这将定义一个绘图对象,然后添加图层。其中的第一个参数是图形中要使用的数据集,由于我们还没有告诉它要怎么可视化,所以它是空的:

ggplot(data = penguins)

在这里插入图片描述

接下来,要告诉ggplot()如何表示数据中的信息。该函数的mapping参数定义了如何将数据集中的变量映射到绘图的视觉属性(美学aesthetics)中。mapping的参数在aes()函数中进行定义:

ggplot(
  data = penguins,
  mapping = aes(x = flipper_length_mm, y = body_mass_g)
)

在这里插入图片描述

此时空画布上有了更多的结构了,xy轴的信息已经展现在画布上了。

接下来,我们要定义一个几何图形,用于表述数据。ggplot2中可用的几何对象,其函数以geom_开头。比如折线图使用(geom_line)来表示等。使用方法如下:

ggplot(
  data = penguins,
  mapping = aes(x = flipper_length_mm, y = body_mass_g)
) + 
  geom_point()
#> Warning: Removed 2 rows containing missing values (`geom_point()`).

在这里插入图片描述

使用这个图可用得到一些数据的信息。但是我们看到有警告信息:“Removed 2 rows containing missing values”。这是因为数据集中有两只企鹅缺少相关信息。(后续将隐藏警告信息)

1.2 添加美学和图层

我们想要进一步观察每个物种间的数据关系要怎么做呢?我们可用通过不同颜色的点来表示物种来做到这一点。为了实现这一点,可以在aes()内部进行设定。

ggplot(
  data = penguins,
  mapping = aes(x = flipper_length_mm, y = body_mass_g, color = species)
) +
  geom_point()

在这里插入图片描述

当分类变量映射到美学参数时,ggplot2会自动为变量的每个唯一级别分配美学的唯一值(这里分配的是颜色),这一过程称为缩放(scaling)。之后ggplot2还会添加一个图例,解释哪些值对应哪些级别。

现在让我们在添加一层,显示xy轴数据之间关系的平滑曲线。我们使用geom_smooth()函数作为geom_point()顶部的图层进行添加,这里我们指定使用线性模型来绘制拟合曲线:

ggplot(
  data = penguins,
  mapping = aes(x = flipper_length_mm, y = body_mass_g, color = species)
) + 
  geom_point() +
  geom_smooth(method = "lm")

在这里插入图片描述

我们可以看到此时的拟合曲线是根据物种不同分别进行拟合的,这是由于ggplot中的aes参数定义了全局的美学映射,他会传递到后续的图层中。其实,后续的图层也可以选择自己的局部映射,只需在geom函数中设置mapping参数即可。

ggplot(
  data = penguins,
  mapping = aes(x = flipper_length_mm, y = body_mass_g)
) + 
  geom_point(aes(color = species, shape = species)) +
  geom_smooth(method = "lm")

在这里插入图片描述

注意,还可以为美学参数设置形状的美学,使用shape参数进行设定即可。

最后,我们可以在新图层中使用lab()函数更改绘图的标签,也可以使用scale_color_colorblind()函数更改调色板,这个函数存在于ggthemes包中,是一种对色盲友好的颜色组合。

ggplot(
  data = penguins,
  mapping = aes(x = flipper_length_mm, y = body_mass_g)
) +
  geom_point(aes(color = species, shape = species)) +
  geom_smooth(method = "lm") +
  labs(
    title = "Body mass and flipper length",
    subtitle = "Dimensions for Adelie, Chinstrap, and Gentoo Penguins",
    x = "Flipper length (mm)", y = "Body mass (g)",
    color = "Species", shape = "Species"
  ) +
  ggthemes::scale_color_colorblind()

在这里插入图片描述

1.3 简化代码

ggplot()的前两个参数的名称可以省略:

ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g))

这通常可以和管道函数联用:

penguins |> 
  ggplot(aes(x = flipper_length_mm, y = body_mass_g))

二、可视化分布

可视化变量如何分布取决于变量的类型是分类变量还是数值变量。

2.1 分类变量

如果变量只能在特定范围内选择一个,则是分类变量。考察分类变量的分布可以使用条形图,图的高度显示每个x观测值的数量。

ggplot(penguins, aes(x = species)) +
  geom_bar()

在这里插入图片描述

可以看到条形图并未按照一定顺序进行排序,可以通过一定的设置实现排序(后续将会继续介绍关于此函数的高阶技巧):

ggplot(penguins, aes(x = fct_infreq(species))) +
  geom_bar()

在这里插入图片描述

2.2 数值变量

如果变量采用的是各种数值,并且可以对这些数值进行加减求平均等操作,改变量就是数值变量。数值变量可以是连续的也可以是离散的。

连续数值变量的一种常用的可视化方式是直方图。

ggplot(penguins, aes(x = body_mass_g)) +
  geom_histogram(binwidth = 200)

在这里插入图片描述

直方图将x轴分为等间距的条柱,然后使用条形图的高度显示落在每个条柱之间的观测值的数量。可以使用binwidth参数来设置直方图中间隔的宽度,该参数以x变量的单位进行测量。使用直方图的时候,应该始终探索各种binwidth,来找到合适的模式。

另一种可视化方式是密度图。它是直方图的平滑版本。

ggplot(penguins, aes(x = body_mass_g)) +
  geom_density()

在这里插入图片描述

三、可视化关系

为了可视化某些数据的关系,我们至少要在美学中加入两个变量。

3.1 数值变量和分类变量

这些关系可以使用箱型图来展示。该图主体的箱型展示了数据的中位数、1/4位数和3/4位数。两端的竖线为延伸至最远处的非异常点,从箱边往外大于1.5倍的四分位数的值被认为是异常值,将被标出。

ggplot(penguins, aes(x = species, y = body_mass_g)) +
  geom_boxplot()

在这里插入图片描述

或者也可以制作密度图:

ggplot(penguins, aes(x = body_mass_g, color = species, fill = species)) +
  geom_density(linewidth = 0.8, alpha = 0.3) # 可自行设置

在这里插入图片描述

3.2 两个分类变量

两个分类变量之间的关系往往会选择使用堆积图来展示。

ggplot(penguins, aes(x = island, fill = species)) +
  geom_bar()

在这里插入图片描述

另外,可以通过设置geom_bar(position = "fill")来创建相对丰度的图。

3.3 两个数值变量

散点图是该类变量最常选择的图形。前面有过介绍,可以使用geom_pointgeom_smooth结合。

3.4 三个或更多变量

更多变量可以在美学参数中设置不同的美学来进行区分,比如:

ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(color = species, shape = island))

在这里插入图片描述

但是这样的图形会显得比较杂乱,因此我们介绍另一种方式,就是将绘图拆分成为多个分面,每个分面显示一个数据子集的子图。这会使用到facet_wrap(),其第一个参数是一个formula,使用~后跟一个变量名称,传递到其中的变量应该是分类的变量。

ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(color = species, shape = species)) +
  facet_wrap(~island)

在这里插入图片描述

四、保存可视化结果

制作出的图形,可能会希望保存起来使用。这就可以通过ggsave()进行。它可以把最近创建的图形保存在磁盘中。如果不指定width和height,ggsave将会从当前绘图设备中获取尺寸。

ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point()
ggsave(filename = "penguin-plot.png") # 它将会把当前终端命令运行的上一个绘图命令绘制的图形进行存储

总结

在这一节,我们初步学习了如何使用R语言的ggplot2进行数据可视化,也学习了很多类型的图形的画法。我们知道了如何在ggplot绘图时设置相应的美学参数以达到不同的作用效果,另外对于不同类型的数据也分别有不同类型的图形可以很好的展示其中数据的关系。这些对应关系所给出的图形示例都不是唯一的答案,要学会自己去学习新的图形的绘图方法,这是很重要的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

六.生成makefile文件 并基于makefile文件编译opencv

1.点击【Generate】 生成makefile文件 2.进入目录下编译opencv源码&#xff0c;mingw32-make -j 8 3..编译出现报错 4.取消[WITH_OPENCL_D3D11_NV]选项&#xff0c;再次【configure】【generate】 然后再次编译&#xff1a;mingw32-make -j 8

开源模型应用落地-工具使用篇-获取文本向量(五)

一、前言 在之前学习的"开源模型应用落地-工具使用篇"系列文章中&#xff0c;我们已经学会了如何使用向量数据库。然而&#xff0c;还有一个问题一直未解决&#xff0c;那就是如何处理文本向量。在本文中&#xff0c;我们将继续深入学习关于向量的知识&#xff0c;特…

缓存篇—缓存雪崩

什么是缓存雪崩 通常我们为了保证缓存中的数据与数据库中的数据一致性&#xff0c;会给 Redis 里的数据设置过期时间&#xff0c;当缓存数据过期后&#xff0c;用户访问的数据如果不在缓存里&#xff0c;业务系统需要重新生成缓存&#xff0c;因此就会访问数据库&#xff0c;并…

Docker后台启动镜像,如何查看日志信息

执行 docker run -d -p 9090:8080 core-backend-image 命令后&#xff0c;Docker 会在后台运行一个新的容器实例&#xff0c;并映射宿主机的 9090 端口到容器的 8080 端口。要查看启动的容器日志&#xff0c;您需要先获取容器的 ID 或名称&#xff0c;然后使用 docker logs 命令…

如何设置路由器的端口映射?

路由器端口映射是一种常用的网络配置方式&#xff0c;可以将外部网络请求转发到内部网络上的指定设备。通过设置端口映射&#xff0c;我们可以实现远程访问局域网内的设备&#xff0c;使其在任何网络环境下都可以被访问。本文将介绍如何设置路由器的端口映射&#xff0c;以便实…

【前端素材】推荐优质后台管理系统Spica Admin平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;它通常作为一个独立的后台界面存在&#xff0c;供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能&#xff1a; 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

C#最优队列PriorityQueue使用比较器

对30个对象进行优先选择前4个&#xff0c;这个4个根据该对象的Info属性进行判断&#xff0c;它是自定义类型&#xff0c;所以需要用比较器来比较它的大小。 public class CustomType{public int? ID { get; set; }}public class RecSample{public int Name { get; set; }publi…

NLP_构建GPT模型并完成文本生成任务

文章目录 搭建GPT模型&#xff08;解码器&#xff09;构建文本生成任务的数据集训练过程中的自回归文本生成中的自回归&#xff08;贪婪搜索&#xff09;完整代码小结 搭建GPT模型&#xff08;解码器&#xff09; GPT 只使用了 Transformer的解码器部分&#xff0c;其关键组件…

江科大stm32学习笔记——【3-2】GPIO输出:LED闪烁LED流水灯蜂鸣器

&#xff08;一&#xff09; 硬件连接 1.LED闪烁 LED灯正极连接面包板电源正极&#xff0c;LED负极连接单片机A0口 (也可以LED负极连面包板负极&#xff0c;LED正极连接单片机A0口) 跳线连接单片机3.3和面包板正极&#xff0c;连接单片机GND和面包板负极 2.LED流水灯 3.蜂鸣…

DevOps的3大核心基础架构

原文链接&#xff1a;DevOps的3大核心基础架构_软件开发生产线 CodeArts_理论实践_DevOps概览 由于近年DevOps概念的火热&#xff0c;加之DevOps的涵盖面非常广&#xff0c;因此有很多文章和技术都在和DevOps强行关联&#xff0c;使很多想要了解学习DevOps的开发者迷惑不解。 …

Draw.io绘制UML图教程

一、draw.io介绍 1、draw.io简介 draw.io 是一款强大的免费在线图表绘制工具&#xff0c;支持创建流程图、组织结构图、时序图等多种图表类型。它提供丰富的形状库、强大的文本编辑和样式设置功能&#xff0c;使用户能够轻松创建专业级图表。draw.io 具有用户友好的界面&…

Hive【内部表、外部表、临时表、分区表、分桶表】【总结】

目录 Hive的物种表结构特性 一、内部表 建表 使用场景 二、外部表 建表:关键词【EXTERNAL】 场景&#xff1a; 外部表与内部表可互相转换 三、临时表 建表 临时表横向对比​编辑 四、分区表 建表&#xff1a;关键字【PARTITIONED BY】 场景&#xff1a; 五、分桶表 …

ssm+springmvc基于springboot的宠物领养系统的设计与实现_j5fk4

宠物领养系统主要是为了提高管理员的工作效率&#xff0c;满足管理员对更方便、更快、更好地存储所有信息和数据检索功能的要求。通过对多个类似网站的合理分析&#xff0c;确定了宠物领养系统的各个模块。考虑到用户的可操作性&#xff0c;经过深入调查研究&#xff0c;遵循系…

django rest framework 学习笔记-实战商城2

01收货地址模型类和视图定义_哔哩哔哩_bilibili 本博客借鉴至大佬的视频学习笔记 地址信息的管理&#xff1a;增删改查的实现 # 序列化器配置 class AddrSerializer(serializers.ModelSerializer):"""收货地址的模型序列化器"""class Meta:mo…

NXP实战笔记(六):S32K3xx基于RTD-SDK在S32DS上配置PWM发波

目录 1、概述 2、SDK配置 2.1、Port配置 2.2、Emios_Mcl_Ip 2.3、Emios_Pwm 2.4、代码示例 1、概述 针对S32K3xx芯片&#xff0c;产生PWM的硬件支持单元仅有两个&#xff0c;分别是eMiosx与Flexio. 生成PWM的顺序&#xff0c;按照单片机所用资源进行初始化执行如下 初始化…

ELK入门(四)-logstash

Logstash Logstash 是开源的服务器端数据处理管道&#xff0c;能够同时从多个来源采集数据&#xff0c;转换数据&#xff0c;然后将数据发送到您最喜欢的存储库中。 Logstash 能够动态地采集、转换和传输数据&#xff0c;不受格式或复杂度的影响。利用 Grok 从非结构化数据中…

Kotlin基础 7

1.apply函数详解 1.1. DSL /*** 为什么要传入扩展函数(泛型),而不是一个普通的匿名函数* T.()->Unit* 扩展函数里自带了接收者对象的this隐式调用* 为什么是泛型的扩展函数?* 因为是由this 隐式调用 this 类型就是泛型类型&#xff0c; 相当于this的扩展函数&#xff0c;…

短剧小程序开发,重塑视频观看体验的科技革命

随着科技的飞速发展&#xff0c;人们的娱乐方式也在不断变化。短剧小程序作为新兴的数字娱乐形式&#xff0c;以其独特的魅力和巨大的市场潜力&#xff0c;正逐渐成为科技与娱乐结合的代表。本文将探讨短剧小程序的发展背景、优势特点、开发流程以及未来展望。 一、短剧小程序…

MySQL数据库集群技术主从复制 一主一从详细讲解

集群技术 集群概述 MySQL复制技术 集群目的 负载均衡 解决高并发 高可用HA 服务可用性 远程灾备 数据有效性 类型 一主一从 一主双从 双主双从 原理 概念 在主库上把数据更改&#xff08;DDL DML DCL&#xff09;记录到二进制日志&#xff08;Binary Log&#xff09;中…

RISC-V知识总结 —— 指令集

资源1: RISC-V China – RISC-V International 资源2: RISC-V International – RISC-V: The Open Standard RISC Instruction Set Architecture 资源3: RV32I, RV64I Instructions — riscv-isa-pages documentation 1. 指令集架构的类型 在讨论RISC-V或任何处理器架构时&…