我试图创建一个填充美学映射到有序因子的曲线图,但该因子的某些级别并不存在于数据中.缺失的系数级别通过scale_fill_manual()指定填充 colored颜色 ,但在我的绘图中,这些填充 colored颜色 不会由填充图例表示.

我希望scale_fill_manual()中的drop = FALSE能够显示因子的每个级别及其填充 colored颜色 ,但它保留了这些级别,并显示它们缺少填充 colored颜色 .如何使图例反映我为比例指定的映射?

library(ggplot2)

factor_data <- 
  data.frame(
    my_factor <- 
      factor("Level three", 
             levels = c("Level one", "Level two", "Level three", "Level four", "Level five"))
  )

fill_colours <- colorRampPalette(c("green", "white"))(5)

fill_colours
#> [1] "#00FF00" "#3FFF3F" "#7FFF7F" "#BFFFBF" "#FFFFFF"

ggplot(factor_data) +
  geom_bar(
    aes(x = 1, fill = my_factor),
    colour = "black", linewidth = 0.8) +
  scale_fill_manual(name = "IMD Rank (England)",
                    values = fill_colours,
                    drop = FALSE) + 
  ggtitle("Deprivation of LLSOA")

创建于2024-03-04年第reprex v2.1.0

推荐答案

这是由于ggplot2 3.5.0中的更改,现在需要在geom中额外设置show.legend=TRUE以显示缺少的因素水平.请参见this GH issue.

library(ggplot2)

packageVersion("ggplot2")
#> [1] '3.5.0'

ggplot(factor_data) +
  geom_bar(
    aes(x = 1, fill = my_factor),
    colour = "black", linewidth = 0.8,
    show.legend = TRUE
  ) +
  scale_fill_manual(
    name = "IMD Rank (England)",
    values = fill_colours,
    drop = FALSE
  ) +
  ggtitle("Deprivation of LLSOA")

R相关问答推荐

高质量地将R格式的图表从Word中输出

在R中查找每个组不同时间段的总天数

计算R中的威布尔分布的EDF

R Markdown中的交叉引用表

如何自定义Shapviz图?

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

用值序列对行进行子集化,并标识序列开始的列

如果某些列全部为NA,则更改列

对于变量的每个值,仅 Select 包含列表中所有值的值.R

仅在Facet_WRAP()中的相应方面包含geom_abline()

如何在科学记数法中显示因子

在保留列表元素属性的同时替换列表元素

悬崖三角洲超大型群数计算导致整数溢出

R中Gamma回归模型均方误差的两种计算方法不一致

当每个变量值只能 Select 一次时,如何从数据框中 Select 两个变量的组合?

在不对R中的变量分组的情况下取两行的平均值

有没有办法将基于每个值中出现的两个关键字或短语的字符串向量重新编码为具有这两个值的新向量?

计算Mean by分组和绑定到R中的数据集

如何使用list_rind在列表中保留已命名但不包含第0行的记录?

Gggvenn为Venn增加了不存在的价值