如果用 ggplot2, 可以用 stat_function 把生成数据这一步抽象掉。
library(ggplot2)
out <- ggplot(data.frame(x = c(0, 10)), aes(x))
for (i in 1:4) {
out = out + stat_function(fun = function(.x ,z) z/.x,
color = i,
args = list(z=i),
xlim=c(i/10,10) )
}
out
我以前画图用TikZ 或 Mathematica。 刚用 R 时,觉得画函数图像还得先“生成数据”这一步很奇怪,画出来的图不是“矢量图”。后来才发现 TikZ 不过是把“生成数据”这一步抽象掉了。
Update: 之前犯了两个错误 (i) 循环变量应该在 args 里,(ii) x
得从 z/10
开始,因为要求 y
在0到10取值。很奇怪 stat_function 没有 ylim 这个参数。dapengde 我给你那个 bookdown 项目交了 PR.