geom_point()无NA却丢失数据:8个样本点未绘制问题求助
排查建议
检查手动形状映射的完整性
你用了scale_shape_manual指定每个位点的形状,若有位点未在values参数中定义映射,ggplot会自动丢弃这些行。执行以下代码找出未被映射的位点:# 找出所有Catch_Location_Site中未在scale_shape_manual里定义的取值 setdiff(unique(Comp_Salmon$Catch_Location_Site), names(c("River Sella - Spain"=0, ...))) # 把...替换成你实际的shape映射列表如果结果正好是8个位点,说明问题出在这里,补充对应的形状映射即可。
验证误差棒计算是否生成NA
原始数据无NA,但计算误差棒的上下限时可能意外产生NA(比如SD为负数)。执行以下代码检查:Comp_Salmon %>% mutate( ymin = Mean_D15N - D15N_SD, ymax = Mean_D15N + D15N_SD, xmin = Mean_D13C - D13C_SD, xmax = Mean_D13C + D13C_SD ) %>% filter(is.na(ymin) | is.na(ymax) | is.na(xmin) | is.na(xmax))若返回结果包含行,说明这些行的误差棒计算出了问题,修复后即可显示。
临时移除手动形状映射测试
注释掉scale_shape_manual这一行,重新绘图。如果所有位点都能显示,直接证明是手动形状映射遗漏了8个位点的定义。确认数据行未被意外过滤
检查数据集的总行数是否符合预期:nrow(Comp_Salmon)若行数比预期少,说明之前的代码可能对数据集做了未注意到的筛选操作,回溯数据处理步骤排查。
将警告转为错误定位具体行
执行以下代码把警告强制转为错误,运行绘图代码时会直接报错并定位到具体缺失的行:options(warn = 2) Mean_Error_Comp_Salmon # 重新运行绘图代码查看报错对应的行,对比其他缺失行的共性,进一步定位问题。
内容的提问来源于stack exchange,提问作者Liz Quinlan
相关产品推荐
相关产品推荐

