基于R语言的统计分析基础:使用ggplot2包进行绘图

安装ggplot2包并查看官方文档

ggplot2是一个基于图形语法的R包,它允许用户通过声明式方式指定数据、美学映射和图形元素来灵活创建复杂且美观的可视化图表。
ggplot2包官方教学文档:ggplot2官方文档
在R语言中安装ggplot2有两种方法:

    1. 安装整个tidyverse套件tidyverse是一个包含多个用于数据科学的R包的集合,其中包括ggplot2tidyverse涵盖了数据科学的整个工作流程,包括数据导入、清洗、转换、可视化、建模以及文档沟通等多个方面。如果想使用tidyverse中的多个包,安装整个套件可能更方便,但是加载整个tidyverse可能会增加会话的启动时间,并且如果不需要套件中的所有包,这可能会占用不必要的内存。
install.packages("tidyverse")
    1. 仅安装ggplot2:如果只需要使用ggplot2包,而不需要tidyverse中的其他包,可以单独安装它。只需在R交互式页面运行以下命令:
install.packages("ggplot2")

在安装完成ggplot2包后再R脚本或者R交互式页面输入命令即可导入该包

library(ggplot2)

在交互式页面中输入命令即可查看包的文档和示例代码:

help("ggplot2")

在这里插入图片描述
命令运行后再右下角会显示包的文档,点击连接可以查看包的详细信息:
在这里插入图片描述
也可以在Package栏目中,点击ggplot2,随后点击函数名称查看官方的教学文档
在这里插入图片描述
在这里插入图片描述

ggplot2包中的函数、美学特性及其他功能列表

美学特性(Aesthetics)

  • aes:构建美学映射。
  • aes_ 函数:特定美学映射,如颜色、填充、透明度、线型、大小、形状和位置。
  • after_scale和after_stat:控制缩放或统计转换后的美学评估。

注释(Annotations)

  • annotate:创建注释层。
  • annotation_ 函数:特定注释类型,如自定义图形对象(grobs)、对数刻度标记、地图和光栅图像。

坐标(Coordinates)

  • coord_ 函数:定义不同的坐标系统,如笛卡尔坐标、翻转笛卡尔坐标、地图投影、极坐标和变换笛卡尔坐标。

数据(Data)

  • cut_ 函数:将数值数据离散化为分类形式。

以下为ggplot2包中的自带数据集:

  • diamonds:钻石价格数据集。
  • economics:美国经济时间序列数据集。
  • faithfuld:老忠实喷泉数据的二维密度估计。
  • midwest:中西部人口统计数据集。
  • mpg:汽车燃油经济性数据集。
  • msleep:哺乳动物睡眠模式数据集。
  • presidential:总统任期数据集。
  • seals:海豹活动数据集。
  • txhousing:德克萨斯州房屋销售数据集。

分面(Faceting)

  • facet_grid和facet_wrap:将面板布局为网格或将它们包裹成二维带状结构。

几何对象(Geometries)

  • geom_ 函数:定义不同类型的几何对象,如参考线(abline)、面积图(area)、条形图(bar)、二维箱形图(bin2d)、空白(blank)、箱线图(boxplot)、颜色(col)、等高线图(contour)、计数(count)、交叉条形图(crossbar)、曲线(curve)、密度图(density)、二维密度图(density2d)、点密度图(dotplot)、误差条(errorbar)、水平误差条(errorbarh)、频率多边形(freqpoly)、函数图(function)、六边形图(hex)、直方图(histogram)、水平线(hline)、抖动点图(jitter)、标签(label)、折线图(line)、线段图(linerange)、地图(map)、路径图(path)、点图(point)、点段图(pointrange)、多边形图(polygon)、QQ图(qq)、QQ线图(qq_line)、分位数图(quantile)、光栅图(raster)、矩形图(rect)、带状图(ribbon)、地毯图(rug)、线段图(segment)、简单要素(sf)、简单要素标签(sf_label)、简单要素文本(sf_text)、平滑曲线图(smooth)、辐条图(spoke)、阶梯图(step)、文本图(text)、瓦片图(tile)、小提琴图(violin)和垂直线(vline)。

指南(Guides)

  • guide_ 函数:为比例尺定义不同类型的指南,如轴、色条、图例和自定义指南。

标签(Labels)

  • labs:修改轴、图例和绘图标签。
  • labeller和labellers:构建和使用标签规范。

图层(Layers)

  • layer_ 函数:定义图层的不同方面,如几何显示、位置调整和统计转换。

比例尺(Scales)

  • scale_ 函数:为美学特性定义不同类型的比例尺,如透明度、颜色、填充、线型、线宽、半径、形状、大小以及x和y的位置比例尺。

