首页 > 解决方案 > 如何将用户定义的二次方程绘制为散点图的叠加?

问题描述

我希望有人能建议我如何用特定方程绘制二次曲线,并设置 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 的叠加层。

标签: rdata-visualizationggplot2

解决方案


你可以用它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))

屈服

在此处输入图像描述

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

例子

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")

屈服

在此处输入图像描述


推荐阅读