小编Max*_*ohl的帖子

如何从 ggplot2 scale_color_manual() 中删除未使用的值?

我认为这是 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)

r ggplot2

4
推荐指数
1
解决办法
564
查看次数

标签 统计

ggplot2 ×1

r ×1