数据可视化 | 用ggplot2绘制箱形图和气泡图

2023-02-02 17:10:14, Calibra 杭州凯莱谱精准医疗检测技术有限公司


ggplot2

代谢组学统计分析的结果要想直观和清晰地呈现出来,制作精美的可视化图是不二之选。由于工具所限,很多朋友看到别人画出的各种美图时经常会羡慕嫉妒恨,但如果你会或正在学习使用R语言,当你知晓R语言中包含的强大绘图功能时,就如同掌握了一把数据可视化的尚方宝剑。

绘图相关的R包浩如烟海,有绘制山峦图的ggridges,有创建树状图的ggdendro,还有描绘相关性的ggcorrplot……这些用途各异的R包其实都是在ggplot2这个包的基础上进行了二次开发。掌握了ggplot2,恰如筑牢了高楼大厦的基石!

接下来,小编就带领大家一窥ggplot2的真容。

01

ggplot2的绘图原理

ggplot2犹如绘画,在画布上一层层叠加线条、颜色。这种一层层输入的命令,使得ggplot2更加灵活,也更易于修改。

ggplot2函数的组成有:

• geom——几何对象:如点、线

• scale——标度:将数据映射到图形空间,比如用形状、颜色来表示不同的数据,能够精确的控制图形的外观

• coord——坐标系:描述数据映射到平面的过程

• layer——图层:每个图层有各自的图形,最后叠加

• facet——分面:控制分组绘图的方法和排列方式

从数据集变为几何对象,ggplot2数据映射的原理如下图:

02

ggplot2的绘图类型

ggplot2提供了很多几何图形,能够轻松绘制气泡图、箱线图、小提琴图等,常用的绘图类型和基础命令见下图:

03

美化图形

在指定图表类型后,还可以根据需要修改,比如调整线条粗细、点的形状、颜色等。

美化ggplot2细节最常用的函数是theme(),具有大量参数,其中四种参数的使用最为广泛:

• element_text():设置基于文本的组件,如标题、子标题等。

• element_line():设置基于线的组件,如轴线,网格线等。

• element_rect():修改基于矩形的组件,如绘图和面板区域的背景。

• element_blank():关闭显示的主题内容。

在RSTUDIO中输入?theme,可以浏览以上参数的具体使用说明,以及theme()的全部功能。

04

实例理解

用一个简单的ketones (酮类)研究数据来展示气泡图和箱形图的绘制。

数据情况

共有pre和post两组,每组十个样本,记录了每个样本ketones的含量。

导入数据,加载ggplot2:

dat<- read.table("C:\\\\Users\\\\user\\\\Desktop\\\\ketones.txt",header = T)library(ggplot2)

绘制气泡图

气泡图与散点图相同,都使用了geom_point(),不过比起散点图,气泡图多了气泡大小这个变量,能够展示更多的信息,也更为美观灵动。

将每个样本的ketones的含量呈现出来,并以此来定义气泡的大小:

ggplot(dat, aes(x = Sample,y = ketones,size = ketones)) + geom_point(colour = "steelblue")

增加分组信息,按照不同组别上色:

ggplot(dat,aes(x = Sample,y = ketones,size = ketones,color = Group)) + geom_point()

绘制箱形图

为了更清晰地展示各个组的ketones含量,箱形图是个不错的选择:

ggplot(dat,aes(Group,ketones,fill = Group)) +geom_boxplot(width = 0.5)

但是图片底色是灰色,而文章里高大上的图片往往是白色底色的,不妨试试theme_classic()。

细心的朋友应该发现了,按照英文顺序,“post”在“pre”前面,不过人们的习惯是把“pre”放在前面,这该如何调整呢?可以将分组设为“factor”,自定义顺序哦~

dat$Group<-factor(dat$Group,levels = c("pre","post"))ggplot(dat,aes(Group,ketones,fill = Group)) + geom_boxplot(width = 0.5) + theme_classic()

差异比较

想看看pre组、post组的ketones含量差异情况?ggsignif来帮忙!

library(ggsignif)

先定义好要比较的组别:

compare_pair = list(c("pre","post"))

在箱形图里引入散点图,不仅可以展示整组的表达情况,还可以清楚地看见每个样本的表达情况:

ggplot(dat,aes(Group,ketones,fill = Group)) +geom_boxplot(width = 0.5) +theme_classic() +geom_signif(comparisons = compare_pair,             test = t.test,            step_increase = 0.2,            map_signif_level = F) +geom_point(position = position_jitterdodge())

进一步美化图片,可以自定义颜色,设置字体为常用的“Times New Roman”

ggplot(dat,aes(Group,ketones,fill = Group)) +geom_boxplot(width = 0.5) + theme_classic() +geom_signif(comparisons = compare_pair, test = t.test,            step_increase = 0.2,            map_signif_level=F) +geom_point(position = position_jitterdodge()) +scale_fill_manual(values = c("#8B0000","#F4A460")) +theme(text = element_text(size = 14,family = "serif"))

以上是用简单数据做出的基础的箱形图和气泡图,帮助大家掌握ggplot2。当遇到真实、复杂的数据,ggplot2的功效就更大啦,能够做出更吸引眼球的箱形图和气泡图,一起来欣赏吧!

欲知更多数据可视化秘籍,


  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018
  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018

Copyright ©2007-2024 ANTPEDIA, All Rights Reserved