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
:设置每个类别的颜色。
运行代码
- 在 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 饼图、环形图)或特定数据绘图帮助,请提供数据或需求!