ggplot2绘制cats数据集散点图时图例显示NA但无缺失值的原因
图例出现NA标签的原因及解决办法
问题出在cut()函数和quantile()的默认行为配合上,和数据集本身的缺失值无关:
quantile(Hwt)默认会返回5个分位点:0%(最小值)、25%、50%、75%、100%(最大值),作为cut()的分割边界。cut()函数默认参数right=TRUE,生成的区间是左开右闭的。比如第一个区间是(最小值, 25%分位数],而数据中恰好存在等于最小值的样本点,这些点无法匹配任何左开右闭的区间,就被cut()归类为NA。- ggplot会把
cut()生成的所有分组(包括NA)都显示在图例里,所以即使原数据集没有缺失值,图例还是会出现NA标签。
解决办法
给cut()添加include.lowest=TRUE参数,让第一个区间包含最小值,这样所有数据点都会被分到对应的区间里,不会生成NA:
data(cats, package = "MASS") cats %>% ggplot(aes(x = Hwt, y = 1, color = cut(Hwt, quantile(Hwt), include.lowest = TRUE))) + geom_jitter() + coord_fixed(ratio = 3) + theme(legend.position = "top") + labs(x = "Cat heart weight, g", y = element_blank(), color = "Quantiles") + scale_color_discrete(labels = c("0-25%", "25-50%", "50-75%", "75-100%"))
内容的提问来源于stack exchange,提问作者user21767262
相关产品推荐
相关产品推荐

