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

news2024/11/26 2:21:51

安装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()

在这里插入图片描述

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

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

相关文章

【SQL】百题计划:SQL判断条件OR的使用。

【SQL】百题计划-20240912 Select name, population, area from World where area>3000000 or population > 25000000;

替换传统数据处理平台,TDengine 与华风数据达成合作

在全球能源转型的大背景下&#xff0c;新能源产业正迎来前所未有的发展机遇。随着国家对可再生能源的政策支持和市场需求的不断增长&#xff0c;风电、光伏和储能等新能源项目如雨后春笋般蓬勃发展。然而&#xff0c;随之而来的数据处理与管理挑战也日益凸显。面对海量的设备运…

YOLO-v8:对yolov8网络的改进教程(以GAM注意力模块为例)

本文将介绍如何在YOLOv8网络中进行模块化修改。 通过将改进的核心模块添加到项目中&#xff0c;即可直接运行各种 YOLOv8-xxx.yaml 网络配置文件&#xff0c;支持乐高式创新扩展。无论是进行网络结构的调整还是增加新的功能模块&#xff0c;用户只需一键运行&#xff0c;轻松实…

净赚百亿背后,海尔智家的机遇与隐忧

广撒网、出海忙&#xff0c;海尔智家如何熬过存量周期&#xff1f; 转载&#xff1a;科技新知 原创 作者丨田箫 编辑丨赛柯 冰箱、空调、洗衣机不好卖了&#xff0c;已成为不争的事实。 在购房热情降温、收入预期低迷的双重打击下&#xff0c;白电品牌正艰难求生。然而&#x…

通过ASCII码打印HelloWorld(花式打印HelloWorld)

/*** 通过ASCII码打印HelloWorld*/ public class Main {public static void main(String[] args) {String target "HelloWorld";String fi "";for (int i 0; i < target.length(); i) {for (int x 0; x < 127; x) {char c (char) x;String d f…

怎么利用短信接口发送文字短信

在当今这个快节奏的数字时代&#xff0c;即时通讯已成为人们日常生活和工作中不可或缺的一部分。而短信接口&#xff08;SMS Interface&#xff09;&#xff0c;作为传统与现代通讯技术结合的典范&#xff0c;凭借其高效、稳定、广泛覆盖的特性&#xff0c;在众多领域发挥着不可…

K8s中HPA自动扩缩容及hml

1.HPA&#xff1a;基于cpu的利用率来动态实现pod数量的自动伸缩&#xff0c;创建的方法一种是yaml文件&#xff0c;一种是命令行&#xff08;运用比较少&#xff09;&#xff1b;在yaml文件中必须要有资源控制&#xff08;cpu&#xff09;的字段才能生效的。 必要条件&#xf…

linux内核驱动:ptp内核phc框架

目录 一、介绍二、PHC驱动文件三、主要数据结构四、初始化和调用流程五、总结 一、介绍 本文基于linux内核5.10.xxx总结ptp1588精确时间协议实现过程中&#xff0c;内核部分的8A34002实现的phc(PTP hardware clock)驱动支持&#xff1b; ptp的系统框架 .红圈部分为本笔记总结的…

RK3568 初识

RK3565是福州本土集成电路设计企业的产品&#xff0c;售价在200RMB左右&#xff0c;润和DAYU200完成基于RK3568的鸿蒙适配&#xff0c;官方售价高达2000RMB 瑞芯微电子有限公司&#xff08;Rockchips Electronics CO., Ltd&#xff09;: 规模&#xff1a;2000人市值&#xff…

CSS实现前端布局更巧妙的方案!在 flex 布局中通过使用 margin 实现水平垂直居中以及其他常见的前端布局

在前端开发中&#xff0c;实现水平垂直居中一直是个热门话题。随着 CSS Flexbox 布局的普及&#xff0c;开发者们开始更多地使用 justify-content 和 align-items 这两个属性来解决这个问题。 然而&#xff0c;还有一种更加简洁、灵活的方式——使用 margin: auto; 来实现居中以…

【北京迅为】《STM32MP157开发板使用手册》- 第二十三章 Cortex-M4 开发环境搭建

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

香港科技大学工学院2025/2026年度硕士研究生(MSc)项目招生宣讲会

&#x1f514;香港科技大学工学院2025/2026年度硕士研究生&#xff08;MSc&#xff09;项目招生宣讲会 &#x1f559;时间&#xff1a;2024年9月24日&#xff08;星期二&#xff09;14:30 &#x1f3e0;地点&#xff1a;香港中文大学&#xff08;深圳&#xff09;图书馆培训室…

【时序分析】作业汇编

一、基础知识 时间序列分析就是对一个时间序列进行建模&#xff0c;扣除各种趋势项&#xff08;线性趋势、余弦趋势、有色噪声ARIMA&#xff09;&#xff0c;得到一个白噪声序列&#xff1b;换言之&#xff0c;我们要提取其中的有用信息&#xff08;非白噪声序列&#xff09;&…

Linux 之 RPM [Red - Hat Package Manager]【包管理】

命令符 -i&#xff08;install&#xff09;&#xff1a;安装软件包。--test&#xff1a;测试安装&#xff0c;并不实际安装&#xff0c;只是检查依赖关系等是否满足安装条件。--nodeps&#xff1a;忽略依赖关系进行安装。不过这种方式可能导致软件因缺少依赖而无法正常运行&am…

【论文阅读】Face2Diffusion for Fast and Editable Face Personalization

code&#xff1a;mapooon/Face2Diffusion: [CVPR 2024] Face2Diffusion for Fast and Editable Face Personalization https://arxiv.org/abs/2403.05094 (github.com) 论文 介绍 面部个性化旨在将从图像中获取的特定面部插入到预先训练的文本到图像扩散模型中。然而&#…

linux服务器日常运维开机关机关服务命令

Linux开机关机命令 Linux服务器开机和关机命令 在Linux系统中&#xff0c;开机和关机通常涉及到几个命令&#xff1a; 开机&#xff1a; reboot - 重新启动正在运行的系统。 shutdown -r now - 立即重启系统。 关机&#xff1a; poweroff - 关闭系统并关闭电源。 shutdo…

消防摩托车的技术参数_鼎跃安全

一、技术概述 动力系统&#xff1a;消防摩托车搭载单缸、四冲程、水冷发动机&#xff0c;功率达 19kW&#xff0c;为车辆在野外复杂地形行驶提供强劲动力。确保能快速穿越山地、林间等区域&#xff0c;及时抵达火灾现场展开救援。 车体技术&#xff1a;采用高品质材料打造&am…

EA橘子平台Origin离线安装包获取

在EA官网下载的橘子平台安装包安装时我们发现是在线安装&#xff0c;一般的网络环境根本无法完成安装&#xff0c;一直卡在那里&#xff0c;我们可以借助加速器、特殊网络、或者直接获取离线安装包的方法安装&#xff0c;下面是如何获取离线安装包的方法。 打开EA官网&#xf…

基于微信小程序的宿舍报修系统的设计与实现

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的宿…

PPT技巧:如何在幻灯片中生成目录?

PPT文件如何制作目录&#xff0c;如何点击目录标题立即跳转到相应幻灯片&#xff1f;今天小奥超人和大家一起来学习一下。 现在幻灯片里制作好目录页&#xff0c;制作好目录之后&#xff0c;选中一个目录&#xff0c;点击插入 – 链接 在插入链接界面中&#xff0c;选择【本文…