我正在嘗試使用 ggplot2 的語法來編輯由 emmean 的箭頭圖生成的刻面標簽文本以覆寫默認值。
pigs.lm <- lm(log(conc) ~ source as.factor(percent),
data = pigs)
pigs.plot <- plot(emmeans(pigs.lm , specs = "percent", by="source"), comparison = T)

protein_names <- list('source: fish'="Source: Fish",
'source: soy'="Source: Soybean",
'source: skim'="Source: Skim milk")
我在這一步出錯。我如何解決它?
pigs.plot facet_wrap(~ source, labeller = protein_names)
Error in cbind(labels = list(), list(`{`, if (!is.null(.rows) || !is.null(.cols)) { : number of rows of matrices must match (see arg 2)
我也試過facet_grid,但沒有運氣。
uj5u.com熱心網友回復:
你也可以試試這個:
#自定義標簽
custom_labels <- as_labeller(function(x){
return(paste0("Source: ", c("Fish", "Soybean", "Skim milk")))
})
#制作情節
pigs.plot facet_wrap(~ source, labeller = custom_labels, strip.position = "right", ncol = 1)

uj5u.com熱心網友回復:
你快到了。(1) 你需要一個命名向量(我認為),而不是一個串列;(2) 串列的名稱應該與 faceting 變數的元素匹配,而不是已經標記的值(即條帶標簽)。
pp <- unlist(protein_names)
names(pp) <- gsub("source: ","", names(pp))
pigs.plot facet_wrap(~ source, labeller = labeller(source = pp), ncol = 1)
您還可以通過這種方式首先正確構建標簽:
capwords <- function(x) gsub("^([a-z])", "\\U\\1", x, perl=TRUE)
s <- levels(pigs$source)
protein_names <- setNames(sprintf("Source: %s", capwords(s)), s)
uj5u.com熱心網友回復:
在我看來,在許多需要自定義繪圖的情況下,基本上從頭開始會更直接:
plotdat <- plot(emmeans(...), comp = TRUE, plotit = FALSE)
現在您有一個資料框,其中包含構建繪圖所需的每個值。所以現在以您喜歡的方式繪制這些資訊,也許首先添加或修改列plotdat。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/387228.html
上一篇:重新排列x軸以顯示多年資料的儒略日期(例如,0-365)一次
下一篇:將標簽繪制為帶邊而不是圓角的矩形
