查看原文
其他

R语言绘制饼图(扇形图)方法示例

生信小白鱼 鲤小白 小白鱼的生统笔记 2022-05-08

R语言绘制饼图(扇形图)


    饼图(或扇形图)是最基本的统计图形之一,用于展示各元素数值相对于总数的占比情况,图中每个扇区的弧长表示该元素数值的占比大小(总和为1)。今天呢白鱼小编就给大家带来如何使用R语言绘制饼图的方法。


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

    https://pan.baidu.com/s/1opiw6gHgUGfBgsRnmo93yA

    文件“phylum.txt”由16S高通量测序所得的物种丰度表转化而来,展示了主要细菌类别(行)在各样本(列)中的丰度信息。接下来我们绘制饼图,展示主要细菌类别在样本中的丰度占比信息。


pie()绘制饼图

  

    在R中读入数据后,可直接使用pie()绘制饼图,该命令在R启动时默认加载。

    我们使用pie()绘制样本a1中主要细菌类别的丰度组成,一个简单的作图命令如下所示。   

#读取数据
phylum <- read.delim('phylum.txt', sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)

#pie(),可使用 ?pie 查看该命令详情
pie(phylum$a1, col = c('#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462'),
labels = phylum$phylum, font = 3, main = 'Sample: a1\nPhylum level')

    

pie3D()绘制3D饼图

  

    plotrix包中提供了一个可绘制3D效果饼图的命令pie3D()。我们继续使用以上读入的测试数据,加载plotrix包绘制3D饼图。

#pie3D(),可使用 ?pie3D 查看该命令详情
library(plotrix)

pie3D(phylum$a1, col = c('#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462'),
explode = 0.05, height = 0.1, radius = 0.85, labels = phylum$phylum, labelcex = 1, main = 'Sample: a1\nPhylum level')


fan.plot()叠加扇形图

  

    plotrix包中还提供了一个可用于绘制叠加扇形图的命令fan.plot()。我们继续使用以上读入的测试数据,加载plotrix包绘制叠加扇形图。

#fan.plot(),可使用 ?fan.plot 查看该命令详情
library(plotrix)

fan.plot(phylum$a1, col = c('#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462'),
labels = phylum$phylum, main = 'Sample: a1\nPhylum level')

    注意:这里扇形的宽度才是重要的,而半径大小并无意义。


ggplot2绘制饼图

  

    ggplot2功能强大,因此使用ggplot2绘制饼图是个很不错的选择。白鱼小编就很喜欢ggplot2的语法和风格,更灵活且更好看。

#ggplot2
library(ggplot2)

p <- ggplot(phylum, aes(x = '', y = a1, fill = phylum)) +
geom_bar(stat = 'identity', width = 1) +
coord_polar(theta = 'y') +
scale_fill_manual(values = rev(c('#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462'))) +
theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text.x = element_blank(), plot.title = element_text(hjust = 0.5)) +
theme(legend.text = element_text(face = 'italic'), legend.title = element_blank()) +
labs(x = '', y = '', title = 'Sample: a1', fill = 'Phylum')

p


    再来个圆环状的样式。

p <- ggplot(phylum, aes(x = '', y = a1, fill = phylum)) + 
geom_bar(stat = 'identity', width = 0.3) +
coord_polar(theta = 'y') +
scale_fill_manual(values = rev(c('#8DD3C7', '#FFFFB3', '#BEBADA', '#FB8072', '#80B1D3', '#FDB462'))) +
theme(panel.grid = element_blank(), panel.background = element_blank(), axis.text.x = element_blank(), plot.title = element_text(hjust = 0.5)) +
theme(legend.text = element_text(face = 'italic'), legend.title = element_blank()) +
labs(x = '', y = '', title = 'Sample: a1', fill = 'Phylum')
 
p

    

    好了,基本图形的画法就先简介到这里吧。多多练习,慢慢熟练了窍门后尝试挑战更复杂的图形吧。




    

    最后,扫一扫下方二维码,可关注本公众号“生信小白鱼”,同样谢谢大家支持。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存