统计(Statistics)

  • stat_ 函数:定义不同的统计转换,如对齐(align)、一维箱形图(bin)、二维箱形图(bin2d)、六边形箱形图(binhex)、箱线图(boxplot)、等高线图(contour)、计数(count)、密度图(density)、二维密度图(density2d)、经验累积分布函数图(ecdf)、椭圆图(ellipse)、函数图(function)、恒等变换(identity)、QQ图(qq)、QQ线图(qq_line)、分位数图(quantile)、简单要素(sf)、简单要素坐标(sf_coordinates)、平滑曲线图(smooth)、辐条图(spoke)、求和(sum)、摘要(summary)、二维摘要(summary2d)、摘要箱形图(summary_bin)、摘要六边形图(summary_hex)、唯一值(unique)和y方向密度图(ydensity)。

主题(Themes)

  • theme:修改主题的组件。
  • theme_ 函数:定义完整的主题或特定的主题元素,如空白、线、矩形和文本。
  • theme_get、theme_set、theme_replace、theme_update:获取、设置和修改活动主题。

杂项(Miscellaneous)

  • %+%+.gg:向绘图添加组件。
  • %+replace%:替换活动主题的组件。
  • 其他实用函数和数据集。

ggplot2包应用示例

ggplot()函数的基础使用方法

ggplot2 是 R 语言中一个极为强大的数据可视化包,它基于 The Grammar of Graphics 设计哲学,允许用户以声明式的方式创建复杂而优雅的图形。ggplot() 函数是 ggplot2 包的核心,用于初始化一个绘图对象,该对象可以进一步通过添加各种图层(如几何对象、统计变换、坐标系统等)来丰富和完善。

ggplot() 函数的基本使用方法

ggplot() 函数的基本语法如下:

ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())
  • data: 一个数据框(data frame)或能够被转换为数据框的对象,它包含了绘图所需的数据。
  • mapping: 一个使用 aes() 函数创建的映射对象,定义了数据中的变量如何映射到图形的美学属性(如 x 轴、y 轴、颜色、大小等)。
  • ...: 其他传递给 ggplot() 的参数,这些参数通常不常用。
  • environment: 一个环境对象,通常不需要手动指定,它默认使用调用 ggplot() 的环境。
标准编写方式

在使用 ggplot2 创建图形时,通常遵循以下步骤:

  1. 初始化绘图对象:使用 ggplot() 函数,并指定数据和映射。
  2. 添加几何对象:使用 + 操作符连接几何函数(如 geom_point()geom_line()geom_bar() 等),这些函数定义了数据的可视化方式。
  3. 调整图层和美学:可以通过添加其他图层(如统计变换、坐标系统、分面等)和设置美学属性(如颜色、大小、形状等)来进一步定制图形。
  4. 显示或保存图形:最后,使用 print() 函数(可以省略,RStudio 会自动显示图形)或 ggsave() 函数将图形保存到文件。

以下是一个使用 ggplot2 创建散点图的标准示例:

library(ggplot2)

# 建立一个名为df的数据框,包含x和y两个变量
# df <- data.frame(x = 1:10, y = rnorm(10))

# 初始化绘图对象,并指定x和y的映射
p <- ggplot(data = df, mapping = aes(x = x, y = y))

# 添加散点图的几何对象
p <- p + geom_point()

# 调整美学属性
p <- p + theme_minimal() + labs(title = "散点图示例", x = "X 轴", y = "Y 轴")

# 显示图形
print(p)

# 将图形保存到文件
# ggsave("scatter_plot.png", plot = p, width = 6, height = 4)

在这里插入图片描述

在这个示例中,先使用 ggplot() 函数初始化了一个绘图对象 p,并指定了数据 df 以及 xy 的映射。然后,我们使用 + 操作符添加了 geom_point() 函数来创建散点图。接着,我们通过添加 theme_minimal()labs() 函数来调整了图形的美学属性和标签。最后,我们使用 print() 函数显示了图形(在 RStudio 中这一步通常是自动的),或者使用 ggsave() 函数将图形保存到文件中。

绘制直方图

这里使用了ggplot2包中自带的diamonds(钻石价格数据集)data = diamondsaes(x = price) 定义了映射,将price变量映射到x轴。
geom_histogram(binwidth = 500, fill = "blue", color = "black", alpha = 0.7) 添加了直方图几何对象,并设置了组距(binwidth)为500,填充颜色为蓝色,边框颜色为黑色,透明度为0.7。
labs(title = "Price Distribution of Diamonds", x = "Price ($)", y = "Count") 添加了标题和轴标签。
theme_minimal() 是一个可选步骤,用于应用简洁的主题样式。

library(ggplot2)  

ggplot(data = diamonds, aes(x = price)) +  
  geom_histogram(binwidth = 500, fill = "blue", color = "black", alpha = 0.7) +  
  labs(title = "钻石价格分布图", x = "价格", y = "数量")

