Я только что нашел этот сюжет в «Фактичности» (книга Ганса Рослинга и его детей). Мне очень нравится эстетика сплита.
Хотя можно сделать нечто подобное, используя geom_rect()
, это совсем другой вид. Другой подход - использовать cowplot
или patchwork
, но довольно сложный. Вот насколько я пытался воспроизвести верхнюю часть с помощью
gapminder %>%
filter(year==1997, gdpPercap<16000) %>%
ggplot(aes(gdpPercap, y=lifeExp, size=pop)) +
geom_point(alpha=0.5)+
scale_x_log10()+
ggthemes::theme_base()+
theme(legend.position = "none",
plot.background = element_blank(),
plot.margin = unit(c(0.5, 0, 0, 0), "cm")) -> P1
gapminder %>%
filter(year==1997, gdpPercap>16000) %>%
ggplot(aes(gdpPercap, y=lifeExp, size=pop)) +
geom_point(alpha=0.5)+
scale_x_log10()+
ggthemes::theme_base()+
theme(legend.position = "none",
axis.title.y = element_blank(),
axis.ticks.y = element_blank(),
axis.text.y = element_blank(),
plot.background = element_blank(),
plot.margin = unit(c(0.5, 0.5, 0, 0), "cm"),
axis.title.x = element_blank()) -> P2
cowplot::plot_grid(P1, P2, rel_widths = c(2,1), labels = NULL,
align = "h")
Я думаю, что весь остальной текст и основные моменты возможны с существующие пакеты. Мне интересно, как получить общую ось x (правая сторона должна отображать галочки в соответствии с). В идеале заголовок оси x должен располагаться по центру, но это может быть слишком много. Я также могу переместить его внутрь как текст.
Есть проблемы с осями, как вы можете видеть на графике с отметками y. Интересно, было бы лучше использовать аспекты. Я также не уверен, неправильно ли рассчитан размер в пунктах, потому что я сначала фильтрую данные.