R facet wrap, каждый обертка имеет свою шкалу - PullRequest
1 голос
/ 08 мая 2020
library(ggpointdensity)
library(viridis)
ggplot(data = diamonds, mapping = aes(x = jitter(carat), y = jitter(price))) +
  geom_pointdensity(method = 'default') +
  scale_color_viridis() + theme_bw() + 
  facet_grid(~ cut, scales = 'free')

Обратите внимание на результат ниже, все грани окрашены на основе одной общей глобальной шкалы плотности . Как я могу заставить каждый фасет иметь свою собственную шкалу, поэтому он будет раскрашен только на основе их количества точек данных, а не относительно других точек данных из другого фасета. enter image description here

Мое текущее не очень оптимальное решение - использовать пэчворк

library(patchwork)
r1 <- ggplot(data = diamonds %>% filter(cut == 'Fair'), mapping = aes(x = jitter(carat), y = jitter(price))) +
  geom_pointdensity(method = 'default') +
  scale_color_viridis() + theme_bw()

r2 <- ggplot(data = diamonds %>% filter(cut == 'Good'), mapping = aes(x = jitter(carat), y = jitter(price))) +
  geom_pointdensity(method = 'default') +
  scale_color_viridis() + theme_bw()

r3 <- ggplot(data = diamonds %>% filter(cut == 'Very Good'), mapping = aes(x = jitter(carat), y = jitter(price))) +
  geom_pointdensity(method = 'default') +
  scale_color_viridis() + theme_bw()

r4 <- ggplot(data = diamonds %>% filter(cut == 'Premium'), mapping = aes(x = jitter(carat), y = jitter(price))) +
  geom_pointdensity(method = 'default') +
  scale_color_viridis() + theme_bw()

r5 <- ggplot(data = diamonds %>% filter(cut == 'Ideal'), mapping = aes(x = jitter(carat), y = jitter(price))) +
  geom_pointdensity(method = 'default') +
  scale_color_viridis() + theme_bw()

r1 + r2 + r3 + r4 + r5 

enter image description here

...