安装ggplot2
包并查看官方文档
ggplot2
是一个基于图形语法的R包,它允许用户通过声明式方式指定数据、美学映射和图形元素来灵活创建复杂且美观的可视化图表。
ggplot2
包官方教学文档:ggplot2官方文档
在R语言中安装ggplot2
有两种方法:
-
- 安装整个tidyverse套件 :
tidyverse
是一个包含多个用于数据科学的R包的集合,其中包括ggplot2
,tidyverse
涵盖了数据科学的整个工作流程,包括数据导入、清洗、转换、可视化、建模以及文档沟通等多个方面。如果想使用tidyverse
中的多个包,安装整个套件可能更方便,但是加载整个tidyverse
可能会增加会话的启动时间,并且如果不需要套件中的所有包,这可能会占用不必要的内存。
- 安装整个tidyverse套件 :
r
install.packages("tidyverse")
-
- 仅安装ggplot2 :如果只需要使用
ggplot2
包,而不需要tidyverse
中的其他包,可以单独安装它。只需在R交互式页面运行以下命令:
- 仅安装ggplot2 :如果只需要使用
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
创建图形时,通常遵循以下步骤:
- 初始化绘图对象 :使用
ggplot()
函数,并指定数据和映射。 - 添加几何对象 :使用
+
操作符连接几何函数(如geom_point()
、geom_line()
、geom_bar()
等),这些函数定义了数据的可视化方式。 - 调整图层和美学:可以通过添加其他图层(如统计变换、坐标系统、分面等)和设置美学属性(如颜色、大小、形状等)来进一步定制图形。
- 显示或保存图形 :最后,使用
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
以及 x
和 y
的映射。然后,我们使用 +
操作符添加了 geom_point()
函数来创建散点图。接着,我们通过添加 theme_minimal()
和 labs()
函数来调整了图形的美学属性和标签。最后,我们使用 print()
函数显示了图形(在 RStudio 中这一步通常是自动的),或者使用 ggsave()
函数将图形保存到文件中。
绘制直方图
这里使用了ggplot2
包中自带的diamonds(钻石价格数据集)
,data = diamonds
,aes(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()