Circular Pie Chart

Authors

[Editor] Hu Zheng;

[Contributors]

Another form of the pie chart.

Setup

  • System Requirements: Cross-platform (Linux/MacOS/Windows)

  • Programming language: R

  • Dependent packages: ggplot2

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

# Load packages
library(ggplot2)

Data Preparation

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

# convert data structure
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,]

# View data
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

Visualization

# Circular Pie Chart
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
FigureΒ 1: Circular Pie Chart