用ggplot绘制函数,等效于curve()


69

是否有与基础图形中使用ggplotcurve()命令相对应的方法来绘制函数?我想,替代方法是只创建函数值的向量并绘制一条连接的线,但是我希望有一些更简单的方法。

谢谢!

Answers:


78

您可以使用来添加曲线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))

您可以在http://kohske.wordpress.com/2010/12/25/draw-function-without-data-in-ggplot2/中找到其他示例


在早期版本中,您可以使用qplot,如下所示,但是现在不建议使用。

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

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

2

data.frame上面的示例效果很好,并且制作了网格线。qplot由于给出的原因,该示例在ggplot2 2.2.0中不起作用。

您也可以在ggplot2 2.2.0中使用“曲线”功能,但不会自动绘制网格线或背景色。例如:

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

“ ggplot(data.frame(...)方法”提供了ggplot2格式设置的全部令人印象深刻的范围。我喜欢它。


2
curve是基本函数,而不是ggplot2函数。它之所以不会像网格线或背景色那样,ggplot2是因为不是ggplot2
格雷戈尔·托马斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.