将exp / power趋势线添加到ggplot

时间:2012-05-10 06:34:10

标签: 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()

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

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

1 个答案:

答案 0 :(得分:10)

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

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

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

+ stat_smooth(method="lm")

到你的情节:

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

enter image description here


同样,拟合和绘制功率曲线就像将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")

enter image description here