饼图

饼图在平时生活中很常见,但是在科研中,相对于饼图,他们更推荐使用条形图或点图,因为相对于面积,人们对长度的判断更精确。也许由于这个原因,R中饼图的选项与其他统计软件相比十分有限。

1. 简单饼图

pie(x, labels = names(x), edges = 200, radius = 0.8,
    clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
    density = NULL, angle = 45, col = NULL, border = NULL,
    lty = NULL, main = NULL, ...)

x是一个非负数值向量,表示每个扇形的面积,而labels则是表示各扇形标签的字符型向量。

> phylum <- read.delim('/Users/kimhan/Desktop/phylum.txt', sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
> pie(phylum$a1, col = c('blue', 'orange', 'red', 'green2', 'purple', 'cyan'), labels = phylum$phylum, font = 3, main = 'Sample: a1\nPhylum level')
image

2. 绘制3D饼图

plotrix包中提供了一个可绘制3D效果饼图的命令pie3D()。

install.packages("plotrix")
> library(plotrix)
> pie3D(phylum$a1, col = c('blue', 'orange', 'red', 'green2', 'purple', 'cyan'), explode = 0.05, height = 0.1, radius = 0.85, labels = phylum$phylum, labelcex = 1, main = 'Sample: a1\nPhylum level')
image

3. ggplot()绘制饼图

绘制一个饼图之前,需要绘制一个条形图,该条形图有多个分组,这就需要设置映射的x参数映射为一个常量因子,fill映射为分类因子,即用geom_bar()绘制条形图,然后使用coord_polar(theta = 'y')以y轴为基准将默认的笛卡尔坐标系转化为极坐标样式得到饼图:

> ggplot(phylum, aes(x = '', y = a1, fill = phylum)) + 
+   geom_bar(stat = 'identity', width = 1) +
+   coord_polar(theta = 'y')
Error: `data` must be uniquely named but has duplicate columns
> phylum[,4] <- NULL
> phylum
          phylum   a1   a2
1 Proteobacteria 6378 6708
2 Actinobacteria  662  557
3     Firmicutes  526  551
4  Bacteroidetes  469  392
5  Acidobacteria  212  149
6    Nitrospirae   61   27
> ggplot(phylum, aes(x = '', y = a1, fill = phylum)) + 
+   geom_bar(stat = 'identity', width = 1) +
+   coord_polar(theta = 'y')
image

你可能感兴趣的:(饼图)