R Plotly:在子集上添加黄土线

问题描述

我正在尝试使用plotly将整个数据框的一条黄土线(或线性空气模型)拟合到该数据框的子集上。

model_LV2F<- loess(p_LV2F ~schoolweging,data = df)
plot_ly(df_subset) %>% 
  add_markers(x=~schoolweging,y=~p_LV2F,marker=list(color="red",opacity=3/10),name="2F") %>%
  add_lines(x=~schoolweging,y=~model_LV2F$fitted,line=list(color="red"))

我收到错误消息“标题栏必须具有兼容的大小。”,因为该模型基于6000个观测值,而子集数据框仅包含23个观测值。

如何从另一个数据框中添加预先计算的参考线?

解决方法

我很确定这不是大多数R解决方案,但我设法完成了它。 我编写了一个函数来提取拟合线的所有x和y对,并仅保留唯一值。 之后,我可以将这些值加入我的子集数据框中。

loess_ref <- function(...) {
  mdl <- loess(...)
  x <- mdl$x[,]
  y <- mdl$fitted
  mdl_df <- data.frame(x,y) %>% drop_na() %>% unique()
}

loess_LV2F <- loess_ref(p_LV2F ~ schoolweging,data = df)

df_subset %>%
  left_join(loess_LV2F,by = c("schoolweging" = "x")) %>%
  plot_ly() %>%
  add_markers(
    x =  ~ schoolweging,y =  ~ p_LV2F,marker = list(color = "red",opacity = 3 / 10),name = "2F"
  ) %>%
  add_lines(
    x =  ~ schoolweging,y =  ~ model_LV2F$fitted,line = list(color = "red")
  )

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...