Как я могу удалить метку NA в моей легенде GGplot?

#r #ggplot2

Вопрос:

мой исходный код
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")) приводит к этой легенде.

после прочтения в Интернете многие говорили, что используют 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»

Ответ №1:

Вы можете использовать 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)
 

Комментарии:

1. Знаете ли вы, есть ли какая-либо разница в поведении с na.omit/remove_missing другими, кроме na.rm

2. Это не сработало. НА все еще в легенде.

3. @Келси Я предполагаю, что это связано с тем, что твое «НА»на самом деле не является NA с. Обратите внимание на это "NA" != NA . Это хороший пример того, почему важно включать образцы данных в воспроизводимый формат (например, используя dput ).