将exp/power趋势线添加到ggplot

PJe*_*sen 7 r ggplot2

我想在我的情节中添加指数(+幂)(趋势)线.我正在使用ggplot2包.

我有这样的东西(只是有更多的数据):

require(ggplot2)

df <-read.table("test.csv", header = TRUE, sep = ",")
df
    meta temp
1  1.283    6
2  0.642    6
3  1.962    6
4  8.989   25
5  8.721   25
6 12.175   25
7 11.676   32
8 12.131   32
9 11.576   32

ggplot(df, aes(temp, meta)) + 
    ylab("Metabolism") + xlab("Temperature") +
    geom_point() + 
    theme_bw() + 
    scale_x_continuous(limits = c(0, 35)) + 
    scale_y_log10()
Run Code Online (Sandbox Code Playgroud)

我知道这应该用指数函数来表达 - 所以我的问题是我如何能够以最好的'指数'拟合?同样,是否也可以进行功率拟合?

stat_smooth()函数是否有这个机会,或者ggplot2我应该使用的包中还有其他功能吗?

And*_*rie 10

您可以stat_smooth通过传递两个参数来指定模型以适合作为参数:

  • 方法,例如 method="lm"
  • 模型,例如 model = log(y) ~ x

ggplot2 首先进行比例转换,然后拟合模型,因此在您的示例中,您只需添加

+ stat_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)

你的情节:

library(ggplot2)
ggplot(df, aes(temp, meta)) + 
    ylab("Metabolism") + xlab("Temperature") +
    geom_point() + 
    theme_bw() + 
    scale_x_continuous(limits = c(0, 35)) + 
    scale_y_log10() +
    stat_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


同样,拟合和绘制功率曲线就像将x刻度更改为log一样简单:

ggplot(df, aes(temp, meta)) + 
    ylab("Metabolism") + xlab("Temperature") +
    geom_point() + 
    theme_bw() + 
    scale_x_log10() + 
    scale_y_log10() +
    stat_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述