如果组仅包含NA,则ggplot填充失败

时间:2018-02-16 15:41:01

标签: r ggplot2

我正在使用ggplot和以下数据绘制箱线图:

plot_data <- structure(list(group = c("a1", "a1", "a1", "a2", "a2", "a2", "b1", "b1", "b1", "b2", "b2", "b2"), value = c(1, 2, 3, 1, 2, 3, NA, NA, NA, 1, 2, 3)), .Names = c("group", "value"), row.names = c(NA, -12L), class = "data.frame")

以下代码:

ggplot(data = plot_data, aes(x = group, y = value))+
    geom_boxplot(fill= c('blue','blue','green','green'))+
    theme_classic()

这会导致此错误:

Error: Aesthetics must be either length 1 or the same as the data (3): fill

发生错误是因为一个组只有NA个值。 ggplotx轴上显示了这个组,我喜欢但却抱怨填充空箱图。

我可以通过删除其中一个填充参数来修复它。 然而,由于我在循环内多次使用绘图函数,因此有时某些组的值仅为NA,因此这并不可行。我知道,我可以根据数据中包含的组动态创建填充向量,但我希望它不变。

所以我的问题是:

是否有可能使用相同的填充向量,ggplot没有任何抱怨?喜欢另一种选择吗?

1 个答案:

答案 0 :(得分:2)

这样的东西?

ggplot(plot_data) +geom_boxplot(aes(x = group, y = value,fill=group))+
  theme_classic()

enter image description here