利用R语言自带函数快速探索数据

devtools/2024/10/21 7:38:41/

《R Graphics Cookbook》 chapter2 Quickly Exploring Data 快速浏览数据

为了非常快速地浏览数据,有时使用 R 自带的绘图函数很有用

Creating a Scatter Plot 创建一个散点图

要制作散点图,请使用 plot() 并向其传递一个 x 值的向量,后跟一个 y 值的向量

mtcars 数据集为例

plot(mtcars$wt, mtcars$mpg)

也可以使用函数 ggplot() 获得类似的结果

library(ggplot2)ggplot(mtcars, aes(x = wt, y = mpg)) +  # 第一部分:ggplot() ,告诉它创建一个绘图对象geom_point()                          # 第二部分:geom_point(),告诉它叠加一个点图

通常情况下,使用 ggplot() 方法是向它传递一个数据框(例如,mtcars ),然后告诉它哪些列用于 x 和 y 值。
如果你想用两个向量作为 x 和 y 值,则设置 data = NULL
请记住,ggplot2 最初设计是将数据框作为数据来源,而不是单个向量,
所以这种使用方式只能让您使用其功能的有限部分。

ggplot(data = NULL, aes(x = mtcars$wt, y = mtcars$mpg)) +geom_point()

Creating a Line Graph 创建一个折线图

使用 plot() 制作折线图,向其传递 x、y 的向量,并设置 type = "l"

plot(pressure$temperature, pressure$pressure, type = "l")

如果要添加点和/或多条线,首先把 plot() 放在第一行
然后再用 points() 添加点或者用 lines() 附加线

plot(pressure$temperature, pressure$pressure, type = "l")
points(pressure$temperature, pressure$pressure)lines(pressure$temperature, pressure$pressure/2, col = "red")
points(pressure$temperature, pressure$pressure/2, col = "red")

上述代码需要全选一起运行

可以使用 ggplot2,用 geom_line() 获得类似结果

library(ggplot2)
ggplot(pressure, aes(x = temperature, y = pressure)) +geom_line()ggplot(pressure, aes(x = temperature, y = pressure)) +geom_line() +geom_point()

Creating a Bar Graph 创建条形图

如果要画数值条形图:
使用 barplot() ,并将每个 bar 的高度值向量和(可选)每个条形图的标签向量传递给它
如果向量中的元素有名称,名称将自动用作标签

BOD
#>   Time demand
#> 1    1    8.3
#> 2    2   10.3
#> 3    3   19.0
#> 4    4   16.0
#> 5    5   15.6
#> 6    7   19.8barplot(BOD$demand, names.arg = BOD$Time)

如果画计数条形图:
有时,bar 代表每个类别中的个例数。
这与直方图类似,但 X 轴是离散的,而不是连续的。
使用 table() 函数生成向量中每个唯一值的计数,

table(mtcars$cyl)
#> 
#>  4  6  8 
#> 11  7 14barplot(table(mtcars$cyl))

也可以使用 ggplot2 中的 geom_col() 获得类似的结果(绘制数值条形图)
注意 x 变量为连续变量和离散变量时的输出差异

# 数值条形图
# BOD 数据框,"Time" 列作x值,"demand" 列作y值ggplot(BOD, aes(x = Time, y = demand)) +geom_col()# 将 x 转为因子, 当作离散变量处理
# 对于某些类型的数据,使用 factor() 函数将连续 x 变量转换为离散变量可能更有意义
ggplot(BOD, aes(x = factor(Time), y = demand)) +geom_col()

还可以使用 ggplot2 中的 geom_bar() 绘制每个类别中数据行数的计数图

# 计数条形图
# 使用 mtcars 数据集中 cyl 为 x
# 而 y 则表示 cyl 每种数值共有几行 
ggplot(mtcars, aes(x = cyl)) +geom_bar()# 转为因子
ggplot(mtcars, aes(x = factor(cyl))) +geom_bar()

Note:在早期版本的 ggplot2 中,创建数值条形图的推荐方法是使用 geom_bar(stat = "identity") .
ggplot2 2.2.0 开始,有一个 geom_col() 函数可以做同样的事情

Creating a Histogram 创建直方图

直方图纵坐标为频数 Frequency ,适合粗略了解一维数据的分布情况

使用 hist() 画直方图,并选择一个数值向量作为 x

hist(mtcars$mpg)# 通过指定 break 数量来明确箱数
hist(mtcars$mpg, breaks = 10)

也可以使用 ggplot2 中的 geom_histogram() 获得类似结果

library(ggplot2)
ggplot(mtcars, aes(x = mpg)) +geom_histogram()
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
# 当创建直方图而未指定图格宽度时,ggplot()会默认画 30 个箱数# 改为更宽的箱宽
ggplot(mtcars, aes(x = mpg)) +geom_histogram(binwidth = 4)

Creating a Box Plot 创建箱体图

制作箱形图,使用 plot() 并传递 x 值的因子和 y 值的向量
当 x 是一个因子(而不是数值向量)时,它将自动创建一个箱形图:

plot(ToothGrowth$supp, ToothGrowth$len)