在这里插入图片描述

绘制折线图

这里使用了R语言自带的mtcars小车车数据集

library(ggplot2)  

ggplot(data = mtcars, aes(x = mpg, y = disp)) +  
  geom_line(color = "red") +  
  labs(title = "汽车每加仑行驶里程与排量的关系", x = "每加仑行驶里程(mpg)", y = "排量(disp)")

在这里插入图片描述

绘制多折线的折线图
ggplot(data = mpg, aes(x = displ, y = hwy, color = drv)) +  
  geom_line() +  
  labs(title = "不同驱动类型的高速公路里程", x = "排量(升)", y = "高速公路里程(mpg)")

在这里插入图片描述

绘制散点图
library(ggplot2)

ggplot(mpg, aes(displ, hwy, colour = class)) + 
  geom_point()

在这里插入图片描述

绘制箱型图

箱型图(Box Plot)又称为箱线图或盒须图,是一种用于显示一组数据分散情况资料的统计图。它能显示出一组数据的最大值、最小值、中位数、下四分位数和上四分位数,从而直观地展现数据的分布特征和异常值。

library(ggplot2)  

# 使用iris数据集  
data(iris)  

ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +  
  geom_boxplot() +  
  labs(title = "Sepal Length Boxplot by Species",  
       x = "Species",  
       y = "Sepal Length")
绘制饼图
library(ggplot2)

# 使用mtcars数据集  
data(mtcars)  

# 计算每个缸数的数量  
cyl_counts <- table(mtcars$cyl)  

# 转换为数据框并计算比例  
cyl_df <- as.data.frame(cyl_counts)  
cyl_df$proportion <- cyl_df$Freq / sum(cyl_df$Freq)  

# 绘制饼图(注意:ggplot2没有直接的饼图函数,我们使用coord_polar转换)  
ggplot(cyl_df, aes(x = "", y = proportion, fill = Var1)) +  
  geom_bar(width = 1, stat = "identity") +  
  coord_polar(theta = "y") +  
  labs(title = "Pie Chart of Car Cylinders",  
       fill = "Cylinders") +  
  theme_void()

在这里插入图片描述

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

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

相关文章

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

GEE 将本地 GeoJSON 文件上传到谷歌资产

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;Google Earth Engine&#xff08;GEE&#xff09;是一个强大的平台&#xff0c;它允许用户处理和分析大规模地理空间数据。本文将介绍如何使用 Python 脚本批量上传本地 GeoJSON 文件到 GEE 资产存储&#xff0c;这对…

初识C++|继承

&#x1f36c; mooridy-CSDN博客 &#x1f9c1;C专栏&#xff08;更新中&#xff01;&#xff09; 目录 1. 继承的概念及定义 1.1 继承的概念 1.2 继承定义 1.2.1 定义格式 1.2.2 继承父类成员访问方式的变化 1.3继承类模板 2. 父类和子类对象赋值兼容转换 3. 继承中的…

国内外大模型汇总(包括科大星火、文心一言、通义千问、智普清言、华为大模型)

国内外大模型汇总 1. 科大讯飞星火认知大模型 主要特点&#xff1a; 多语言能力&#xff1a;以中文为核心&#xff0c;同时支持多语言处理&#xff0c;能够进行跨语种的语言理解和生成。 广泛的任务能力&#xff1a;具备内容生成、语言理解、知识问答、推理、数学计算、代码…

数学建模笔记—— 主成分分析(PCA)

数学建模笔记—— 主成分分析 主成分分析1. 基本原理1.1 主成分分析方法1.2 数据降维1.3 主成分分析原理1.4 主成分分析思想 2. PCA的计算步骤3. 典型例题4. 主成分分析说明5. python代码实现 主成分分析 1. 基本原理 在实际问题研究中,多变量问题是经常会遇到的。变量太多,无…

小怡分享之栈和队列

前言&#xff1a; &#x1f308;✨前面小怡给大家分享了顺序表和链表&#xff0c;今天小怡给大家分享一下栈和队列。 1.栈 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#x…

WPF中依赖属性或附加属性的继承

引言 我们可以轻易的编写一个附加属性类&#xff0c;增加任意类型的附加属性并编写一定的逻辑来处理附加值的变化通知。假如控件是我们自定义的一个label、button 、textbox等&#xff0c;自定义控件当然是其他基础类型元素的组合&#xff0c;如shape、line、rectangle、geome…

针对SVM算法初步研究

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd;心态决定高度&#xff0c;细节决定成败…

从OracleCloudWorld和财报看Oracle的转变

2024年9月9-12日Oracle Cloud World在美国拉斯维加斯盛大开幕 押注AI和云 Oracle 创始人Larry Ellison做了对Oracle战略和未来愿景的主旨演讲&#xff0c;在演讲中Larry将AI技术和云战略推到了前所未有的高度&#xff0c;从新的Oracle 23c改名到Oracle23ai&#xff0c;到Oracl…

