首页 > 解决方案 > 如何删除 GGplot 图例中的 NA 标签?

问题描述

我的原始代码 my_graph10 <- ggplot(Adata, aes(x = SVL, y = Fi)) + geom_point(aes(color = Morph)) + labs(x = "SVL (mm)", y = "Front Inner Limb (mm)") + geom_smooth(method=lm,se=FALSE,aes(color = Morph,linetype = Morph)) + scale_color_manual(values = c("orange", "steelblue"))导致了这个 Legend NA

网上看了很多人说要用na.translate = F; 因此我将它添加到代码中 my_graph11 <- ggplot(Adata, aes(x = SVL, y = Fo)) + geom_point(aes(color = Morph)) + labs(x = "SVL (mm)", y = "Front Outer Limb (mm)") + geom_smooth(method=lm,se=FALSE,aes(color = Morph,linetype = Morph)) + scale_color_manual(**na.translate = F**, values = c("orange", "steelblue") ,我留下了这 两个传奇

但是,当我这样做时,它会从原始图例中删除 NA,但会为线型添加一个新的图例,在该图例下仍然列出 NA。我尝试为线型执行相同的代码,但收到此错误消息“错误:手动比例中的值不足。需要 2 但只提供了 0”

标签: rggplot2

解决方案


您可以使用remove_missing

# Let's create some sample data first
library(ggplot2)
set.seed(2020)
x <- seq(0, 1, length.out = 100)
df <- data.frame(
    x = x, 
    y = rnorm(length(x)), 
    Morph = sample(c("S", "U", NA), length(x), replace = TRUE))

# Use `remove_missing` with `na.rm = TRUE` to remove NA rows
ggplot(remove_missing(df, na.rm = TRUE), aes(x, y, colour = Morph)) + 
    geom_point() + 
    geom_smooth(aes(linetype = Morph), method = "lm", se = FALSE)

在此处输入图像描述

或者你使用na.omit

ggplot(na.omit(df), aes(x, y, colour = Morph)) + 
    geom_point() + 
    geom_smooth(aes(linetype = Morph), method = "lm", se = FALSE)

推荐阅读