Изменение цветовой шкалы в geom_raster для лучшего отображения выбросов - PullRequest
0 голосов
/ 13 июня 2019

У меня есть набор данных с несколькими выбросами, которые я строю как растр в ggplot.Немодифицированные цветовые схемы обычно выделяют эти выбросы за счет демонстрации распределения большей части данных.Установка пределов помогает, но значения выше указанных пределов теряются.Есть ли способ сделать график значений выше пределов в конце цветовой шкалы?

Вот пример из верного набора данных.Это не идеальная аналогия с моими данными, поскольку нет никаких выбросов, вызывающих проблемы, но это показывает мой вопрос.

ggplot(faithfuld, aes(waiting, eruptions)) +
  geom_raster(aes(fill = density))+
  scale_fill_gradientn(colours = 
  c("red", "orange", "yellow", "green","blue","purple","white"))

Скажем, я хочу меньше фокусироваться на более высоких значениях.Возможно, есть лучший способ сделать это, а не устанавливать ограничения?С ограничениями я теряю данные выше максимума (здесь 0,03).

ggplot(faithfuld, aes(waiting, eruptions)) +
geom_raster(aes(fill = density))+
scale_fill_gradientn(limits = c(0,.03),
                   colours = c("red","orange", "yellow", "green","blue",
                               "purple","white"))

В идеале, я хотел бы построить график, как в ГИС, где значения выше моего предела будут установлены на максимальное значениецветовой шкалы.Я всегда мог взломать данные, чтобы это отобразилось, но я надеюсь, что в ggplot есть более элегантное решение.

1 Ответ

0 голосов
/ 13 июня 2019

Вы можете использовать na.value, чтобы определить цвет выбросов, и сопоставить цвет выброса с цветом для максимального значения.

ggplot(faithfuld, aes(waiting, eruptions)) +
  geom_raster(aes(fill = density))+
  scale_fill_gradientn(limits = c(0,.03),
                       na.value = "white", #na.value color same as color for max value
                       colours = c("red","orange", "yellow", "green","blue",
                                   "purple","white"))

Единственным недостатком этого является то, что шкала по-прежнему отображает 0,03 для белого, хотя она должна иметь значение> 0,03, чтобы быть точным. Вы можете отредактировать свою шкалу, чтобы сделать метки точными.

...