# 06.饼图绘制

### 清除当前环境中的变量

``````rm(list=ls())
``````

### 设置工作目录

``````setwd("C:/Users/Dell/Desktop/R_Plots/06piechart/")
``````

## 基础pie函数绘制饼图

``````data <- read.table("demo1_piechart.txt",header = T)
##   group value
## 1     E    10
## 2     D    30
## 3     C    20
## 4     B    10
## 5     A    10

pie(data\$value)
``````
image.png
``````pie(data\$value,
labels = data\$group, # 添加标签
col = c("purple", "violetred1", "green3",
"cornsilk", "cyan") # 设置颜色
)
``````
image.png
``````pie(data\$value,
labels = data\$group,
col = c("purple", "violetred1", "green3",
"cornsilk", "cyan"),
clockwise = T, # 逆时针排布
init.angle = 45 # 设置第一个扇区的初始角度
)
``````
image.png
``````pie(data\$value,
labels = data\$group, # 添加标签
col = c("purple", "violetred1", "green3",
"cornsilk", "cyan"), # 设置颜色
density = 20, # 设置阴影线密度
angle = 20 + 10 * 1:5 # 设置阴影线角度
)
``````
image.png
``````per.labs <- paste0(data\$group,": ",round(100 * data\$value / sum(data\$value),2),"%")
pie(data\$value,
labels = per.labs, # 添加标签
col = c("purple", "violetred1", "green3",
"cornsilk", "cyan"),
main = "pie(*, clockwise = TRUE)"
)
# 添加图例
legend("topright",legend = data\$group, cex=1.0,
fill = c("purple", "violetred1", "green3", "cornsilk", "cyan")
)
``````
image.png
``````n <- 200
pie(rep(1, n), labels = "", col = rainbow(n), border = NA,
main = "pie(*, labels=\"\", col=rainbow(n), border=NA,..)")
``````
image.png

## ggplot2包绘制饼图

``````library(ggplot2)
# 计算百分比
data\$percent <- paste0(round(100 * data\$value / sum(data\$value),2),"%")
##   group value percent
## 1     E    10   12.5%
## 2     D    30   37.5%
## 3     C    20     25%
## 4     B    10   12.5%
## 5     A    10   12.5%

ggplot(data,aes(x="", y= value, fill = group)) +
geom_bar(stat = "identity",color="white") + theme_bw() +
scale_fill_manual(values = c("purple", "violetred1", "green3", "cornsilk", "cyan")) +
theme(axis.text.x = element_blank(),
axis.ticks = element_blank(),
panel.grid = element_blank()) +
labs(x="", y="") +
geom_text(aes(y = value/2 + c(0, cumsum(value)[-length(value)]),
label = paste0(group,": ", percent)), size=5) +
coord_polar(theta = "y")
``````
image.png

## ggpubr包绘制饼图

``````library(ggpubr)
# 添加百分比标签列
data\$labs <- paste0(data\$group,": ",round(100 * data\$value / sum(data\$value),2),"%")
##   group value     labs
## 1     E    10 E: 12.5%
## 2     D    30 D: 37.5%
## 3     C    20   C: 25%
## 4     B    10 B: 12.5%
## 5     A    10 A: 12.5%

ggpie(data,x="value", label = "labs",
lab.pos = "in", lab.font = "5",
fill="group", color="white",
palette = c("purple", "violetred1", "green3", "cornsilk", "cyan"))
``````
image.png

# pie3D函数绘制三维饼图

``````# 加载plotrix包
library(plotrix)
# 添加百分比标签列
data\$labs <- paste0(data\$group,": ",round(100 * data\$value / sum(data\$value),2),"%")
##   group value     labs
## 1     E    10 E: 12.5%
## 2     D    30 D: 37.5%
## 3     C    20   C: 25%
## 4     B    10 B: 12.5%
## 5     A    10 A: 12.5%

pie3D(data\$value, labels = data\$labs,
theta = pi/5, labelcex=1.2,
explode = 0.1, main = "3D pie chart",
col = c("purple", "violetred1", "green3", "cornsilk", "cyan"))
# 添加图例
legend("topright",legend = rev(data\$group), cex=1.0, inset = 0.01,
fill = rev(c("purple", "violetred1", "green3", "cornsilk", "cyan"))
)
``````
image.png
``````sessionInfo()
## R version 3.6.0 (2019-04-26)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 18363)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=Chinese (Simplified)_China.936
## [2] LC_CTYPE=Chinese (Simplified)_China.936
## [3] LC_MONETARY=Chinese (Simplified)_China.936
## [4] LC_NUMERIC=C
## [5] LC_TIME=Chinese (Simplified)_China.936
##
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base
##
## other attached packages:
## [1] plotrix_3.7-6 ggpubr_0.2.1  magrittr_1.5  ggplot2_3.2.0
##
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.1       knitr_1.23       tidyselect_0.2.5 munsell_0.5.0
##  [5] colorspace_1.4-1 R6_2.4.0         rlang_0.4.0      stringr_1.4.0
##  [9] dplyr_0.8.3      tools_3.6.0      grid_3.6.0       gtable_0.3.0
## [13] xfun_0.8         withr_2.1.2      htmltools_0.3.6  yaml_2.2.0
## [17] lazyeval_0.2.2   digest_0.6.20    assertthat_0.2.1 tibble_2.1.3
## [21] ggsignif_0.5.0   crayon_1.3.4     purrr_0.3.2      glue_1.3.1
## [25] evaluate_0.14    rmarkdown_1.13   labeling_0.3     stringi_1.4.3
## [29] compiler_3.6.0   pillar_1.4.2     scales_1.0.0     pkgconfig_2.0.2
``````