我正在創建一個相對豐度資料的堆積條形圖,但我只想在圖例中顯示選定的幾個有趣的分類群。我試過使用scale_fill_manual(values = sample(col_vector), breaks = legend_list). 結果只顯示了legend_list我希望的選定圖例,但所有其他因素都沒有顯示顏色。如何將所有顏色顯示為堆積條形圖,但僅顯示因子的圖例legend_list?
我的代碼:
ggplot(df, aes_string(x = x, y = y, fill = fill))
geom_bar(stat="identity", position="stack")
scale_fill_manual(values = sample(col_vector),
breaks = legend_list)
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

uj5u.com熱心網友回復:
您的問題的原因很可能是您使用了未命名的顏色矢量。在后臺,當您將向量傳遞給breaks引數時,該向量用作傳遞給values引數的顏色向量的名稱。但是,當中斷數小于顏色數時,僅命名某些顏色,而所有其他顏色的名稱設定為NA。因此,只有通過breaks引數指定的類別被分配填充顏色,而所有其他類別被分配na.value默認為"grey50".
由于您沒有提供最小的可重現示例,因此我使用基于ggplot2::mpg資料集的基本示例首先嘗試重現您的問題,然后再提供修復:
library(ggplot2)
library(dplyr)
base <- ggplot(mpg, aes(class, fill = manufacturer))
geom_bar()
legend_list <- c("audi", "volkswagen")
col_vector <- scales::hue_pal()(n_distinct(mpg$manufacturer))
base scale_fill_manual(values = sample(col_vector), breaks = legend_list)

解決此問題的一種方法是使用命名的顏色矢量。這樣做會為所有類別分配一種顏色,但只有通過breaks引數指定的類別才會顯示在圖例中:
names(col_vector) <- sample(unique(mpg$manufacturer))
base scale_fill_manual(values = col_vector, breaks = legend_list)

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