R语言之可视化(26)ggplot2绘制饼图

目录

R语言之可视化①误差棒

R语言之可视化②点图

R语言之可视化③点图续

R语言之可视化④点韦恩图upsetR

R语言之可视化⑤R图形系统

R语言之可视化⑥R图形系统续

R语言之可视化⑦easyGgplot2散点图

R语言之可视化⑧easyGgplot2散点图续

R语言之可视化⑨火山图

R语言之可视化⑩坐标系统

R语言之可视化①①热图绘制heatmap

R语言之可视化①②热图绘制2

R语言之可视化①③散点图+拟合曲线

R语言之可视化①④一页多图(1)

R语言之可视化①⑤ROC曲线

R语言之可视化①⑥一页多图(2)

R语言之可视化①⑦调色板

R语言之可视化①⑧子图组合patchwork包

R语言之可视化①⑨之ggplot2中的图例修改

R语言之可视化(20)之geom_label()和geom_text()

R语言之可视化(21)令人眼前一亮的颜色包

R语言之可视化(22)绘制堆积条形图

R语言之可视化(23)高亮某一元素

R语言之可视化(24)生成带P值得箱线图

R语言之可视化(25)绘制相关图(ggcorr包)

R语言之可视化(26)ggplot2绘制饼图

本文主要使用函数coord_polar()用于生成饼图,它只是极坐标中的堆积条形图。

原始饼图

创建数据:

df <- data.frame(
  group = c("Male", "Female", "Child"),
  value = c(25, 25, 50)
  )
head(df)
##    group value
## 1   Male    25
## 2 Female    25
## 3  Child    50

首先使用柱状图来做可视化

library(ggplot2)
# Barplot
bp<- ggplot(df, aes(x="", y=value, fill=group))+
geom_bar(width = 1, stat = "identity")
bp

生成一个原始饼图

pie <- bp + coord_polar("y", start=0)
pie

更改饼图填充颜色

可以使用以下函数手动更改饼图填充颜色

    • scale_fill_manual()*:使用自定义颜色
    • scale_fill_brewer():使用来自 RColorBrewer *包的调色板
    • scale_fill_grey()*:使用灰色调色板
# Use custom color palettes
pie + scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
# use brewer color palettes
pie + scale_fill_brewer(palette="Dark2")
pie + scale_fill_brewer(palette="Blues")+
  theme_minimal()
# Use grey scale
pie + scale_fill_grey() + theme_minimal()

使用因子变量创建饼图

head(PlantGrowth)

##   weight group
## 1   4.17  ctrl
## 2   5.58  ctrl
## 3   5.18  ctrl
## 4   6.11  ctrl
## 5   4.50  ctrl
## 6   4.61  ctrl

创建每组中观察计数的饼图:

ggplot(PlantGrowth, aes(x=factor(1), fill=group))+
  geom_bar(width = 1)+
  coord_polar("y")

自定义饼图

创建一个空白主题:

blank_theme <- theme_minimal()+
  theme(
  axis.title.x = element_blank(),
  axis.title.y = element_blank(),
  panel.border = element_blank(),
  panel.grid=element_blank(),
  axis.ticks = element_blank(),
  plot.title=element_text(size=14, face="bold")
  )

1.应用空白主题
2.删除轴刻度标记
3.添加文本注释

# Apply blank theme
library(scales)
pie + scale_fill_grey() +  blank_theme +
  theme(axis.text.x=element_blank()) +
  geom_text(aes(y = value/3 + c(0, cumsum(value)[-length(value)]), 
            label = percent(value/100)), size=5)
# Use brewer palette
pie + scale_fill_brewer("Blues") + blank_theme +
  theme(axis.text.x=element_blank())+
  geom_text(aes(y = value/3 + c(0, cumsum(value)[-length(value)]), 
                label = percent(value/100)), size=5)

推荐阅读更多精彩内容