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:将条形图设置为水平方向。

运行代码

  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 = 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():使用简洁主题,移除复杂背景。

运行代码

  1. 选中代码,按 Ctrl + Enter(或 Cmd + Enter)运行。
  2. 图形显示在 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.comx.com、VSCode iOS/Android 应用免费使用(有限额)。付费订阅(如 SuperGrok)提供更高配额,详情见 x.ai/grok.

如需更复杂的条形图(如堆叠条形图、多组对比)或特定数据绘图帮助,请提供数据或需求!

类似文章

发表回复

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