环形饼图

作者

[编辑] 郑虎;

[审核] .

饼图的另一种形式

环境配置

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

  • 编程语言: R

  • 依赖包: ggplot2

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

# 加载包
library(ggplot2)

数据准备

# 加载数据
data <- read.table("files/Hiplot/024-circular-pie-chart-data.txt", header = T)

# 整理数据格式
data$draw_percent <- data[["values"]] / sum(data[["values"]]) * 100
data$draw_class <- 1
data2 <- data
data2[["values"]] <- 0
data2$draw_class <- 0
data <- rbind(data, data2)
filtered_data <- data[data[["values"]] > 0,]

# 查看数据
head(data)
  labels values draw_percent draw_class
1      A     20    16.666667          1
2      B     30    25.000000          1
3      C     15    12.500000          1
4      D     10     8.333333          1
5      E     45    37.500000          1
6      A      0    16.666667          0

可视化

# 环形饼图
p <- ggplot(data, aes(x = draw_class, y = values, fill = labels)) +
  geom_bar(position = "stack", stat = "identity", width = 0.7) +
  geom_text(data = filtered_data, aes(label = sprintf("%.2f%%", draw_percent)),
            position = position_stack(vjust = 0.5), size = 3) +
  coord_polar(theta = "y") +
  xlab("") +
  ylab("Pie Chart") +
  scale_fill_manual(values = c("#e64b35ff","#4dbbd5ff","#00a087ff","#3c5488ff","#f39b7fff")) +
  theme_minimal() +
  theme(text = element_text(family = "Arial"),
        plot.title = element_text(size = 12,hjust = 0.5),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10),
        axis.text.x = element_text(color = "black"),
        axis.text.y = element_blank(),
        legend.position = "right",
        legend.direction = "vertical",
        legend.title = element_text(size = 10),
        legend.text = element_text(size = 10),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())

p
图 1: 环形饼图