【问题标题】:Adding a loess smooth after log-transformation of x-scale [closed]在 x 尺度的对数变换后添加黄土平滑 [关闭]
【发布时间】:2014-11-07 07:38:27
【问题描述】:

我正在绘制残差与时间的关系,并在绘图上添加一条黄土平滑曲线。当我将 x 比例更改为对数比例时,黄土平滑消失,之后我无法添加它。当我要求显示 x 轴对数转换后的图形时,RStudio 中出现以下错误:

Error in seq.default(range[1], range[2], length = n) :'from' cannot be NA, NaN or infinite. 

我做错了什么?如何在对数 x 尺度上添加黄土平滑? 他是我的情节代码:

max.CWRES <- max(abs(data$CWRES),na.rm=T)
plotobj3 <- NULL
plotobj3 <-  ggplot(data[data$CONC!=0,])
plotobj3 <- plotobj3 + geom_point(aes(x=TIME, y=CWRES, colour=DOSE), shape=1, size=3)
plotobj3 <- plotobj3 + geom_abline(aes(x=TIME, y=CWRES),intercept=0, slope=0, colour="black")        

#Add loess smoothing line
plotobj3 <- plotobj3 + geom_smooth(aes(x=TIME, y=CWRES), method="loess", se=F, span=1.5,   colour="green")       
plotobj3 <- plotobj3+ scale_x_continuous(name="Time (hours)")
plotobj3 <- plotobj3+ scale_y_continuous(name="CWRES", limits=c(-max.CWRES ,max.CWRES))

# log scale for x-axis
plotobj3 <- plotobj3+ scale_x_log10(name="TIME (hours)")
plotobj3

【问题讨论】:

  • 请提供一个可重现的例子。

标签: r ggplot2 loess


【解决方案1】:

这里的问题似乎是您以TIME = 0 开头。当你log10-转换你的x 轴时,日志时间从-Inf 开始。您应该(至少对于 loes 部分)只使用带有TIME &gt; 0 的数据:

plotobj3 + geom_smooth(aes(x = TIME, y=CWRES), 
                       data = data[data$TIME > 0 & data$CONC != 0, ], #this is the crucial part
                       method = "loess", 
                       se = FALSE, 
                       span = 1.5,   
                       colour = "green")        

请注意,这将使用原始数据进行模型拟合。如果您想使用log10 数据进行模型拟合,您可以在任何地方使用aes(x=log10(TIME), y=CWRES) 而不是aes(x=TIME, y=CWRES)

【讨论】:

  • 你是绝对正确的。当我设置 TIME>0 时效果很好。谢谢你:)
猜你喜欢
  • 2015-02-28
  • 1970-01-01
  • 2018-03-07
  • 2014-09-23
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 2012-07-13
相关资源
最近更新 更多