如何控制使用 "mgcViz" 包中的 plot.mgamViz 生成的 mqgam 图的外观(例如线条大小、线条类型、颜色)?

How does one control the appearance (e.g. line size, line type, colour) of mqgam plots produced using plot.mgamViz from the "mgcViz" package?

我在 qgam 包中使用 R 中的分位数回归,并使用 mgcViz 包将它们可视化,但我很难理解如何控制地块的外观。该软件包有效地将 gams(在我的例子中是 mqgams)转换为 ggplots。

简单的表示:

egfit <- mqgam(data = iris,
               Sepal.Length ~ s(Petal.Length),
               qu = c(0.25,0.5,0.75))

plot.mgamViz(getViz(egfit))

我能够控制可以添加的东西,例如轴标签和情节的主题,但我正在努力影响通常在 aes() 或 [=54= 中解决的事情]() 函数。

  1. 如何控制线条的粗细?如果这是一个正常的 geom_smooth() 或 geom_line() 我会简单地将 size = 1 放在 geoms 中,但我看不到我如何在这里这样做。

  2. 如何控制这些线的线型? "id" 是连续的,不能为连续比例提供线型。如果这是一个正常的情节,我会将 "id" 转换为一个字符,但我看不到使用 plot.mgamViz 函数的方法。

  3. 如何提供新的色标?似乎如果我为它提供一个新的色标,它就会发明新的 ID 值来放置与实际 "id" 值不相关的图例,例如

    plot.mgamViz(getViz(egfit)) + scale_colour_viridis_c()

我完全希望这会相对简单,但我遗漏了一些明显的东西,并且可以想象所有这三个子问题的答案都非常相似。提前致谢。

您需要使用此提取 ggplot 元素:

p1 <- plot.mgamViz(getViz(egfit))
p <- p1$plots [[1]]$ggObj

那么,id应该是as.factor:

p$data$id <- as.factor(p$data$id)

现在您可以随心所欲地使用 ggplot 个元素:

library(mgcViz)

    egfit <- mqgam(data = iris,
                   Sepal.Length ~ s(Petal.Length),
                   qu = c(0.25,0.5,0.75))

    p1 <- plot.mgamViz(getViz(egfit))

    # Taking gg infos and convert id to factor
    p <- p1$plots [[1]]$ggObj
    p$data$id <- as.factor(p$data$id)


    # Changing ggplot attributes
    p <- p +
      geom_line(linetype = 3, size = 1)+ 
      scale_color_brewer(palette = "Set1")+
      labs(x="Petal Length", y="s(Petal Length)", color = "My ID labels:")+
      theme_classic(14)+
      theme(legend.position = "bottom")
    p

此处生成的图:

希望有用!