📜  R中的并排饼图(1)

📅  最后修改于: 2023-12-03 14:47:11.403000             🧑  作者: Mango

R中的并排饼图

饼图通过圆形的切片来显示数据的相对数量或比例关系。并排饼图是一种用于比较两个或更多组数据的图形,每个组数据在同一个图中以饼图的形式显示。在R中,可以使用一些库来创建并排饼图。

准备数据

首先,我们需要准备数据,用于展示在并排饼图中。以下是示例数据,其中有两组数据:Group A和Group B,每个组包含4个元素。

# 创建示例数据
data <- data.frame(
  Group = c(rep("A", 4), rep("B", 4)),
  Value = c(10, 20, 30, 40, 5, 15, 25, 55)
)
使用ggplot2库

ggplot2是一个基于图层的绘图系统,可用于创建高度可定制的并排饼图。以下是如何使用ggplot2创建并排饼图的步骤:

  1. 加载ggplot2库
library(ggplot2)
  1. 创建饼图
# 创建饼图
plot <- ggplot(data, aes(x = "", y = Value, fill = Group)) +
  geom_bar(stat = "identity", width = 1, colour = "white") +
  coord_polar(theta = "y") +
  ggtitle("Group A vs. Group B") +
  labs(fill = "Group")

在这里,我们使用aes()函数来传递X和Y轴的值以及饼图中每个组的颜色。我们还使用geom_bar()函数来创建饼图,并将stat参数设置为“ identity”以确保它在图中显示原始数据而不是某种统计量。

  1. 添加标签
# 添加饼图标签
plot <- plot + 
  geom_text(aes(label = Value), position = position_stack(vjust = 0.5)) +
  theme(legend.position = "right")

使用geom_text()函数可以添加标签,该标签显示各个组的值。我们还使用position_stack()参数将标签放置在垂直方向上居中,并使用theme()来移动图例到图形的较右侧。

  1. 定义颜色
# 定义颜色
colors <- c("#99BEDF", "#FFA07A", "#CDB7B5", "#77DD77")
plot + scale_fill_manual(values = colors)

使用scale_fill_manual()函数可以定义饼图中各个组的颜色。

完整的代码如下:

# 加载ggplot2库
library(ggplot2)

# 创建示例数据
data <- data.frame(
  Group = c(rep("A", 4), rep("B", 4)),
  Value = c(10, 20, 30, 40, 5, 15, 25, 55)
)

# 创建饼图
plot <- ggplot(data, aes(x = "", y = Value, fill = Group)) +
  geom_bar(stat = "identity", width = 1, colour = "white") +
  coord_polar(theta = "y") +
  ggtitle("Group A vs. Group B") +
  labs(fill = "Group")

# 添加饼图标签
plot <- plot + 
  geom_text(aes(label = Value), position = position_stack(vjust = 0.5)) +
  theme(legend.position = "right")

# 定义颜色
colors <- c("#99BEDF", "#FFA07A", "#CDB7B5", "#77DD77")
plot + scale_fill_manual(values = colors)
使用gridExtra库

gridExtra是一个工具包,可以将多个图形合并成单个图形,并以各种格式填充绘图区域。以下是如何使用gridExtra创建并排饼图的步骤:

  1. 加载gridExtra库
library(gridExtra)
  1. 创建饼图
# 创建饼图1
pie1 <- ggplot(data[data$Group == "A", ], aes(x = "", y = Value, fill = Group)) +
  geom_bar(stat = "identity", width = 1, colour = "white") +
  coord_polar(theta = "y") +
  ggtitle("Group A") +
  labs(fill = "Group")

# 创建饼图2
pie2 <- ggplot(data[data$Group == "B", ], aes(x = "", y = Value, fill = Group)) +
  geom_bar(stat = "identity", width = 1, colour = "white") +
  coord_polar(theta = "y") +
  ggtitle("Group B") +
  labs(fill = "Group")

我们现在创建了两个饼图,一个代表Group A,另一个代表Group B。我们使用与ggplot2相同的函数和参数来创建这些饼图。

  1. 合并图形
# 合并图形并设置布局
grid.arrange(pie1, pie2, nrow = 1)

使用grid.arrange()函数可以将这两个饼图合并为一个并排饼图。我们还使用nrow参数来指示将图形从左到右排列在一个单独的行中。

完整的代码如下:

# 加载gridExtra库
library(gridExtra)

# 创建示例数据
data <- data.frame(
  Group = c(rep("A", 4), rep("B", 4)),
  Value = c(10, 20, 30, 40, 5, 15, 25, 55)
)

# 创建饼图1
pie1 <- ggplot(data[data$Group == "A", ], aes(x = "", y = Value, fill = Group)) +
  geom_bar(stat = "identity", width = 1, colour = "white") +
  coord_polar(theta = "y") +
  ggtitle("Group A") +
  labs(fill = "Group")

# 创建饼图2
pie2 <- ggplot(data[data$Group == "B", ], aes(x = "", y = Value, fill = Group)) +
  geom_bar(stat = "identity", width = 1, colour = "white") +
  coord_polar(theta = "y") +
  ggtitle("Group B") +
  labs(fill = "Group")

# 合并图形并设置布局
grid.arrange(pie1, pie2, nrow = 1)

以上是如何在R中创建并排饼图的示例代码。这些步骤可以应用于任何数据集和任何数量的组。