相关疑难解决方法(0)

将exp/power趋势线添加到ggplot

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

r ggplot2

7
推荐指数
1
解决办法
6863
查看次数

ggplot2 scale_x_log10()销毁/不适用于通过stat_function()绘制的函数

我终于设法将我的自定义拟合函数绘制在ggplot2中的数据上,但是当我对x轴进行对数转换时,绘制的函数完全搞砸了.它看起来scale_x_log10()只适用于绘制的数据,但不适用于函数.

如何使功能以正确的比例显示?

以下是Hadley的stat_function()文档的修改示例:

x <- rnorm(100)
qplot(x, geom="density") + stat_function(fun = dnorm, colour="red")
Run Code Online (Sandbox Code Playgroud)

现在使用log10 x轴:

qplot(x, geom="density") + stat_function(fun = dnorm, colour="red") + scale_x_log10()
Run Code Online (Sandbox Code Playgroud)

更新

好吧,我认为我的例子不是很有用所以我尝试的方式不同:

基本上我想要的是重现我用曲线()做的情节.我在我的数据中安装了Hill函数,现在想要绘制它:

# the function
HillFunction <- function(ec50,hill,rmax,x) {rmax/(1+(ec50/x)^hill)} 
# fitted parameters
hill.args <- list(ec50=10^-2, hill=.7, rmax=1)                     

curve(HillFunction(ec50=hill.args$ec50,rmax=hill.args$rmax, hill=hill.args$hill,x),from=10^-5, to=10^5,log="x")  
Run Code Online (Sandbox Code Playgroud)

所以curve()给我一个平滑的S形曲线,如预期的那样.现在我尝试用ggplot重现相同的情节:

我添加一些数据从10 ^ -5到10 ^ 5只是为了定义绘图范围,不确定是否有更好的方法

p <- ggplot(data=data.frame(x=c(10^-5:10^5)), aes(x=x))  + stat_function(fun=HillFunction, args=hill.args, n=3000, color="red")        
Run Code Online (Sandbox Code Playgroud)

现在,如果我绘制p一切看起来很好,就像curve()没有logscale 的情节:

p
curve(HillFunction(ec50=hill.args$ec50,rmax=hill.args$rmax, hill=hill.args$hill,x),from=10^-5, to=10^5)    
Run Code Online (Sandbox Code Playgroud)

如果我变换坐标系,我得到一个S形曲线,但根本不光滑,曲线看起来很陡,但可能来自x缩放:

p + coord_trans(x ="log10")

如果我将x刻度定义为对数刻度,则绘图看起来很平滑但在10 ^ 0处停止: …

r ggplot2

4
推荐指数
1
解决办法
5297
查看次数

标签 统计

ggplot2 ×2

r ×2