ggplot2: geom_point иногда удаляет значения NA в зависимости от используемой эстетики c - PullRequest
2 голосов
/ 28 февраля 2020

Я строю коэффициенты корреляции r и размеры выборки n из корреляционной матрицы на том же графике (r в верхнем треугольнике, n в нижнем треугольнике). Обычно у меня нет проблем с ggplot2 удалением моих NA перед построением графика, но в этой ситуации это только удаление NA значений некоторых времени, и я не знаю почему. Я использую ggplot2 версии 3.2.1.

Пример кадра данных:

library(ggplot2)
library(dplyr)

ex <- data.frame(x1 = c(rep("2010", 3), rep("2011", 3), rep("2012", 3)),
                 x2 = rep(c("2010", "2011", "2012"), 3),
                 r = c(NA, 0.5, 0.2, NA, NA, 0.1, NA, NA, NA),
                 n = c(NA, NA, NA, 25, NA, NA, 70, 50, NA))

Когда я запускаю этот график с размером в качестве эстетики c, NA автоматически удаляются из оба geoms:

ex %>%
  ggplot(aes(x1, x2))+
  geom_point(aes(size = r))+
  geom_text(aes(label = n))

Но когда я запускаю этот график с цветом в качестве эстетики c, NA удаляются только из geom_text, а не geom_point:

ex %>%
  ggplot(aes(x1, x2))+
  geom_point(aes(color = r), size = 6)+
  geom_text(aes(label = n))

Этот вопрос stackoverflow не применим, потому что я не хочу отфильтровать строки. Я также попытался изменить x1, x2 и r на символ, основанный на this , но он также не работал

ex %>%
  ggplot(aes(as.character(x1), as.character(x2)))+
  geom_point(aes(color = as.character(r)), size = 6, na.rm = T) +
  geom_text(aes(label = n))

Есть ли способ сделать цвет эстетическим c игнорировать НС?

1 Ответ

2 голосов
/ 28 февраля 2020

Вы можете установить значение na.value для цветовых шкал. Если установить значение NA, то пропущенные точки не отображаются:

ex %>%
  ggplot(aes(x1, x2))+
  geom_point(aes(color = r), size = 6)+
  geom_text(aes(label = n)) + 
  scale_color_gradient(na.value = NA)

ggplotwithnacolour

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...