如何在R的ggplot绘图中不显示NA值(灰色点)
解决ggplot散点图中NA值灰色点的问题
有两种常用方法可以隐藏这些NA值对应的点:
方法1:在geom_point()中添加na.rm = TRUE参数
直接在绘制点的图层里设置忽略NA值,这是最便捷的方式,无需修改原始数据:
ggplot(dolu, aes(x=month, y=year, color=value)) + geom_point(na.rm = TRUE) + # 添加该参数忽略NA值点 scale_x_continuous(breaks=1:12, labels=c("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık")) + theme_classic() + labs(x="Ay", y="Yıl")
方法2:提前过滤数据中的NA值
如果需要保留处理后的数据集用于其他分析,可以先过滤掉value列含NA的行(灰色点由该列NA值导致):
使用base R实现:
# 筛选value列非NA的行 dolu_clean <- dolu[!is.na(dolu$value), ] ggplot(dolu_clean, aes(x=month, y=year, color=value)) + geom_point() + scale_x_continuous(breaks=1:12, labels=c("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık")) + theme_classic() + labs(x="Ay", y="Yıl")
使用dplyr包实现:
library(dplyr) dolu_clean <- dolu %>% filter(!is.na(value)) ggplot(dolu_clean, aes(x=month, y=year, color=value)) + geom_point() + scale_x_continuous(breaks=1:12, labels=c("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık")) + theme_classic() + labs(x="Ay", y="Yıl")
两种方法都能有效移除灰色的NA值点,可根据实际需求选择。
内容的提问来源于stack exchange,提问作者Barış Durmuş
相关产品推荐
相关产品推荐

