使用ggplot绘制函数,相当于curve()函数。

78

使用ggplot绘制函数是否有与基础图形中的curve()命令相对应的方法?我猜想另一种选择就是创建一个函数值的向量并绘制连接线,但我希望有更简单的方法。

谢谢!

2个回答

88
你可以使用stat_function添加曲线:
ggplot(data.frame(x=c(0, 10)), aes(x)) + stat_function(fun=sin)
如果您的曲线函数比较复杂,那么可以使用lambda函数。例如,
ggplot(data.frame(x=c(0, 10)), aes(x)) + 
  stat_function(fun=function(x) sin(x) + log(x))

在早期版本中,您可以像下面这样使用qplot,但现在已不再建议使用。

你可以在这里找到其他示例。

qplot(c(0,2), fun=sin, stat="function", geom="line")

7
对于 qplot(c(0,2), fun=sin, stat="function", geom="line"),在2016年时 stat 已被弃用,而 fun 不再是一个可接受的参数。 - akhmed

2

上面的data.frame示例很好用,它可以生成网格线。而qplot示例在ggplot2 2.2.0中由于某些原因无法正常工作。

在ggplot2 2.2.0中,您还可以使用“curve”函数,但它不会自动生成网格线或背景颜色。例如:

curve(cos(x), from= 0, to= pi/2).  

"ggplot(data.frame(...))" 方法提供了 ggplot2 格式化选项的全部功能,非常令人印象深刻。我喜欢它。


4
curve 是一个基础函数,而不是 ggplot2 的函数。它没有像 ggplot2 那样绘制网格线或背景色,这是因为它不是 ggplot2 - Gregor Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接