我认为这是 ggplot2 最近的一个变化,scale_manual 函数中定义的所有值都包含在图例中,但我只想要图例中数据集中的值。
下面是一个最小的示例,其中“C”已从数据集中过滤出来,但仍然出现在图例中。有没有简单的修复方法可以从图例中删除“C”?
library(ggplot2)
library(dplyr)
df_dummy <- tribble(
~label, ~x, ~y,
"A", 1, 1,
"B", 2, 2,
"C", 3, 3,
"D", 4, 4
)
myColors <- viridis::viridis_pal(option = "H")(4)
names(myColors) <- factor(df_dummy$label)
dummy_col_scale <- scale_color_manual(name = "Legend", values = myColors)
df_dummy %>%
filter(label != "C") %>%
ggplot(aes(x, y, color = label)) +
geom_point() +
dummy_col_scale
Run Code Online (Sandbox Code Playgroud)
sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19044)
Matrix products: default
locale:
[1] LC_COLLATE=English_Australia.1252
[2] LC_CTYPE=English_Australia.1252 …Run Code Online (Sandbox Code Playgroud)