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

《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.8

barplot(BOD$demand, names.arg = BOD$Time)

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

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

barplot(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.mfbz.cn/a/586543.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

建堆时间复杂度

片头 嗨&#xff01;小伙伴们&#xff0c;大家好&#xff01; 在上一篇中&#xff0c;我们学习了什么是堆&#xff0c;以及如何实现堆。这一篇中&#xff0c;我将继续带领大家来深入学习堆&#xff0c;准备好了吗&#xff1f;我要开始咯&#xff01; 首先&#xff0c;大家还记…

opencv_17_翻转与旋转

一、图像翻转 1&#xff09;void flip_test(Mat& image); 2&#xff09;void ColorInvert::flip_test(Mat& image) { Mat dst; //flip(image, dst, 0); //上下翻转 flip(image, dst, 1); //左右翻转 // flip(image, dst, -1); //180度翻转 imsho…

VScode 无法连接云服务器

试了很多方法&#xff0c;比如更换VScode版本&#xff0c;卸载重装&#xff0c;删除配置文件 重启电脑&#xff0c;都无法成功。最后重置电脑后才连接上&#xff0c;但是重启服务器后又出现该问题。 方法一&#xff1a;修改环境 方法二&#xff1a;把vscode卸载干净重下

【快速入门】数据库的增删改查与结构讲解

文章的操作都是基于小皮php study的MySQL5.7.26进行演示 what 数据库是能长期存储在计算机内&#xff0c;有组织的&#xff0c;可共享的大量数据的集合。数据库中的数据按照一定的数据模型存储&#xff0c;具有较小的冗余性&#xff0c;较高的独立性和易扩展性&#xff0c;并为…

LabVIEW智能变电站监控系统设计与实现

LabVIEW智能变电站监控系统设计与实现 随着电力系统和智能化技术的快速发展&#xff0c;建立一个高效、可靠的变电站监控系统显得尤为重要。通过分析变电站监控系统的需求&#xff0c;设计了一个基于LabVIEW软件的监控平台。该平台利用虚拟仪器技术、传感器技术和无线传输技术…

数据结构中的栈(C语言版)

一.栈的概念 栈是一种常见的数据结构&#xff0c;它遵循后进先出的原则。栈可以看作是一种容器&#xff0c;其中的元素按照一种特定的顺序进行插入和删除操作。 压栈&#xff1a;栈的插入操作叫做进栈/压栈/入栈&#xff0c;入数据在栈顶。 出栈&#xff1a;栈的删除操作叫做…

2024年的十大技术趋势 - AI 等等

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

网优小工具-基站ID行列转换

网优小工具&#xff0d;基站ID行列转换 因在日常工作需要对基站ID批量行转列&#xff0c;以方便在网管上批量筛选指定网元&#xff0c;该小工具基于微软Power Query插件编写&#xff0c;工具方便、简洁、易用&#xff0c;共享出来以方便工作。 工作界面 &#xff11;.粘贴需筛…

学习VUE2第6天

一.请求拦截器 可以节流&#xff0c;防止多次点击请求 toast是单例 二.前置路由守卫 在Vue.js中&#xff0c;前置路由守卫是指在路由转换实际发生之前执行的钩子函数。这是Vue Router&#xff08;Vue.js官方的路由管理器&#xff09;提供的一种功能&#xff0c;允许开发者在用…

中兴UME网管LTE共享参数配置-PLMN添加

本文为中兴设备UME网管电联中频共享参数配置&#xff0c;PLMN添加参数配置部分&#xff0c;因UME与U&#xff13;&#xff11;网管添加PLMN配置区别较大&#xff0c;UME网管需同时配置运营商EN&#xff0d;DC策略&#xff0c;相关配置流程及参数配置如下文。 PLMN eNodeB CU …

与 Apollo 共创生态:观看7周年大会的心路历程

前言 在科技飞速发展的今天&#xff0c;自动驾驶技术已然成为行业创新的热点之一。作为一名长期关注自动驾驶领域的技术人员&#xff0c;我有幸见证了Apollo平台的成长与壮大。七年前&#xff0c;Apollo的诞生为我们带来了无尽的想象与期待&#xff1b;七年后的今天&#xff0…

【自研网关系列】过滤器链 -- 灰度发布过滤器

&#x1f308;Yu-Gateway&#xff1a;&#xff1a;基于 Netty 构建的自研 API 网关&#xff0c;采用 Java 原生实现&#xff0c;整合 Nacos 作为注册配置中心。其设计目标是为微服务架构提供高性能、可扩展的统一入口和基础设施&#xff0c;承载请求路由、安全控制、流量治理等…

【介绍下Unity编辑器扩展】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

ubuntu下安装配置python3.11

方案1 添加仓库&#xff1a; $ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt update $ sudo apt install python3.11然后查看有多少个python版本已经安装了&#xff1a; ls -l /usr/bin/python*python2.7,python 3.8 ,python 3.11. 然后&#xff0c;设置系统默认…

Android4.4真机移植过程笔记(一)

1、RK源码编译 获取内核源码&#xff1a; git clone git172.28.1.172:rk3188_kernel -b xtc_ok1000 内核编译环境&#xff1a; 从172.28.1.132编译服务器的/data1/ZouZhiPing目录下拷贝toolchain.tar.gz&#xff08;交叉编译工具链&#xff09;并解压到与rk3188_kernel同级目…

Visual Studio中怎样更改Nuget程序包源

场景 Visual Studio 2019 在使用NuGet添加依赖包时&#xff0c;在预览中搜索不到程序包。 排查下NuGet的程序包源为本地。 将程序包源修改下。 实现 在解决方案上右击选择管理解决方案中的NuGet程序包(在 Visual Studio 中打开“工具”>“选项”>“NuGet 包管理器”…

【配置】Docker搭建JSON在线解析网站

云服务器打开端口8787 连接上docker运行 docker run -id --name jsonhero -p 8787:8787 -e SESSION_SECRETabc123 henryclw/jsonhero-webhttp://ip:8787访问 Github&#xff1a;地址

考研数学|《880题》不会做,怎么办?

如果880大部分都不会做&#xff0c;说明基础掌握太差&#xff0c;如果已经到了10月底&#xff0c;我建议直接刷知能行吧。因为我一个同学经历和你类似&#xff0c;最后通过一个月高强度刷知能行算是补救了一些。 对于刚开始准备考研的同学和上面的题主&#xff0c;我想聊几句建…

PCIe协议之RCB、MPS、MRRS详解

✨前言&#xff1a; PCIe总线的存储器写请求、存储器读完成等TLP中含有数据负载&#xff0c;即Data Payload。Data Payload的长度和MPS&#xff08;Max Payload Size&#xff09;、MRRS&#xff08;Max Read Request Size&#xff09;和RCB&#xff08;Read Completion Bounda…

物联网实战--平台篇之(二)基础搭建

目录 一、Qt工程创建 二、数据库知识 三、通信协议 四、名词定义 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 一、Qt工程…
最新文章