You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:46:00