在 R 中绘制 饼图 是一种常见的数据可视化方式,用于展示各个部分占总体的比例。我们可以使用 R 中的多个绘图包来创建饼图,常用的包包括 base 图形系统和 ggplot2 包。以下是如何使用这两种方法绘制饼图的示例。


🎯 一、使用 base 系统绘制饼图

R 的 base 图形系统提供了一个简单的 pie() 函数来绘制饼图。这个方法非常简单,适合快速生成基本的饼图。

示例:使用 pie() 函数绘制饼图

# 创建数据
data <- c(40, 30, 20, 10)

# 创建标签
labels <- c("A", "B", "C", "D")

# 绘制饼图
pie(data, labels = labels, col = rainbow(length(data)), main = "饼图示例")

  • data:是一个包含各部分数值的向量。
  • labels:是一个包含每个部分标签的向量。
  • col:指定饼图的颜色。这里使用 rainbow() 来为每个部分分配不同的颜色。
  • main:图表的标题。

进一步定制饼图

你可以进一步定制饼图的外观,例如添加百分比、调整标签的位置等。

# 绘制饼图并显示百分比
percentages <- round(data / sum(data) * 100)
labels_with_percent <- paste(labels, percentages, "%", sep = " ")

# 绘制带有百分比的饼图
pie(data, labels = labels_with_percent, col = rainbow(length(data)), main = "饼图示例(带百分比)")

  • percentages:计算每个部分的百分比。
  • paste():将标签与百分比连接起来,形成新的标签。

🎯 二、使用 ggplot2 包绘制饼图

ggplot2 包不直接支持饼图,但我们可以通过 geom_bar() 来创建类似饼图的效果。首先,需要将数据转换为适合绘制的格式,并使用 coord_polar() 函数将条形图转换为饼图。

安装并加载 ggplot2 包

# 安装 ggplot2 包
install.packages("ggplot2")

# 加载 ggplot2 包
library(ggplot2)

示例:使用 ggplot2 绘制饼图

# 创建数据框
data <- data.frame(
  category = c("A", "B", "C", "D"),
  value = c(40, 30, 20, 10)
)

# 绘制饼图
ggplot(data, aes(x = "", y = value, fill = category)) +
  geom_bar(stat = "identity", width = 1) + 
  coord_polar(theta = "y") +
  theme_void() +
  ggtitle("饼图示例(ggplot2)")

  • geom_bar(stat = "identity", width = 1):创建条形图,并指定条形的宽度为 1,使其成为圆形。
  • coord_polar(theta = "y"):将条形图转换为饼图。
  • theme_void():去除背景网格线,使饼图看起来更简洁。
  • ggtitle():添加图表标题。

更进一步定制饼图

我们还可以添加标签、调整颜色、设置透明度等来美化饼图。

# 添加标签,调整颜色和透明度
ggplot(data, aes(x = "", y = value, fill = category)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  theme_void() +
  ggtitle("饼图示例(ggplot2)") +
  geom_text(aes(label = paste(category, "\n", value, "%")), position = position_stack(vjust = 0.5), color = "white") +
  scale_fill_brewer(palette = "Set3")

  • geom_text():在饼图中添加文本标签,使用 paste() 函数结合类别和百分比。
  • position_stack(vjust = 0.5):控制标签的位置,使其位于每个部分的中间。
  • scale_fill_brewer(palette = "Set3"):为饼图的每个部分设置色调(使用调色板)。

✅ 三、总结

绘图方法示例代码
base 绘图系统无需额外包pie(data, labels = labels, col = rainbow(length(data)))
ggplot2 包绘制饼图ggplot2ggplot(data, aes(x = "", y = value, fill = category)) + geom_bar(stat = "identity", width = 1) + coord_polar(theta = "y")

通过这两种方法,你可以灵活地创建漂亮的饼图,选择适合你的方式来展示数据。如果你有其他绘图需求或者问题,随时告诉我!😊