如果两个向量在同一个数据框中,可以使用带有公式语法的 boxplot() 函数
它可以将 x 轴上的两个变量组合起来

# Formula syntax 公式语法
boxplot(len ~ supp, data = ToothGrowth)# 将两个变量的交互作用放在 x 轴上
boxplot(len ~ supp + dose, data = ToothGrowth)

使用 ggplot2 包中 geom_boxplot() 也可以画出类似的图形

library(ggplot2)
ggplot(ToothGrowth, aes(x = supp, y = len)) +geom_boxplot()

通过使用 interaction() 将变量组合起来,也可以绘制多个变量的箱形图

ggplot(ToothGrowth, aes(x = interaction(supp, dose), y = len)) +geom_boxplot()

基础图形中的箱形图与 ggplot2 中的箱形图略有不同。
这是因为它们使用略有不同的方法来计算分位数。

Plotting a Function Curve 绘制函数曲线

要绘制函数曲线,使用 curve() 并传递一个带有变量 x 的表达式

curve(x^3 - 5*x, from = -4, to = 4)

可以绘制任何以数值向量作为输入并返回数值向量的函数
包括自定义的函数
使用 add = TRUE 将向先前创建的绘图添加一条曲线:

# 绘制自定义函数
myfun <- function(xvar) {1 / (1 + exp(-xvar + 10))
}
curve(myfun(x), from = 0, to = 20)# 添加曲线:
curve(1 - myfun(x), add = TRUE, col = "red")

使用 ggplot2 中的 stat_function(geom = “line”) ,可以获得类似的结果
传递一个函数,该函数将数字向量作为输入并返回数字向量:

library(ggplot2)
# 将 x 的范围设置为 0 到 20
ggplot(data.frame(x = c(0, 20)), aes(x = x)) +stat_function(fun = myfun, geom = "line")

http://www.ppmy.cn/devtools/27749.html

相关文章

为什么我的Mac运行速度变慢 mac运行速度慢怎么办 如何使用CleanMyMac X修复它

近些年伴随着苹果生态的蓬勃发展&#xff0c;越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现&#xff0c;它的使用逻辑与Windows存在很多不同&#xff0c;而且随着使用时间的增加&#xff0c;一些奇奇怪怪的文件也会占据有限的磁盘空间&#xff0c;进而影响使用…

力扣-977.有序数组的平方

class Solution:def sortedSquares(self, nums: List[int]) -> List[int]:# 使用列表推导式计算每个数字的平方&#xff0c;并排序后返回return sorted(num * num for num in nums)思路&#xff1a; 这段代码实现了一个函数 sortedSquares&#xff0c;它接受一个整数列表 n…

web3以太坊开发,前后端交互中涉及到的合约

在web3以太坊开发中&#xff0c;往往大家交流的时候&#xff0c;会涉及到一些合约相关的词汇&#xff0c;这里重点说两个合约&#xff0c;一个是manager合约&#xff0c;另一个是registry合约。 目录 1 Manager合约 2 Registry合约 2.1 Registry合约可以做什么&#xff1f; …

SpringMVC执行流程

SpringMVC的执行流程&#xff08;介绍核心组件&#xff09; SpringMVC是一个基于Java的开源Web应用程序开发框架&#xff0c;它遵循了MVC&#xff08;Model-View-Controller&#xff09;架构模式。MVC模式是一种将应用程序分为三个主要部分的设计模式&#xff0c;分别是模型&am…

STM32 HAL库F103系列之IIC实验

IIC总线协议 IIC总线协议介绍 IIC&#xff1a;Inter Integrated Circuit&#xff0c;集成电路总线&#xff0c;是一种同步 串行 半双工通信总线。 总线就是传输数据通道 协议就是传输数据的规则 IIC总线结构图 ① 由时钟线SCL和数据线SDA组成&#xff0c;并且都接上拉电阻…

019Node.js的FS模块使用fs.stat检测文件还是目录

初始化项目 npm init或者 npm init --yes//fs.stat 检测是文件还是目录 const fsrequire(fs); //fs.stat(./html,function(err,data){fs.stat(./html,(err,data)>{if(err){console.log(err);return;}console.log(是文件${data.isFile()});console.log(是目录${data.isDire…

JMeter 请求头信息配置详解

在进行 Web 测试和 API 测试时&#xff0c;正确配置 HTTP 请求头是关键步骤之一&#xff0c;尤其当使用诸如 JMeter 这样的强大工具时。在本文中&#xff0c;我将详细介绍如何在 JMeter 中有效地配置和管理HTTP请求头。 在 JMeter 中添加和配置 HTTP 请求头 步骤 1: 打开 HTT…

自动化测试web库(元素定位、元素操作、浏览器操作)

按照谷歌浏览器 Chrome &#xff1a;https://googlechromelabs.github.io/chrome-for-testing/ Chrome使用技巧&#xff1a; 1、找到自己想要的标签 打开检查&#xff0c;点击箭头&#xff0c;再点击你想要点击的地方 2、直接在浏览器上查询&#xff0c;看看是否查询成功 可…