📅  最后修改于: 2023-12-03 14:47:11.403000             🧑  作者: Mango
饼图通过圆形的切片来显示数据的相对数量或比例关系。并排饼图是一种用于比较两个或更多组数据的图形,每个组数据在同一个图中以饼图的形式显示。在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创建并排饼图的步骤:
library(ggplot2)
# 创建饼图
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”以确保它在图中显示原始数据而不是某种统计量。
# 添加饼图标签
plot <- plot +
geom_text(aes(label = Value), position = position_stack(vjust = 0.5)) +
theme(legend.position = "right")
使用geom_text()函数可以添加标签,该标签显示各个组的值。我们还使用position_stack()参数将标签放置在垂直方向上居中,并使用theme()来移动图例到图形的较右侧。
# 定义颜色
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创建并排饼图的步骤:
library(gridExtra)
# 创建饼图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相同的函数和参数来创建这些饼图。
# 合并图形并设置布局
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中创建并排饼图的示例代码。这些步骤可以应用于任何数据集和任何数量的组。