You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ggplot2复现R基础绘图函数曲线的问题求助

解决ggplot2复现基础绘图曲线异常及调整线宽问题

1. 基础绘图(Base Graphics)的正确实现

使用R基础绘图成功生成4条函数曲线,代码及效果如下:

I0 <- log(1)
I1 <- log(1/2)
b <- .1
d <- .01
d1 <- .014

curve(exp(I0 - b * x), 0, 50, col = "blue", lwd = 2)
curve(exp(d * x) - 1, 0, 50, add = TRUE, col = "orange", lwd = 2)
curve(exp(I1 - b * x), 0, 50, add = TRUE, lty = 2, col = "green", lwd = 2)
curve(exp(d1 * x) - 1, 0, 50, add = TRUE, lty = 2, col = "red", lwd = 2)

Plot using base graphics

2. ggplot2复现的异常原因

尝试用ggplot2复现时得到异常结果,核心问题是代码中两个函数遗漏了-1的运算:基础绘图里橙色、红色曲线对应的函数是exp(d * x) - 1和exp(d1 * x) - 1,但ggplot2代码里只写了exp(d * x)和exp(d1 * x),导致数值范围差异极大,出现异常图形。

原异常代码及效果:

library(ggplot2)

I0 <- log(1)
I1 <- log(1/2)
b <- .1
d <- .01
d1 <- .014

base <- ggplot() + xlim(0, 50) +
  geom_function(fun = function(x) exp(I0 - b * x), colour = "blue") +
  geom_function(fun = function(x) exp(d * x), colour = "orange") +
  geom_function(fun = function(x) exp(I1 - b * x), color = "green") +
  geom_function(fun = function(x) exp(d1 * x), color = "red")

plot(base)

Plot using ggplot

3. 修正后的ggplot2代码

补上遗漏的-1,同时添加线型、线宽参数,完全复现基础绘图的样式:

library(ggplot2)

I0 <- log(1)
I1 <- log(1/2)
b <- .1
d <- .01
d1 <- .014

base <- ggplot() + xlim(0, 50) +
  geom_function(fun = function(x) exp(I0 - b * x), colour = "blue", size = 2) +
  geom_function(fun = function(x) exp(d * x) - 1, colour = "orange", size = 2) +
  geom_function(fun = function(x) exp(I1 - b * x), color = "green", linetype = 2, size = 2) +
  geom_function(fun = function(x) exp(d1 * x) - 1, color = "red", linetype = 2, size = 2)

plot(base)

4. ggplot2中调整线宽的方法

在ggplot2里,调整线宽使用size参数(区别于基础绘图的lwd),有两种常用方式:

  • 单条曲线调整:在对应的geom_function(或其他线类geom,如geom_line)中直接添加size=数值,比如size=2对应基础绘图的lwd=2。
  • 全局线宽调整:使用theme(panel.grid.major = element_line(size=1), panel.grid.minor = element_line(size=0.5))等,统一设置主题内的线宽。

内容的提问来源于stack exchange,提问作者maurobio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:05:59