R 绘图 – 饼图

以下是在 R 语言中绘制饼图的中文讲解,结合 Visual Studio Code(VSCode)环境,步骤简洁清晰,适合初学者。饼图(Pie Chart)常用于展示数据的比例分布。

1. R 饼图简介

R 语言提供多种方法绘制饼图,基础方法使用内置的 pie() 函数,高级可视化可使用 ggplot2 包。饼图适合展示分类数据的占比,但数据类别不宜过多(通常少于 6 类)以保持清晰。

2. 准备工作

  • 确保 R 已安装:参考前述 macOS R 环境安装指南,确保 R 和 VSCode 配置完成。
  • 安装必要包
  • 基础饼图使用 R 自带的 pie() 函数,无需额外包。
  • 高级饼图推荐使用 ggplot2,安装命令:
    R install.packages("ggplot2")
  • VSCode 配置
  • 确保安装了 R 扩展和 languageserver(见前述指南)。
  • 启用 httpgd 包以在 VSCode 中显示图形:
    R install.packages("httpgd")
  • 在 VSCode 设置中启用:
    json { "r.plot.useHttpgd": true }

3. 绘制基础饼图(使用 pie()

以下是使用 R 内置 pie() 函数绘制饼图的示例:

示例代码

在 VSCode 中新建一个 .R 文件(如 pie_chart.R),输入以下代码:

# 示例数据
categories <- c("苹果", "香蕉", "橙子", "葡萄")
values <- c(30, 25, 20, 15)

# 绘制饼图
pie(values, labels = categories, main = "水果销量占比", col = c("red", "yellow", "orange", "purple"))

代码说明

  • categories:饼图的分类标签(字符串向量)。
  • values:每个类别的数值(数值向量,占比自动计算)。
  • labels:设置饼图上显示的标签。
  • main:图表标题。
  • col:设置每个类别的颜色。

运行代码

  1. 在 VSCode 中选中代码,按 Ctrl + Enter(或 Cmd + Enter)运行。
  2. 图形将在 VSCode 的“绘图”面板或浏览器中显示(若启用 httpgd)。
  • 若未显示,检查是否安装 httpgd 或 XQuartz(运行 brew install --cask xquartz)。

4. 绘制高级饼图(使用 ggplot2

ggplot2 提供更美观、灵活的饼图绘制方式。以下是示例:

示例代码

在 VSCode 中新建或编辑 .R 文件,输入:

# 加载 ggplot2
library(ggplot2)

# 创建数据框
data <- data.frame(
  category = c("苹果", "香蕉", "橙子", "葡萄"),
  value = c(30, 25, 20, 15)
)

# 绘制饼图
ggplot(data, aes(x = "", y = value, fill = category)) +
  geom_bar(stat = "identity", width = 0.4) +
  coord_polar("y") +
  theme_void() +
  labs(title = "水果销量占比") +
  scale_fill_manual(values = c("red", "yellow", "orange", "purple"))

代码说明

  • library(ggplot2):加载 ggplot2 包。
  • data.frame:创建数据框,包含类别和数值。
  • geom_bar:绘制条形图,stat = "identity" 使用原始数值。
  • coord_polar("y"):将条形图转换为饼图。
  • theme_void():移除背景和坐标轴,突出饼图。
  • scale_fill_manual:自定义颜色。

运行代码

  1. 选中代码,按 Ctrl + Enter(或 Cmd + Enter)运行。
  2. 图形显示在 VSCode 的“绘图”面板或浏览器中。

5. 生成饼图

以下是基于示例数据的饼图代码块,用于 VSCode 显示:

{
  "type": "pie",
  "data": {
    "labels": ["苹果", "香蕉", "橙子", "葡萄"],
    "datasets": [{
      "data": [30, 25, 20, 15],
      "backgroundColor": ["#FF0000", "#FFFF00", "#FFA500", "#800080"]
    }]
  },
  "options": {
    "plugins": {
      "title": {
        "display": true,
        "text": "水果销量占比",
        "color": "#333333"
      },
      "legend": {
        "position": "right",
        "labels": { "color": "#333333" }
      }
    }
  }
}

说明

  • 上述代码块在 VSCode 中模拟饼图效果,数据与 R 示例一致。
  • backgroundColor:对应 R 示例中的颜色(红、黄、橙、紫)。
  • 实际 R 绘图使用 pie()ggplot2,此图仅为可视化参考。

6. 增强饼图

  • 添加百分比标签(pie()
  pie(values, labels = paste0(categories, " (", round(values/sum(values)*100, 1), "%)"), main = "水果销量占比")
  • 调整 ggplot2 饼图
  ggplot(data, aes(x = "", y = value, fill = category)) +
    geom_bar(stat = "identity", width = 0.4) +
    coord_polar("y") +
    theme_void() +
    geom_text(aes(label = paste0(round(value/sum(value)*100, 1), "%")), position = position_stack(vjust = 0.5)) +
    labs(title = "水果销量占比") +
    scale_fill_manual(values = c("red", "yellow", "orange", "purple"))
  • 保存图形
  • pie():使用 png()pdf()
    R png("pie_chart.png") pie(values, labels = categories, main = "水果销量占比") dev.off()
  • ggplot2:使用 ggsave()
    R ggsave("pie_chart_ggplot.png", width = 6, height = 4)

7. 常见问题

  • 图形不显示:确保 httpgd 已安装并在 VSCode 设置中启用 r.plot.useHttpgd。或安装 XQuartz(brew install --cask xquartz)。
  • 中文乱码:确保系统支持中文字体,在 R 中设置:
  par(family = "Arial Unicode MS")  # 或其他支持中文的字体
  • 颜色不美观:使用 RColorBrewer 包选择配色:
  install.packages("RColorBrewer")
  library(RColorBrewer)
  pie(values, labels = categories, col = brewer.pal(4, "Set3"))
  • 饼图过于复杂:类别过多时,考虑使用柱状图(barplot()geom_bar)。

8. 获取途径

  • R 语言:免费下载,访问 cran.r-project.org
  • VSCode:可通过 grok.comx.com、VSCode iOS/Android 应用免费使用(有限额)。付费订阅(如 SuperGrok)提供更高配额,详情见 x.ai/grok

如需更复杂的饼图(如 3D 饼图、环形图)或特定数据绘图帮助,请提供数据或需求!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注