活动|华院计算宣晓华受邀出席“AI引领新工业革命”大会,探讨全球科技的最新趋势

8月31日&#xff0c;“AI引领新工业革命”大会于上海图书馆圆满落幕。本次大会由TAA校联会和台协科创工委会联合主办&#xff0c;得到上海市台办、上海市台联、康师傅的大力支持。大会邀请了NVIDIA全球副总裁、亚太区企业营销负责人刘念宁&#xff0c;元禾厚望资本创始合伙人潘…

828华为云征文|华为云Flexus X实例docker部署Jitsi构建属于自己的音视频会议系统

828华为云征文&#xff5c;华为云Flexus X实例docker部署Jitsi构建属于自己的音视频会议系统 华为云最近正在举办828 B2B企业节&#xff0c;Flexus X实例的促销力度非常大&#xff0c;特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求&a…

[Web安全 网络安全]-文件包含漏洞

文章目录&#xff1a; 一&#xff1a;前言 1.什么是文件包含漏洞 2.文件包含漏洞的成因 3.文件包含漏洞的分类 4.文件包含漏洞的防御策略 5.文件包含函数&#xff08;触发点Sink&#xff09; 6.环境 6.1 靶场 6.2 其他工具 二&#xff1a;文件包含LFI labs靶场实验…

docker-01 创建一个自己的镜像并运行容器

docker-01 创建一个自己的镜像并运行容器 前言 我们都知道使用Docker的镜像可以快速创建和部署应用&#xff0c;大大的节约了部署的时间。并且Docker 的镜像提供了除内核外完整的运行时环境&#xff0c;确保代码的环境一致性&#xff0c;从而不会在出现这段代码在我机器上没问…

YoloV10改进策略:上采样改进|动态上采样|轻量高效,即插即用(适用于分类、分割、检测等多种场景)

摘要 本文使用动态上采样改进YoloV10,动态上采样是今天最新的上采样改进方法,具有轻量高效的特点,经过验证,在多个场景上均有大幅度的涨点,而且改进方法简单,即插即用! 论文:《DySample:Learning to Upsample by Learning to Sample》 论文:https://arxiv.org/pdf/…

老旧电力系统安全隐患增加 该如何预防电气线路老化等因素引发的电气火灾呢?

为应对我国电气火灾事故频发的挑战&#xff0c;安科瑞电气股份有限公司开发了AcrelCloud-6000安全用电管理云平台。这一平台依托移动互联网和云计算技术&#xff0c;结合物联网传感器&#xff0c;将办公楼、学校、医院、工厂、体育场馆、宾馆及福利院等人员密集场所的电气安全数…

0x07 Nginx越界读取缓存漏洞 CVE-2017-7529 复现

参考&#xff1a; Nginx越界读取缓存漏洞 CVE-2017-7529 | PeiQi文库 (wgpsec.org)Nginx越界读取缓存漏洞&#xff08;CVE-2017-7529&#xff09;复现分析 - qweg_focus - 博客园 (cnblogs.com) 一、fofa 搜索 nginx && port"80" 我这里写了个脚本将ip保存…

启明云端乐鑫代理商,乐鑫ESP32无线芯片方案,物联网设备WiFi联动控制

随着智能和远程技术的飞速发展&#xff0c;物联网(IoT)逐渐出现在我们生活的每一个角落。乐鑫以其创新的无线通信技术&#xff0c;正成为智能家居、工业自动化和医疗设备等领域的推动者。 无线WiFi芯片模组不仅提供了强大的数据处理能力&#xff0c;还赋予了设备以直观的交互方…

Web 基础——Apache

Event Worker 的升级版、把服务器进程和连接进行分析&#xff0c;基于异步 I/O 模型。 请求过来后进程并不处理请求&#xff0c;而是直接交由其它机制来处理&#xff0c;通过 epoll 机制来通知请求是否完成&#xff1b; 在这个过程中&#xff0c;进程本身一直处于空闲状态&am…

Qt常用控件——QLCDNumber

文章目录 QLCDNumber核心属性倒计时小程序倒计时小程序相关问题 QLCDNumber核心属性 QLCDNumber是专门用来显示数字的控件&#xff0c;类似于这样&#xff1a; 属性说明intValue获取的数字值(int).value获取的数字值(double)和intValue是联动的例如value设为1.5&#xff0c;in…

第十一周:机器学习

第十一周周报 摘要Abstract机器学习1. 注意力机制&#xff08;下&#xff09;1.1 multi-head self-attention&#xff08;多头注意力机制&#xff09;1.2 Positional Encoding&#xff08;位置编码&#xff09;1.3 truncated self attention&#xff08;截断式注意力机制&#…