我正在嘗試使用 ggplot 更改顯示的圖例的一部分。例如,如果我有一些資料并創建一個這樣的圖:
library(ggplot2)
dat <- data.frame(
nam = c('a','b','c','d','e','f','g','h','i'),
val = c(2,5,1,6,8,3,9,10,8)
)
col1 <- setNames(scales::hue_pal(c(0, 360) 15, 100, 64, 0, 1)(length(dat$nam[1:5])), dat$nam[1:5])
col2 <- setNames(rep('#e6e6e6', length(dat$nam[6:9])), dat$nam[6:9])
colFinal <- unname(c(col1, col2))
ggplot(dat, aes(x = nam, y = val, fill= nam ))
geom_bar(stat = 'identity')
scale_fill_manual(values = colFinal, name = 'name')
theme_bw()
這創造了這個情節:
如您所見,ftoi都涂成相同的灰色。我想知道是否可以通過“合并”來更改圖例f以i僅顯示這些值的單個圖例條目。例如,我正在嘗試做這樣的事情:

但需要注意的是,我試圖通過改變情節本身來做到這一點。我無法回傳并更改資料框。我在想也許這可以通過使用來實作,ggplot_build但我不確定!?
關于我如何做到這一點的任何建議?
uj5u.com熱心網友回復:
一種選擇是通過操縱物件手動設定填充比例的breaks和:labelsggplot
library(ggplot2)
dat <- data.frame(
nam = c('a','b','c','d','e','f','g','h','i'),
val = c(2,5,1,6,8,3,9,10,8)
)
col1 <- setNames(scales::hue_pal(c(0, 360) 15, 100, 64, 0, 1)(length(dat$nam[1:5])), dat$nam[1:5])
col2 <- setNames(rep('#e6e6e6', length(dat$nam[6:9])), dat$nam[6:9])
colFinal <- unname(c(col1, col2))
p <- ggplot(dat, aes(x = nam, y = val, fill= nam ))
geom_bar(stat = 'identity')
scale_fill_manual(values = colFinal, name = 'name')
theme_bw()
p$scales$scales[[1]]$breaks <- letters[1:6]
p$scales$scales[[1]]$labels <- c(letters[1:5], "Others")
p

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446275.html
