饼状图(GGPIE)

作者

[编辑] 郑虎;

[审核] .

饼图是通过将一个圆形切分成多个切片以显示每一部分所占总体比例的统计图表。

环境配置

  • 系统: Cross-platform (Linux/MacOS/Windows)

  • 编程语言: R

  • 依赖包: ggpie; dplyr; ggplot2; cowplot

# 安装包
if (!requireNamespace("ggpie", quietly = TRUE)) {
  install.packages("ggpie")
}
if (!requireNamespace("dplyr", quietly = TRUE)) {
  install.packages("dplyr")
}
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}
if (!requireNamespace("cowplot", quietly = TRUE)) {
  install.packages("cowplot")
}

# 加载包
library(ggpie)
library(dplyr)
library(ggplot2)
library(cowplot)

数据准备

载入数据为不同分组及其数据。

# 加载数据
data <- read.delim("files/Hiplot/068-ggpie-data.txt", header = T)

# 整理数据格式
axis <- c("am", "cyl")
data[, axis[1]] <- factor(data[, axis[1]], levels = unique(data[, axis[1]]))
data[, axis[2]] <- factor(data[, axis[2]], levels = unique(data[, axis[2]]))

# 查看数据
head(data)
   mpg cyl disp  hp drat    wt  qsec vs am gear carb
1 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
2 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
3 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
4 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
5 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
6 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

可视化

# 饼状图
plist <- list()
for (j in unique(data[, axis[2]])) {
  plist[[j]] <- ggpie(
    data = data[data[, axis[2]] == j,],
    group_key = axis[1], count_type = "full",
    label_type = "horizon", label_size = 8,
    label_info = "all", label_pos = "out") + 
    scale_fill_manual(values = c("#00468BFF","#ED0000FF")) +
    ggtitle(j)
  }

plot_grid(plotlist = plist, ncol = 3)
图 1: 饼状图

在一个圆图中,每个切片的弧长(其中心角和中心角所对应区域的弧长)与所表示的数量成正比。该饼图展示了 1~4 组分别的样本数量及样本数量所对应的占比。一组样本数量 13,占比 11.71%,二组样本数量 34,占比 30.63%,三组样本数量 21,占比 18.92%,四组样本数量 43,占比38.74%。