簡體   English   中英

ggplot 將變量添加到圖例而不包括在繪圖中(使用 alpha 時)

[英]ggplot add variable to legend without including in plot (when using alpha)

我想在圖例中添加一個變量而不將其包含在圖中。

我認為當我不使用alpha時不會出現問題(請參閱: 如何將變量添加到圖例而不將其包含在圖表中?

library(tidyverse)

name_color <- c('black', "blue", "orange", "pink")
names(name_color) <- letters[1:4]

tibble(name = rep(letters[1:4], each = 2),
       respond = rep(c("yes", "no"), 4),
       n = rep(50, 8),
       me = "i") %>%
  filter(name != "c") %>% 
  ggplot(aes(me, n, fill = name, alpha = respond)) +
  facet_wrap(~name) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = name_color, drop = FALSE)

add_to_legend

這個問題與alpha無關。 問題是您的數據的類別。 當您使用tibble創建數據時, name列的類為character 您需要一個factor類來“記住”未使用的級別:

name_color <- c('black', "blue", "orange", "pink")
names(name_color) <- letters[1:4]
d = tibble(name = rep(letters[1:4], each = 2),
       respond = rep(c("yes", "no"), 4),
       n = rep(50, 8),
       me = "i") %>%

class(d$name)
# [1] "character"

d %>% mutate(name = factor(name)) %>%  
  filter(name != "c") %>% 
  ggplot(aes(me, n, fill = name, alpha = respond)) +
  facet_wrap(~name) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = name_color, drop = FALSE)

在此處輸入圖片說明

在您鏈接的原始問題中,您明確進行了因子轉換,這就是它起作用的原因。

... %>% mutate(
  gear = factor(gear),
  vs = factor(vs)
) %>% ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM