GGplot圖例顯示缺失因子水平的空白填充

我正試圖使用ggplot繪制一個頻率圖,其中刪除的值仍顯示在圖例中。我已經能夠通過在scale_fill_manual中設置drop = FALSE來實現這一點,但是,盡管我已經明確設置了刪除的字段,但它在圖例中沒有顏色。我創建了一個與下面的數據類似的示例。在這個例子中,我正在尋找用scale_fill_manual中設置的顏色顯示在圖例中的男性,但我似乎不知道如何做到這一點。

Data_Sample <- data.frame(CatType = c(rep("C1",3), rep("C2",7), rep("C3",8), rep("C4", 9), rep("C5", 2), rep("C6", 1)), 
Owner = c("Angela", "Karen", "Angela")) %>%
  mutate(Sex = ifelse(str_detect(CatType,"6"), "Male", "Female"),
         CatID = str_pad(row_number(), 2, pad="0"),
         Sex = factor(Sex, c("Male" = "Male", "Female" = "Female")),
         Owner = factor(Owner, c("Angela" = "Angela", "Karen" = "Karen")),
         CatType = factor(CatType))

Sample_Plot <- ggplot(Data_Sample %>% filter(., Owner == "Karen"), aes(x = CatType)) +
  geom_bar(colour = "#2E312F",aes(y = 100*((..count..)/sum(..count..)), fill = Sex)) +
  scale_x_discrete(drop = FALSE) +
  geom_text(aes(label = paste(stat(100*round((..count..)/sum(..count..),5)), "%", sep = ""), x = CatType, y = stat(100*round((..count..)/sum(..count..),5))), stat = "count", colour = "#2E312F",size = 3.5, fontface = "bold", vjust = -0.25) +
  theme(axis.text.x = element_text(face="bold"),
        axis.title.y = element_text(face="bold", size=11),
        axis.text.y = element_text(face="bold"),
        axis.title.x = element_text(face="bold", size=11),
        legend.title = element_text(face="bold", size=11),
        legend.text = element_text(face="bold", size=7.5),
        plot.title = element_text(face="bold", size=14, hjust = 0.5),
        legend.title.align = 0.5,
        legend.text.align = 0,
        legend.box.background = element_rect(colour = "black", fill = "transparent", size = 1.5),
        strip.text = element_text(face="bold", size=14),
        panel.border = element_rect(colour = "black", fill=NA, linewidth = 2)
  ) +
  scale_fill_manual(values = c("Female" = "#c90076", "Male" = "#2986cc"), drop = FALSE) +
  guides(fill = guide_legend(reverse=TRUE)) +
  labs(x = "Cat Type", y = "Percentage of Cats", title = paste("Karen's Cats", sep =" ")) +
  scale_y_continuous(label=scales::label_percent(scale = 1), limits = c(0,100))

? 最佳回答:

這是由于在ggplot2 3.5.0中引入了一個更改,該更改現在需要將show.legend=TRUE顯式添加到geom中,以顯示未使用因子級別的圖例鍵。另外請注意,我切換到了after_stat,因為..stat在版本3.4.0中已被棄用,并且使用hjust來對齊圖例文本和標題,因為{#18}在3.5.0中已棄用。

library(ggplot2)
library(dplyr, warn = FALSE)

ggplot(Data_Sample %>% filter(., Owner == "Karen"), aes(x = CatType)) +
  geom_bar(colour = "#2E312F", aes(
    y = 100 * after_stat(count / sum(count)),
    fill = Sex
  ), show.legend = TRUE) +
  scale_x_discrete(drop = FALSE) +
  geom_text(
    aes(
      label = paste0(round(100 * after_stat(count / sum(count))), "%"),
      x = CatType,
      y = 100 * after_stat(count / sum(count))
    ),
    stat = "count", colour = "#2E312F",
    size = 3.5, fontface = "bold", vjust = -0.25
  ) +
  theme(
    axis.text.x = element_text(face = "bold"),
    axis.title.y = element_text(face = "bold", size = 11),
    axis.text.y = element_text(face = "bold"),
    axis.title.x = element_text(face = "bold", size = 11),
    legend.title = element_text(face = "bold", size = 11, hjust = .5),
    legend.text = element_text(face = "bold", size = 7.5, hjust = 0),
    plot.title = element_text(face = "bold", size = 14, hjust = 0.5),
    legend.box.background = element_rect(
      colour = "black",
      fill = "transparent", linewidth = 1.5
    ),
    strip.text = element_text(face = "bold", size = 14),
    panel.border = element_rect(colour = "black", fill = NA, linewidth = 2)
  ) +
  scale_fill_manual(values = c("Female" = "#c90076", "Male" = "#2986cc"), drop = FALSE) +
  guides(fill = guide_legend(reverse = TRUE)) +
  labs(x = "Cat Type", y = "Percentage of Cats", title = paste("Karen's Cats", sep = " ")) +
  scale_y_continuous(label = scales::label_percent(scale = 1), limits = c(0, 100))

主站蜘蛛池模板: 久久青草精品一区二区三区| 国产激情一区二区三区 | 亚洲综合国产一区二区三区| 波多野结衣AV一区二区三区中文| 精品一区二区三区四区| 无码毛片视频一区二区本码| 久久一区不卡中文字幕| 日韩在线视频一区| 一区二区三区视频网站| 国产一区韩国女主播| 国产精品视频免费一区二区三区 | 精品人无码一区二区三区| 精品国产一区二区三区在线观看| 亚洲Av永久无码精品一区二区 | 成人区精品一区二区不卡亚洲| 精品国产一区二区三区麻豆| 亚洲字幕AV一区二区三区四区| 国产在线精品一区二区中文| 精品日本一区二区三区在线观看| 能在线观看的一区二区三区| 国精品无码一区二区三区在线| 国产激情无码一区二区三区| 亚洲国模精品一区| 亚洲色精品VR一区区三区 | 综合无码一区二区三区四区五区| 色妞色视频一区二区三区四区| 成人精品视频一区二区| 相泽南亚洲一区二区在线播放| 无码少妇一区二区三区芒果| 久久久国产精品无码一区二区三区 | 国产伦精品一区二区三区精品 | 高清一区二区三区免费视频| 久久精品一区二区免费看| 香蕉久久一区二区不卡无毒影院| 一区二区三区观看免费中文视频在线播放| 日韩视频一区二区三区| 中文字幕一区视频| 精品一区二区三人妻视频| 波多野结衣中文一区| 上原亚衣一区二区在线观看| 在线精品一区二区三区|