ggplot2及其他图形

💡 原文英文,约2800词,阅读约需11分钟。
📝

内容提要

本文介绍R语言ggplot2绘图包,基于图层语法,通过aes映射数据到图形属性,用geom函数指定图形元素,scale调整细节,facet实现分面,theme定义样式。演示了散点图、直方图、密度曲线、箱线图、条形图等统计图形,并介绍ggsave保存图片及金字塔图、热图、三维散点图等。

🔎

延伸解读

图层语法:ggplot2 的核心思维

ggplot2 基于图层语法,将数据映射到图形属性,再叠加几何对象、标度、分面和主题。这种一致性让不同图形共享同一套逻辑,降低了学习成本。理解“映射负责关联变量,标度负责具体取值”是掌握 ggplot2 的关键,例如颜色映射后需用 scale 函数手动指定颜色。

统计图形选择:从分布到构成

文章演示了直方图、密度曲线、箱线图、条形图等,分别适用于展示连续变量分布、比较组间差异和呈现比例构成。箱线图可直观比较组间中位数和离散程度,但组间差异是否显著需统计检验。ggpubr 包能自动添加检验 P 值,方便医学研究使用。

图形保存与出版级输出

ggsave() 函数可保存 ggplot2 图形为 png、pdf、tiff 等多种格式,并支持设置尺寸、分辨率和单位。若用于出版,可指定宽高和 dpi,如 15cm×12cm、500dpi 的 tiff 文件。这为图形输出提供了标准化途径,避免手动调整的繁琐。

扩展图形与注意事项

除基础图形外,文章还介绍了金字塔图、水平堆叠条形图、热图和三维散点图。金字塔图常用于展示人口结构,热图可同时呈现矩阵数值和聚类结果,三维散点图能展示三个数值变量的关系,但静态图可能受视角影响。这些图形扩展了 ggplot2 的应用场景。

❓

Q&A

ggplot2的图层语法包含哪些核心概念?

ggplot2基于图层语法,核心概念包括:数据(data)、映射(mapping,用aes函数将变量映射到图形属性)、几何对象(geom函数指定图形元素)、标度(scale函数调整颜色、大小等细节)、分面(facet将数据按分类变量分割成子集分别绘图)和主题(theme定义画布背景等样式)。

在ggplot2中如何将变量映射到颜色、形状等图形属性?

在aes()函数中指定映射,例如aes(x = wt, y = mpg, color = am)将变量am映射到颜色,或aes(shape = am)映射到形状。若变量本质是分类变量但存储为数值,应先转换为因子。映射只负责关联变量与图形属性,具体取值由scale函数控制。

ggplot2中如何绘制直方图并叠加密度曲线?

使用geom_histogram()绘制直方图,通过binwidth设置组距,fill和color设置填充色和边框色。叠加密度曲线时,在aes中设置y = ..density..,并添加stat_density(geom = "line", linetype = "dashed", size = 1)。例如:ggplot(anorexia, aes(x = wt.change, y = ..density..)) + geom_histogram(binwidth = 2, fill = "skyblue", color = "black") + stat_density(geom = "line", linetype = "dashed", size = 1)。

ggplot2中如何绘制箱线图并添加组间统计检验结果?

使用geom_boxplot()绘制箱线图,例如ggplot(anorexia, aes(x = Treat, y = wt.change)) + geom_boxplot()。要添加组间比较的p值,可使用ggpubr包的stat_compare_means()函数,指定comparisons列表和method(如"t.test"),例如stat_compare_means(comparisons = my_comparisons, method = "t.test", color = "blue")。

ggplot2中如何绘制条形图来展示比例构成?

使用geom_bar()绘制条形图,通过fill映射分组变量。默认堆叠显示绝对计数;设置position = "fill"可显示相对比例;设置position = "dodge"可将条形并排显示。例如:ggplot(Arthritis, aes(x = Treatment, fill = Improved)) + geom_bar(color = "black", position = "fill") + scale_fill_brewer() + theme_bw()。

如何使用ggsave()函数保存ggplot2图形?

ggsave()函数用于保存ggplot2图形,可指定文件名和图形对象,如ggsave("myplot.png", p)。还可设置尺寸、分辨率和单位,例如ggsave("myplot.tiff", width = 15, height = 12, units = "cm", dpi = 500)。支持png、pdf、tiff等多种格式。

除了常规图形,ggplot2还能绘制哪些特殊图形?

文章介绍了金字塔图(用epiDisplay包的pyramid()或DescTools包的PlotPyramid())、水平堆叠条形图(用sjPlot包的plot_stackfrq())、热图(用stats包的heatmap(),需先标准化数据)和三维散点图(用scatterplot3d包的scatterplot3d())。此外还提到散点图矩阵、相关图、QQ图、生存曲线、聚类图、碎石图、ROC曲线和森林图等将在后续章节介绍。

🏷️

标签

➡️

继续阅读