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

安装ggplot2包并查看官方文档

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

在R语言中安装ggplot2有两种方法:

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

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

r 复制代码
library(ggplot2)

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

r 复制代码
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() 函数的基本语法如下:

r 复制代码
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 创建散点图的标准示例:

r 复制代码
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() 是一个可选步骤,用于应用简洁的主题样式。

r 复制代码
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小车车数据集

r 复制代码
library(ggplot2)  

ggplot(data = mtcars, aes(x = mpg, y = disp)) +  
  geom_line(color = "red") +  
  labs(title = "汽车每加仑行驶里程与排量的关系", x = "每加仑行驶里程(mpg)", y = "排量(disp)")
绘制多折线的折线图
r 复制代码
ggplot(data = mpg, aes(x = displ, y = hwy, color = drv)) +  
  geom_line() +  
  labs(title = "不同驱动类型的高速公路里程", x = "排量(升)", y = "高速公路里程(mpg)")
绘制散点图
r 复制代码
library(ggplot2)

ggplot(mpg, aes(displ, hwy, colour = class)) + 
  geom_point()
绘制箱型图

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

r 复制代码
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")
绘制饼图
r 复制代码
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()
相关推荐
Mr_Xuhhh10 分钟前
递归搜索与回溯算法
c语言·开发语言·c++·算法·github
文军的烹饪实验室10 分钟前
ValueError: Circular reference detected
开发语言·前端·javascript
B20080116刘实15 分钟前
CTF攻防世界小白刷题自学笔记13
开发语言·笔记·web安全·网络安全·php
Qter_Sean1 小时前
自己动手写Qt Creator插件
开发语言·qt
xiaoyaolangwj1 小时前
高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十三)图优化SLAM的本质
学习·机器人·自动驾驶
何曾参静谧1 小时前
「QT」文件类 之 QIODevice 输入输出设备类
开发语言·qt
静止了所有花开2 小时前
SpringMVC学习笔记(二)
笔记·学习
爱吃生蚝的于勒2 小时前
C语言内存函数
c语言·开发语言·数据结构·c++·学习·算法
L_cl4 小时前
Python学习从0到1 day26 第三阶段 Spark ④ 数据输出
学习
小白学大数据4 小时前
Python爬虫开发中的分析与方案制定
开发语言·c++·爬虫·python