利用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.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.mzph.cn/news/830705.shtml

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

相关文章

Spark SQL编程初级实践

参考链接 Spark编程: Spark SQL基本操作 2020.11.01_df.agg("age"->"avg")-CSDN博客 RDD编程初级实践-CSDN博客 Spark和Hadoop的安装-CSDN博客 1. Spark SQL基本操作 { "id":1 , "name":" Ella" , "age":…

使用多网络和Kubernetes转变您的通讯应用程序

传统的 Kubernetes 网络在基本的 Pod 到 Pod 连接方面表现出色&#xff0c;但在满足通讯工作负载的安全性、性能和合规性要求时可能存在不足。这限制了通讯提供商充分利用 Kubernetes 的可扩展性和敏捷性优势的能力。 Google Cloud 的多网络方法使通讯提供商能够克服这些限制&a…

笔记-PPT绘图导出高清无失真图片

问题描述&#xff1a;PPT绘图已经用了高清图&#xff08;jpg、tif格式&#xff09;&#xff0c;但论文图片还是不清晰&#xff0c;打印出来还是有点糊 以下是PPT导出高清不失真图片&#xff08;emf格式&#xff09;的具体描述。 目录 一、绘图工具二、操作步骤 一、绘图工具 …

数据挖掘之基于Lightgbm等多模型消融实验的信用欺诈检测实现

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在当前的金融环境中&#xff0c;信用欺诈行为日益增多&#xff0c;给金融机构和消费者带来了巨大的损…

【已解决】pandas读excel中长数字变成科学计数法的问题

pandas 读excel中的长数字时&#xff0c;即使excel中已经设置为文本&#xff0c;读进df后也会自动变成科学计数法。 在日常的数据分析和处理工作中&#xff0c;Excel和pandas是数据分析师们不可或缺的得力助手。然而&#xff0c;在使用pandas读取Excel文件时&#xff0c;我们有…

Spring Boot的热部署工具“AND”Swagger测试工具

Spring Boot的热部署&Swagger测试页面的使用 热部署指的是在项目无需重启的情况下&#xff0c;只需要刷新页面&#xff0c;即可获得已经修改的样式或功能。要注意该工具一般用于开发环境&#xff0c;在生产环境中最好不要添加这个工具。 对于无需重启便可刷新这么方便的工…

【linux-1-Ubuntu常用命令-vim编辑器-Vscode链接ubuntu远程开发】

目录 1. 安装虚拟机Vmare和在虚拟机上安装Ubuntu系统&#xff1a;2. 常用的Ubuntu常识和常用命令2.1 文件系统结构2.2 常用命令2.3 vim编辑器 3. Ubuntu能联网但是ping不通电脑&#xff1a;4. Windows上安装VScode链接ubuntu系统&#xff0c;进行远程开发&#xff1a; 1. 安装虚…

理解sourcemap:调试和部署的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

根据顶层的id递归查询出全部子节点

效果图 根据输入的id为2查询出所有的红色框起来的节点 mapper接口 TSystemOrg getOrgByorgId(String orgId); List<TSystemOrg> getOrgListByParentId(String parentId);mapper.xml <!--根据id查询org--> <select id"getOrgByorgId" resultType&…

【JVM】简述类加载器及双亲委派机制

双亲委派模型&#xff0c;是加载class文件的一种机制。在介绍双亲委派模型之前&#xff0c;我需要先介绍几种类加载器&#xff08;Class Loader&#xff09;。 1&#xff0c;类加载器 Bootstrap&#xff0c;加载lib/rt.jar&#xff0c;charset.jar等中的核心类&#xff0c;由…

【算法】【贪心算法】【leetcode】870. 优势洗牌

题目地址&#xff1a;https://leetcode.cn/problems/advantage-shuffle/description/ 题目描述&#xff1a; 给定两个长度相等的数组 nums1 和 nums2&#xff0c;nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引 i 的数目来描述。 返回 nums1 的任意排列&…

界面组件DevExpress中文教程 - 如何在Node.js应用中创建报表?

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 获取DevExpress Reporting最新正式版下载(Q技术…

【SQL Server】入门教程-基础篇(三)

目录 前言 SQL 常用函数学习 AVG – 平均值 COUNT – 汇总函数 ​编辑MAX – 最大值 ​编辑MIN – 最小值 ​编辑SUM – 求和 UCASE/UPPER – 大写 LCASE/LOWER – 小写 ROUND – 数值取舍 NOW/SYSDATE – 当前时间 前言 这一篇博客&#xff0c;是Sql Server函数学…

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例 文章目录 1.前言2.编译2.1版本说明2.2 seatunnel2.3.4-release分支配置2.3maven调优配置 3.web1.0.0适配3.1配置文件修改和新增文件3.2手动拷贝jar修改依赖3.3修改web不兼容的代码3.4 web编译打包 4.运行m…

什么是 Web3 的生成式 AI?

从 Web 1.0 的静态、单向通信到 Web 2.0 的动态、用户驱动的格局&#xff0c;互联网在二十年的时间里经历了一场显着的转变。现在&#xff0c;当我们站在 Web 3.0 时代的边缘时&#xff0c;我们正在见证更具颠覆性的事物的曙光&#xff1a;生成式人工智能 (AI) 融入我们的数字世…

DB-GPT部署验证

一、DB-GPT简介 DB-GPT是一个开源的数据库领域大模型框架。目的是构建大模型领域的基础设施&#xff0c;通过开发多模型管理、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作等多种技术能力&#xff0c;让围绕数据库构建大模型应用更简单&#xff0c;更方便。 GITHU…

找不到msvcr120.dll怎么办,msvcr120.dll丢失的5种修复方法分享

计算机系统在运行某应用程序时无法正常启动&#xff0c;具体表现为缺少了一个至关重要的动态链接库文件——msvcr120.dll。这个DLL文件是微软Visual C Redistributable Package的一部分&#xff0c;对于确保许多基于Windows平台的软件能够顺利运作起着不可或缺的作用。msvcr120…

C、Minimizing the Sum(线性dp)

思路&#xff1a; 用dp[i][j] 来表示前i个数操作了j次的最小和&#xff0c;然后对于每个a[i]&#xff0c;我们分别枚举i前面操作了x次以及后面操作了j次&#xff0c;对于每次操作&#xff0c;都是将一段区间全换位区间最小值. 代码&#xff1a; void solve(){int n, k;cin &…

springboot mongodb分片集群事务

前置 mongodb分片集群想要使用事务,需要对应分片没有仲裁节点 代码 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>2.1.0.RELEASE</version></d…

手拉手CentOS 安装 mysql-5.7

MySQL是一种关系型数据库管理系统&#xff0c;关系数据库将数据保存在不同的表中&#xff0c;而不是将所有数据放在一个大仓库内&#xff0c;这样就增加了速度并提高了灵活性。 tar.gz包安装 #如没有安装wget则无法使用&#xff0c;以装&#xff0c;则直接省略该步~&#xff…