如何绘制用户定义的二次方程作为散点图的叠加?

时间:2018-07-27 20:11:34

标签: r data-visualization ggplot2

我希望有人可以建议我如何绘制具有特定方程式的二次曲线,并设置x,y轴。我正在使用ggplot创建散点图,并使用geom_point绘制了一些单独的数据点,并将轴指定为:

+ coord_cartesian(xlim = c(2, 7)) + 
scale_x_continuous(breaks=seq(2, 7, 1)) + 
coord_cartesian(ylim = c(0.40, .54)) + 
scale_y_continuous(breaks=seq(.40, .54, 0.02))

我还指定了我的数据:ggplot(data= data, aes(x=years,y=metric1))

我想绘制一个二次曲线以用特定的公式(例如y = 0.4 + .025x -.002x^2)覆盖在我的绘图上。在某些情况下,我希望绘制两个或三个不同的二次曲线。我希望有人可以帮助我如何创建曲线作为覆盖图,或者可以如何绘制具有这些特定x和y轴的方程,然后将其用作R之外的覆盖图。

1 个答案:

答案 0 :(得分:1)

您可以使用stat_function()绘制此曲线。

library(ggplot2)
ggplot(data.frame(x=c(0, 10)), aes(x)) + 
  stat_function(fun=function(x) 0.4 + .025*x - .002*x^2) +
  coord_cartesian(xlim = c(2, 7), ylim = c(0.40, .54)) + 
  scale_x_continuous(breaks=seq(2, 7, 1)) + 
  scale_y_continuous(breaks=seq(.40, .54, 0.02))

屈服

enter image description here

您也可以轻松添加叠加层。

示例

ggplot(data = iris, aes(x = Sepal.Width, y = Sepal.Length)) + 
  geom_jitter() +
  stat_function(fun=function(x) 2.5 + 2.4*x - .5*x^2) +
  stat_function(fun=function(x) 2 + 2.4*x - .5*x^2, color="red")

屈服

enter image description here