R 绘图 – 条形图
以下是在 R 语言中绘制条形图(Bar Chart)的中文讲解,结合 Visual Studio Code(VSCode)环境,步骤简洁清晰,适合初学者。条形图常用于展示分类数据的数量或比较不同类别的值。
1. R 条形图简介
R 语言提供多种方法绘制条形图,基础方法使用内置的 barplot()
函数,高级可视化可使用 ggplot2
包。条形图适合展示分类数据的对比,分为垂直条形图和水平条形图。
2. 准备工作
- 确保 R 已安装:参考前述 macOS R 环境安装指南,确保 R 和 VSCode 配置完成。
- 安装必要包:
- 基础条形图使用 R 自带的
barplot()
函数,无需额外包。 - 高级条形图推荐使用
ggplot2
,安装命令:R install.packages("ggplot2")
- VSCode 配置:
- 确保安装了 R 扩展和
languageserver
(见前述指南)。 - 启用
httpgd
包以在 VSCode 中显示图形:R install.packages("httpgd")
- 在 VSCode 设置中启用:
json { "r.plot.useHttpgd": true }
3. 绘制基础条形图(使用 barplot()
)
以下是使用 R 内置 barplot()
函数绘制条形图的示例:
示例代码
在 VSCode 中新建一个 .R
文件(如 bar_chart.R
),输入以下代码:
# 示例数据
categories <- c("苹果", "香蕉", "橙子", "葡萄")
values <- c(30, 25, 20, 15)
# 绘制垂直条形图
barplot(values, names.arg = categories, main = "水果销量", xlab = "水果", ylab = "销量", col = c("red", "yellow", "orange", "purple"))
# 绘制水平条形图
barplot(values, names.arg = categories, main = "水果销量(水平)", xlab = "销量", ylab = "水果", col = c("red", "yellow", "orange", "purple"), horiz = TRUE)
代码说明
categories
:条形图的分类标签(字符串向量)。values
:每个类别的数值(数值向量)。names.arg
:设置条形图的标签。main
:图表标题。xlab
,ylab
:X 轴和 Y 轴标签。col
:设置每个条形的颜色。horiz = TRUE
:将条形图设置为水平方向。
运行代码
- 在 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 = category, y = value, fill = category)) +
geom_bar(stat = "identity") +
labs(title = "水果销量", x = "水果", y = "销量") +
scale_fill_manual(values = c("red", "yellow", "orange", "purple")) +
theme_minimal()
# 绘制水平条形图
ggplot(data, aes(x = category, y = value, fill = category)) +
geom_bar(stat = "identity") +
coord_flip() +
labs(title = "水果销量(水平)", x = "水果", y = "销量") +
scale_fill_manual(values = c("red", "yellow", "orange", "purple")) +
theme_minimal()
代码说明
library(ggplot2)
:加载ggplot2
包。data.frame
:创建数据框,包含类别和数值。geom_bar(stat = "identity")
:绘制条形图,使用原始数值。coord_flip()
:将条形图翻转为水平方向。labs
:设置标题和轴标签。scale_fill_manual
:自定义条形颜色。theme_minimal()
:使用简洁主题,移除复杂背景。
运行代码
- 选中代码,按
Ctrl + Enter
(或Cmd + Enter
)运行。 - 图形显示在 VSCode 的“绘图”面板或浏览器中。
5. 生成条形图
以下是基于示例数据的条形图代码块,用于 VSCode 显示:
{
"type": "bar",
"data": {
"labels": ["苹果", "香蕉", "橙子", "葡萄"],
"datasets": [{
"label": "销量",
"data": [30, 25, 20, 15],
"backgroundColor": ["#FF0000", "#FFFF00", "#FFA500", "#800080"],
"borderColor": ["#333333"],
"borderWidth": 1
}]
},
"options": {
"scales": {
"y": {
"beginAtZero": true,
"title": { "display": true, "text": "销量", "color": "#333333" }
},
"x": {
"title": { "display": true, "text": "水果", "color": "#333333" }
}
},
"plugins": {
"title": {
"display": true,
"text": "水果销量",
"color": "#333333"
},
"legend": {
"display": false
}
}
}
}
说明
- 上述代码块在 VSCode 中模拟垂直条形图效果,数据与 R 示例一致。
backgroundColor
:对应 R 示例中的颜色(红、黄、橙、紫)。- 实际 R 绘图使用
barplot()
或ggplot2
,此图仅为可视化参考。
6. 增强条形图
- 添加数值标签(
barplot()
):
barplot(values, names.arg = categories, main = "水果销量", xlab = "水果", ylab = "销量", col = c("red", "yellow", "orange", "purple"))
text(x = barplot(values, plot = FALSE), y = values, labels = values, pos = 3)
- 添加数值标签(
ggplot2
):
ggplot(data, aes(x = category, y = value, fill = category)) +
geom_bar(stat = "identity") +
geom_text(aes(label = value), vjust = -0.5) +
labs(title = "水果销量", x = "水果", y = "销量") +
scale_fill_manual(values = c("red", "yellow", "orange", "purple")) +
theme_minimal()
- 分组条形图(
ggplot2
):
data_grouped <- data.frame(
category = rep(c("苹果", "香蕉", "橙子"), 2),
value = c(30, 25, 20, 28, 22, 18),
group = rep(c("2024", "2025"), each = 3)
)
ggplot(data_grouped, aes(x = category, y = value, fill = group)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "水果销量对比", x = "水果", y = "销量") +
scale_fill_manual(values = c("blue", "green")) +
theme_minimal()
- 保存图形:
barplot()
:R png("bar_chart.png") barplot(values, names.arg = categories, main = "水果销量") dev.off()
ggplot2
:R ggsave("bar_chart_ggplot.png", width = 6, height = 4)
7. 常见问题
- 图形不显示:确保
httpgd
已安装并启用r.plot.useHttpgd
。或安装 XQuartz(brew install --cask xquartz
)。 - 中文乱码:设置中文字体:
par(family = "Arial Unicode MS") # 或其他支持中文的字体
- 条形图拥挤:减少类别数量或调整图形宽度(如
width
参数或ggsave(width=8)
)。 - 颜色不美观:使用
RColorBrewer
:
install.packages("RColorBrewer")
library(RColorBrewer)
barplot(values, names.arg = categories, col = brewer.pal(4, "Set3"))
8. 获取途径
- R 语言:免费下载,访问 cran.r-project.org。
- VSCode:可通过 grok.com、x.com、VSCode iOS/Android 应用免费使用(有限额)。付费订阅(如 SuperGrok)提供更高配额,详情见 x.ai/grok.
如需更复杂的条形图(如堆叠条形图、多组对比)或特定数据绘图帮助,请提供数据或需求!