以下是在 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:设置每个类别的颜色。
运行代码
- 在 VSCode 中选中代码,按
Ctrl + Enter(或Cmd + Enter)运行。 - 图形将在 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:自定义颜色。
运行代码
- 选中代码,按
Ctrl + Enter(或Cmd + Enter)运行。 - 图形显示在 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.com、x.com、VSCode iOS/Android 应用免费使用(有限额)。付费订阅(如 SuperGrok)提供更高配额,详情见 x.ai/grok。
如需更复杂的饼图(如 3D 饼图、环形图)或特定数据绘图帮助,请提供数据或需求!