Как сделать согласованные цветовые шкалы между двумя графиками с помощью geom_hex - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь сделать сравнение до / после двух графиков, поэтому мне нужно, чтобы они имели одинаковую цветовую шкалу, чтобы можно было провести истинное сравнение.Некоторое время я пытался изменить цветовую шкалу geom_hex, но я нашел только способы обеспечения минимального / максимального среза.Есть ли в любом случае ручная установка масштаба на определенный диапазон, например, 1-100?Мой код и примеры приведены ниже.

ggplot() +
  geom_hex(aes(x=VolumeBefore$Flow, y=SpeedBefore$Speed)) +
  xlab("Flow") + ylab("Speed (MPH)")+
  theme(legend.justification=c(1,0), legend.position=c(1,0), text = element_text(size = 20)) +
  ggtitle('Speed-Flow Before Density Plot')

ggplot() +
  geom_hex(aes(x=VolumeAfter$Flow, y=SpeedAfter$Speed)) +
  xlab("Flow") + ylab("Speed (MPH)")+
  theme(legend.justification=c(1,0), legend.position=c(1,0), text = element_text(size = 20)) +
  ggtitle('Speed-Flow After Density Plot')

До сюжета

После сюжета

На этих двух изображениях вывижу, что весы разные, я просто хочу сделать их одинаковыми :) Спасибо!

1 Ответ

1 голос
/ 01 июля 2019

Вот способ использования scale_fill_gradient2 и oob = scales::squish, который позволяет указать нижний и верхний диапазон для заливки и ограничивает любые значения за пределами этого диапазона.

Обратите внимание, что без спецификаций заливка будет использовать полный диапазон плотностей в данных:

ggplot(diamonds) +
  geom_hex(aes(x=carat,y=price)) +
  scale_fill_gradient2()

enter image description here

Мы могли бы поочередно указывать диапазон напрямую, ограничивая что-либо за пределами этого диапазона. Это позволит вам соответствовать легендам нескольких сюжетов:

ggplot(diamonds) +
  geom_hex(aes(x=carat,y=price)) +
  scale_fill_gradient2(limits = c(0, 3000), oob = scales::squish)

enter image description here

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