我遇到了一個問題,如果我指定了另一種顏色,那么適用于位置躲避的設定會被禁用。這是一個可重現的示例:
library(emmeans)
noise.lm = lm(noise ~ size * type * side, data = auto.noise)
emmip(noise.lm, side * size ~ type, CIs = TRUE,
CIarg = list(lwd = 1, alpha = 0.5, linetype = "solid"))
這會產生以下情節

請注意,置信區間(垂直條)彼此偏移。但是,如果我做完全相同的事情但添加了顏色規范:
emmip(noise.lm, side * size ~ type, CIs = TRUE,
CIarg = list(lwd = 1, alpha = 0.5, linetype = "solid", color = "gray"))
然后我得到這個結果

...并且抵消似乎已被禁用。為什么會這樣,我該如何避免?
更多細節:CIarg引數 inemmip()用于指定生成置信區間的代碼的附加引數。里面的相關代碼emmeans::emmip()是
if (CIs) {
CIarg$mapping = ggplot2::aes_(ymin = ~LCL, ymax = ~UCL)
CIarg$position = pos
grobj = grobj do.call(ggplot2::geom_linerange, CIarg)
}
grobj正在創建的繪圖物件在哪里,并且(在代碼的前面)pos
是通過創建的
pos = ggplot2::position_dodge(width = ifelse(CIs|PIs, dodge, 0)) # use dodging if CIs
其中dodge = 0.1(默認引數值)。
uj5u.com熱心網友回復:
問題是分組以及因此的閃避是由顏色審美決定的。使用color="grey"您覆寫分組,并且 CI 的 lineranges 不再被躲避。我沒有看到任何避免這種情況的選擇,只有一個通過修復映射來解決這個問題,即將groupaes 添加到geom_linerange類似這樣的:
注意:tvar是映射在顏色上的變數aes。
library(emmeans)
noise.lm = lm(noise ~ size * type * side, data = auto.noise)
p <- emmip(noise.lm, side * size ~ type, CIs = TRUE,
CIarg = list(lwd = 1, alpha = 0.5, linetype = "solid", color = "grey"))
p$layers[[3]]$mapping <- ggplot2::aes_(ymin = ~LCL, ymax = ~UCL, group = ~tvar)
p

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/513416.html
標籤:rggplot2位置闪避
