我想在我的情节中添加指数(+幂)(趋势)线。我正在使用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
包中是否有其他函数?
答案 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")
同样,拟合和绘制功率曲线就像将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")