R 绘图 – 函数曲线图

以下是在 R 语言中绘制函数曲线图(Function Curve Plot)的中文讲解,结合 Visual Studio Code(VSCode)环境,重点包括中文支持,内容简洁清晰,适合初学者。函数曲线图用于展示数学函数(如 y = f(x))在指定区间内的变化趋势。

1. R 函数曲线图简介

R 语言提供多种方法绘制函数曲线图,基础方法使用内置的 plot()curve() 函数,高级可视化可使用 ggplot2 包。函数曲线图适合展示连续数据的数学关系,如正弦函数、二次函数等。中文支持需要正确配置字体和图形设备以避免乱码。

2. 准备工作

  • 确保 R 已安装:参考前述 macOS R 环境安装指南,确保 R 和 VSCode 配置完成。
  • 安装必要包
  • 基础曲线图使用 R 自带的 plot()curve() 函数,无需额外包。
  • 高级曲线图推荐使用 ggplot2
    R install.packages("ggplot2")
  • 安装 httpgd 包以在 VSCode 中显示图形:
    R install.packages("httpgd")
  • VSCode 配置
  • 确保安装了 R 扩展和 languageserver(见前述指南)。
  • 在 VSCode 设置中启用 httpgd
    json { "r.plot.useHttpgd": true }
  • 中文支持:安装 showtext 包以确保中文显示正常:
  install.packages("showtext")
  • 安装 XQuartz(若需要):macOS 默认图形设备可能需要 XQuartz 支持中文显示:
  brew install --cask xquartz

3. 配置中文支持

为避免中文标题、标签乱码,推荐以下方法:

方法 1:设置中文字体(基础绘图)

par(family = "Arial Unicode MS")  # 或 "PingFang SC"

方法 2:使用 showtext 包(推荐)

library(showtext)
showtext_auto()  # 自动启用 showtext
font_add("myfont", regular = "Arial Unicode MS")  # 或其他中文字体

方法 3:使用 httpgd

httpgd 通过浏览器渲染图形,支持中文显示,与 VSCode 集成良好。确保 VSCode 设置中启用 r.plot.useHttpgd

4. 绘制基础函数曲线图(使用 curve()

以下是使用 R 内置 curve() 函数绘制函数曲线图的示例,以 y = sin(x) 为例。

示例代码

在 VSCode 中新建 .R 文件(如 curve_plot.R),输入:

# 设置中文字体
par(family = "Arial Unicode MS")

# 绘制正弦函数曲线
curve(sin(x), from = -2*pi, to = 2*pi, n = 100, 
      main = "正弦函数曲线", xlab = "x 值", ylab = "sin(x)", 
      col = "blue", lwd = 2)

代码说明

  • curve(sin(x), ...):绘制函数 sin(x) 的曲线。
  • from, to:指定 x 轴范围(-2π 到 2π)。
  • n:采样点数,控制曲线平滑度。
  • main, xlab, ylab:设置标题和轴标签。
  • col, lwd:设置线条颜色和宽度。

运行代码

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

5. 绘制高级函数曲线图(使用 ggplot2

ggplot2 提供更美观、灵活的曲线图绘制方式。以下以 y = x² 为例。

示例代码

library(ggplot2)
library(showtext)
showtext_auto()
font_add("myfont", regular = "Arial Unicode MS")

# 创建数据
x <- seq(-5, 5, length.out = 100)
data <- data.frame(x = x, y = x^2)

# 绘制二次函数曲线
ggplot(data, aes(x = x, y = y)) +
  geom_line(color = "blue", linewidth = 1) +
  labs(title = "二次函数曲线", x = "x 值", y = "y = x²") +
  theme_minimal(base_family = "myfont")

代码说明

  • seq(-5, 5, length.out = 100):生成 x 值序列。
  • data.frame:创建数据框,包含 x 和 y = x²。
  • geom_line:绘制连续曲线。
  • labs:设置标题和轴标签。
  • theme_minimal(base_family = "myfont"):使用简洁主题和中文字体。

运行代码

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

6. 生成函数曲线图(参考)

以下是基于 y = x² 的曲线图代码块,用于 VSCode 显示:

{
  "type": "line",
  "data": {
    "labels": [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5],
    "datasets": [{
      "label": "y = x²",
      "data": [25, 16, 9, 4, 1, 0, 1, 4, 9, 16, 25],
      "borderColor": "#0000FF",
      "backgroundColor": "transparent",
      "fill": false,
      "lineTension": 0.4
    }]
  },
  "options": {
    "scales": {
      "y": {
        "title": { "display": true, "text": "y = x²", "color": "#333333" },
        "beginAtZero": true
      },
      "x": {
        "title": { "display": true, "text": "x 值", "color": "#333333" }
      }
    },
    "plugins": {
      "title": {
        "display": true,
        "text": "二次函数曲线",
        "color": "#333333"
      },
      "legend": {
        "display": true,
        "labels": { "color": "#333333" }
      }
    }
  }
}

说明

  • 上述代码块模拟 y = x² 的曲线图效果,数据为参考(实际 R 绘图使用连续数据)。
  • 实际 R 绘图使用 curve()ggplot2,此图为可视化参考。

7. 增强函数曲线图

  • 绘制多条曲线(curve()
  par(family = "Arial Unicode MS")
  curve(sin(x), from = -2*pi, to = 2*pi, col = "blue", main = "正弦与余弦函数", xlab = "x 值", ylab = "y 值")
  curve(cos(x), from = -2*pi, to = 2*pi, col = "red", add = TRUE)
  legend("topleft", legend = c("sin(x)", "cos(x)"), col = c("blue", "red"), lty = 1)
  • 绘制多条曲线(ggplot2
  library(ggplot2)
  library(showtext)
  showtext_auto()
  font_add("myfont", regular = "Arial Unicode MS")

  x <- seq(-2*pi, 2*pi, length.out = 100)
  data <- data.frame(
    x = rep(x, 2),
    y = c(sin(x), cos(x)),
    group = rep(c("sin(x)", "cos(x)"), each = 100)
  )

  ggplot(data, aes(x = x, y = y, color = group)) +
    geom_line(linewidth = 1) +
    labs(title = "正弦与余弦函数", x = "x 值", y = "y 值") +
    scale_color_manual(values = c("blue", "red")) +
    theme_minimal(base_family = "myfont")
  • 保存图形
  • curve()
    R png("curve_plot.png", family = "Arial Unicode MS") curve(sin(x), from = -2*pi, to = 2*pi, main = "正弦函数曲线") dev.off()
  • ggplot2
    R ggsave("curve_plot_ggplot.png", width = 6, height = 4, device = cairo_pdf)

8. 常见问题

  • 中文乱码
  • 使用 par(family = "Arial Unicode MS")showtext 设置字体。
  • 检查系统字体:运行 system("fc-list :lang=zh") 查看可用中文字体。
  • 使用 cairo_pdf 设备保存图形以支持中文:
    R pdf("chart.pdf", family = "Arial Unicode MS", useDingbats = FALSE)
  • 图形不显示:确保 httpgd 已安装并启用 r.plot.useHttpgd。检查 XQuartz:
  brew install --cask xquartz
  • 曲线不平滑:增加采样点数(如 n = 1000length.out = 1000)。
  • 字体不可用:尝试 PingFang SCSTHeiti
  par(family = "PingFang SC")

9. 获取途径

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

如需更复杂曲线图(如多函数对比、对数坐标)或特定函数绘图帮助,请提供函数或数据需求!

类似文章

发表回复

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