8.7 饼图
饼图(pie chart)将一个圆饼按照分类的占比划分成多个切片,整个圆饼代表数据的总量,每个切片(圆弧)表示该分类占总体的比例,所有切片(圆弧)的加和等于 100%。
1、基础包pie()函数绘制饼图
data5.2 <- data1 %>% group_by(nitrogen) %>% summarise(v2mean = mean(v2)) %>% mutate(per = v2mean/sum(v2mean)*100) # 通过data1构建新数据集data5.2。data5.2 # 查看新数据集data5.2
## # A tibble: 4 × 3
## nitrogen v2mean per
## <chr> <dbl> <dbl>
## 1 N1 3.73 34.0
## 2 N2 3.76 34.3
## 3 N3 1.92 17.6## 4 N4 1.55 14.1
pie(data5.2$per, labels = round(data5.2$per, 2), main = "Nitrogen pie chart", col = c("red","orange","yellow","green")) # 基础包函数pie绘制饼图。legend("topright", data5.2$nitrogen, fill = c("red","orange","yellow","green"), cex = 0.5) # 添加图例。
2、ggplot2绘制饼图
使用ggplot2包的geom_bar()函数绘制堆积柱形图,然后将直角坐标系转换成极坐标系,就可以显示为饼图,使用geom_text()函数添加数据标签。
data5.2 %>% ggplot(aes(x = " ", y = per, fill = nitrogen)) + geom_bar(stat = "identity", width = 1) # 绘制柱状图。
data5.2 %>%
ggplot(aes(x = " ", y = per, fill = nitrogen)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
theme(axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks = element_blank(),
axis.title.y = element_blank(),
panel.background = element_blank()) +
geom_text(aes(label = paste0(round(per, 2), "%")), position = position_stack(0.5)) # 绘制饼图
3、甜甜圈图
圆环图(又叫作甜甜圈图,donut chart),其本质是将饼图的中间区域挖空。饼图整体性太强,如果我们将两个饼图放在一起,通过比较饼图内各个扇形之间占整体比重的关系,很难同时对比两个图。圆环图则通过关注长度而不是面积解决了饼图对比困难的问题。
data5.2 %>%
ggplot(aes(x = 3, y = per, fill = nitrogen)) +
geom_bar(stat = "identity", width = 1) + coord_polar("y", start = 0) +
xlim(c(0,4.5)) +
geom_text(aes(label = paste0(round(per, 2), "%")),
position = position_stack(0.5)) +
theme(axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks = element_blank(),
axis.title.y = element_blank(),
panel.background = element_blank(), axis.text.y = element_blank()) # 甜甜圈图。
4、3D饼图
使用plotrix包中的pie3D()函数可绘制3D饼图。
library(plotrix) # 调用plotrix包。
pie3D(data5.2$per,
labels = paste0(round(data5.2$per, 2), "%"),
explode = 0.1,
border = "white",
main = "Nitrogen pie chart",
height = 0.2, labelcex = 1,
col = c("red","orange","yellow","green")) # 绘制3D饼图。legend(0.75, 1, data5.2$nitrogen, fill = c("red","orange","yellow","green"), cex = 0.5) # 添加图例。
参考资料
ggplot2: 数据分析与图形艺术,西安交通大学出版社,2013.
R语言数据可视化之美:专业图表绘制指南,电子工业出版社,2019.
R数据科学,人民邮电出版社,2018.
R数据可视化手册,人民邮电出版社,2014.
本文使用 文章同步助手 同步