#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
).