7

我想在我的情节中添加一条指数(+幂)(趋势)线。我正在使用 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我应该使用包中的其他功能?

4

1 回答 1

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

在此处输入图像描述


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

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

在此处输入图像描述

于 2012-05-10T08:21:18.967 回答