R语言绘制圆环图

Posted 美格基因

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言绘制圆环图相关的知识,希望对你有一定的参考价值。



ggplot2绘制圆环图示例




    圆环图嘛,当然就是圆环状的统计图啦。它主要由柱形图或饼图转化而来,将原本一个个竖直的柱子弯曲成圆环展示,或者将饼图转换为空心状圆环。本篇白鱼小编将使用R语言ggplot2包,通过几个示例分享这类圆环图的绘制方法。


    本文使用的作图数据的网盘链接(提取码jk1f):

    https://pan.baidu.com/s/1vgxkVnOw-nv5TphMdZiooA

    文件“phylum_top10.txt”由16S高通量测序所得的物种丰度表转化而来,展示了主要细菌类别(行)在各样本(列)中的丰度信息。我们将通过圆环图,展示各样本中各细菌类别的丰度组成。


ggplot2绘制圆环图

  

    首先对示例数据作个预处理,包括按数值高低排个序,以及选取特定作图子集等。

library(reshape2)

#读取数据,按总丰度大小排序,并重排为便于 ggplot2 识别的样式
phylum <- read.delim('phylum_top10.txt', sep = ' ', stringsAsFactors = FALSE, check.names = FALSE)
phylum <- phylum[order(rowSums(phylum[-1])), ]
phylum$Taxonomy <- factor(phylum$Taxonomy, levels = c('Others', as.vector(phylum$Taxonomy[-which(phylum$Taxonomy == 'Others')])))
time_all <- melt(phylum, id = 'Taxonomy')

#挑选其中的一个样本子集,并按丰度大小排序
time1 <- subset(time_all, variable == 'time1')
time1 <- time1[order(time1$value), ]
time1$Taxonomy <- factor(time1$Taxonomy, levels = c('Others', as.vector(time1$Taxonomy[-which(time1$Taxonomy == 'Others')])))


    接下来加载ggplot2绘制圆环图,以下简要展示几个示例。

    使用只包含一个样本的细菌丰度数据子集“time1”,绘制圆环图,展示该样本中各细菌类别丰度组成。

#加载 ggplot2
library(ggplot2)

##以 time1 为例作图展示
#先得到柱形图
p <- ggplot(time1, aes(x = Taxonomy, y = value, fill = Taxonomy)) +
geom_bar(stat = 'identity', width = 1) +
scale_fill_manual(values = c('gray', '#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462', '#B3DE69', '#FCCDE5', '#BC80BD', '#CCEBC5')) +
theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), plot.title = element_text(hjust = 0.5)) +
labs(x = '', y = '', title = 'Time1', fill = 'Top10 Phylum')

#再经坐标系变换得到圆环图
p + coord_polar(theta = 'y')

R语言绘制圆环图


    使用包含所有样本的作图数据 “time_all”,绘制圆环图,展示所有样本(示例数据中共计5个样本)中各细菌类别的丰度组成水平,方便比较查看。

##以 time_all 为例
#先得到柱形图
p <- ggplot(time_all, aes(variable, value, fill = Taxonomy)) +
geom_bar(stat = 'identity', width = 0.8) +
scale_fill_manual(values = c('gray', '#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462', '#B3DE69', '#FCCDE5', '#BC80BD', '#CCEBC5')) +
labs(x = '', y = '', fill = 'Top10 Phylum') +
theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text.x = element_blank())

#再经坐标系变换得到圆环图
p + coord_polar(theta = 'y')

R语言绘制圆环图


    在前文“R语言绘制饼图(扇形图)”中,已经展示了在ggplot2中如何将实心的饼图绘制为空心的“饼环”样式。其实对于此时的“饼环”,我们也可将其视为一种圆环图。

##绘制饼图时,若展示为空心的“饼环”样式,则也可视为一种圆环图,以 time1 为例作图展示
#饼图
p1 <- ggplot(time1, aes(x = '', y = value, fill = Taxonomy)) +
geom_bar(stat = 'identity', width = 1) +
coord_polar(theta = 'y') +
scale_fill_manual(values = c('gray', '#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462', '#B3DE69', '#FCCDE5', '#BC80BD', '#CCEBC5')) +
theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text.x = element_blank(), plot.title = element_text(hjust = 0.5)) +
labs(x = '', y = '', title = 'Time1', fill = 'Top10 Phylum')

p1

#可通过设置 geom_bar() 中 width 参数的大小(小于 1 即可,数值越小空心面积越大)后,转化为饼图后即可得到圆环图
p2 <- ggplot(time1, aes(x = '', y = value, fill = Taxonomy)) +
geom_bar(stat = 'identity', width = 0.3) +
coord_polar(theta = 'y') +
scale_fill_manual(values = c('gray', '#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462', '#B3DE69', '#FCCDE5', '#BC80BD', '#CCEBC5')) +
theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text.x = element_blank(), plot.title = element_text(hjust = 0.5)) +
labs(x = '', y = '', title = 'Time1', fill = 'Top10 Phylum')

p2

R语言绘制圆环图


    好了,本篇关于ggplot2绘制圆环图就先介绍到这里了,大家get到技巧了吗?




R语言绘制圆环图
美格基因生信交流群

无门槛

零广告

满满生信干货

免费线上课堂

赶紧加入吧!


R语言绘制圆环图


关注我们
长按二维码

R语言绘制圆环图
R语言绘制圆环图


R语言绘制圆环图

致尊敬的您:


美格基因专注微生物组学领域,不断拓展基因组学在环境、生态、农业和医学健康领域的应用,持续开发国际领先的产品和服务,致力于成为全球领先的微生物组学产品和服务提供者。


公司已开拓的业务领域有:16S/18S/ITS测序 ; 16S全长测序;GeoChip、宏基因组、宏转录组、宏病毒组测序;单菌框架图、完成图。


目前已为清华大学、中国科学院、中山大学、浙江大学、美国佐治亚理工学院、香港科技大学等国内外众多科研学术机构提供了全方位的科研服务,在行业内具备显著影响力。


如您有任何需求和疑问,欢迎随时咨询,美格基因竭诚为您服务!






美格基因全力支持防控疫情

SARS-CoV-2 RT-PCR检测系统技术支持:束经理,15820208591
SARS-CoV-2 高通量测序技术支持:金博士,13028825882
客服QQ:811480176
邮箱:support@magigene.com
官网:http://www.magigene.com

以上是关于R语言绘制圆环图的主要内容,如果未能解决你的问题,请参考以下文章

旭日图(sunburst chart)绘制:R语言 & excel

100天精通Python(可视化篇)——第81天:matplotlib绘制不同种类炫酷饼图参数说明+代码实战(自定义百分比多个子图圆环嵌套饼图)

利用matplotlib绘制圆环图的案例

Matplotlib 绘制圆环图的两种方法!

数据可视化应用绘制森林图(附Python和R语言代码)

【R】热图绘制