В свежем номере журнала The Lancet опубликована моя статья — любопытная карта и небольшое к ней пояснение. Решил рассказать об этом на Хабре, поскольку есть надежда, что реализованный способ визуализации данных может пригодиться еще кому-то.
Kashnitsky, I., & Scholey, J. (2018). Regional population structures at a glance. The Lancet, 392(10143), 209–210. https://doi.org/10.1016/S0140-6736(18)31194-2
Собственно, вот карта в высоком разрешении (кликабельно).
Карту можно воспроизвести точь-в-точь за несколько минут, код на гитхабе.
Данные создают цвета
Эта карта представляет собой «моментальный снимок» региональных возрастных структур населения в современной Европе. Соотношения детей, взрослых и пожилых к населении каждого из регионов закодировано цветом – данные «сами создают цвета». Возрастной структуре населения Европы соответствует серый цвет, который получается смешиванием в равных пропорциях розового, голубого и желтого. Чем больше возрастная структура населения региона отличается от среднеевропейской, тем больше доминирует один из трех цветов: желтый – если в населении преобладают пожилые, розовый – дети, голубой – люди трудоспособного возраста.
Одна карта может поведать нам бесконечное количество демографических историй. Курдистан, юго-восточная часть Турции, еще не завершил демографический переход, Восточная Европа переживает последние годы демографического дивиденда, в то время как западная Европа стремительно стареет. Столичные регионы стягивают население трудоспособного возраста, пристоличные регионы – молодые семьи с детьми, а в провинции остаются доживать старики. Приблизите карту, и вы увидите явственную границу между двумя Бельгиями – Фландрией и Валлонией. А знаете что это за яркое сиреневое пятно в Финляндии? Оказывается, там живут лестадианцы, крайне традиционные протестанты, предпочитающие в вопросах планирования семьи благочестивую позицию «сколько Бог пошлет» – рассказали мне финские демографы на Европейской конференции по изучению народонаселения. А посмотрите на Испанию, береговые регионы которой вместе со столичным регионом получили в нулевые годы невероятный приток международной миграции, в отличие от внутренней периферии страны.
tricolore
Цвета созданы с помощью нашего R пакета tricolore
. Этот пакет, как мы надеемся, позволит исследователям из разных областей науки с легкостью отображать цветом троичные композиции данных. Чтобы "пощупать" возможности метода, можно поиграться со встроенным интерактивным примером, приложением shiny.
install.packages("tricolore")
library(tricolore)
DemoTricolore()
Весь код на гитхабе
- Мой PhD проект — Regional demographic convergence in Europe
- Пост с первой версией карты, представленной на Rostock Retreat Visualization в июне 2017
- Статья (Scholey & Willekens 2017), в которой опубликованы исходные идеи пакета tricolore
- Еще один мой пример использования метода для кодирования цветом троичных композиций смертности по причинам смерти
- Моя статья, в которой исследуются региональные различия возрастных структур в Европе
UPD 2018-07-24: Разместил вчера карту на реддите (r/dataisbeautiful). За сутки 450К+ просмотров, 11.5К+ рейтинг, 365 комментариев. И дискуссия, порой, очень толковая. [ссылка на пост]
Комментарии (37)
Koyanisqatsi
23.07.2018 08:42+1Как интересно на фоне остальных выделяется Ирландия, хотя вот Турция с такими же цветами нет.
artem_seleznev
23.07.2018 11:50+1в Ирландии традиционно высокий (для Западной Европы) суммарный коэффициент рождаемости (СКР). Там более сильное влияние религии на менталитет
Nick_mentat
24.07.2018 10:37Наверное из-за уровня в жизни. Помнится, Ирландия держалась в топе по ИРЧП довольно долго.
olgerdovich
23.07.2018 12:06+1С ума сойти, у вас есть публикация в Lancet — мои поздравления!
Таким не грех хвастаться и просто так, не говоря уж о том, что рассказать публике о том, как опубликоваться в ланцете.ikashnitsky Автор
23.07.2018 12:30+1Спасибо! Думаю, что "рассказать публике" нечего (см. картинку в подвале). Это очень нестандартная публикация для Ланцета, тем более для формата писем. Пожалуй, один вывод можно сделать уверенно: красивая визуализация нравится всем, в том числе и редакторам журналов. Нет, еще вывод: стоит пытаться.
Как опубликоваться в The LancetJavian
23.07.2018 12:08+1Интересно бы взглянуть на национальный состав. Возможно население трудоспособного возраста имеет заметную долю мигрантов.
ikashnitsky Автор
23.07.2018 12:40Несомненно. Но тут значительно сложнее с данными. Качество данных о миграции традиционно отвратительно. Исследователи прибегают к косвенным методам оценивания. Вот пример:
Wilson, C., Sobotka, T., Williamson, L., & Boyle, P. (2013). Migration and intergenerational replacement in Europe. Population and Development Review, 39(1), 131–157. https://doi.org/10.1111/j.1728-4457.2013.00576.x
Это одна из моих самых любимых статей. В студенческие годы я ее даже перевел на русский. Очень рекомендую, если интересна миграция.
Уилсон, К., Соботка, Т., Уильямсон, Л., & Бойл, П. (2015). Миграция и замещение поколений в Европе. Демографическое Обозрение, 2(1), 56–88. https://demreview.hse.ru/article/view/1789
Пара картинок из статьиstriver
23.07.2018 12:40Слишком много цветов на карте и по легенде частенько сложно сказать, что они означают. Есть ли возможность сгруппировать в, например, 9 групп с отдельным цветом для каждой? Как по мне — это наглядней. Текущая карта — слишком детально. К тому же данные по населению, скорее всего, примерные. Например, для меня Норвегия — полная загадка, что у них происходит, если просто сравнить карту и легенду.
Javian
Интересно бы взглянуть на национальный состав. Возможно население трудоспособного возраста имеет заметную долю мигрантов.
Лучше нац. состав на другой карте и просто накладывать, при желании, ибо если еще эти данные внести, то получится такой винегрет, что не разберешь.ikashnitsky Автор
23.07.2018 13:30Есть такая возможность в нашем пакете
tricolore
. Но, конечно, надо делать отдельно.
пример (другие данные)install.packages("tricolore") library(tricolore) DemoTricolore()
Rusli
23.07.2018 14:05+1А не лучше было использовать чистые цвета RGB?
То есть например, Working Age — это чистый 0, 0, 255.
Young — 255, 0, 0.
Тогда области со сбалансированным населением были бы просто белыми, а не имели этого сложного грязного цвета.ikashnitsky Автор
23.07.2018 14:11Была такая попытка. Все сотрудничество с Йонасом у меня началось с идеи применения здесь perceptionally balanced color scheme.
RGBkrundetz
23.07.2018 16:00А почему от этого варианта отказались?
ikashnitsky Автор
23.07.2018 16:25Теоретически CYMK цвета правильнее для отображения композиций.
Scholey, J., & Willekens, F. (2017). Visualizing compositional data on the Lexis surface. Demographic Research, 36(21), 627–658. https://doi.org/10.4054/DemRes.2017.36.21
Syzd
23.07.2018 16:05А по-моему понятнее так. Красное — старое население, красное цвет проблемы. Зеленое — «можно идти» (работать), синее — юность.
ikashnitsky Автор
23.07.2018 16:26Худший вариант для людей с нарушениями цветовосприятия. Только создав эту карту, я с удивлением понял, как же их много
tyomitch
24.07.2018 00:41Демографические проблемы отображались бы при делении на «дети и студенты / трудоустроенные / безработные и пенсионеры», а не тупо по возрасту.
Что-то мне подсказывает, что 64-летний британец куда как экономически активнее 64-летнего курда.JobberNet
24.07.2018 06:28Скорее наоборот, 64-летний курд пенсию не получает, а потому пашет так же активно как и в молодости. У британца — просто денег больше.
krundetz
24.07.2018 12:50Если учесть:
1. что британец выходит на пенсию в 65 лет,
2. что курд выходит на пенсию в 60 лет (это возраст выхода на пенсию в Турции и Иране)
то ваше утверждение не корректно.
У британца — просто денег больше.
Думаю зависимость обратная.
Чем экономически активнее человек, тем у него денег больше.JobberNet
24.07.2018 13:16Чем экономически активнее человек, тем у него денег больше.
При прочих равных. Экономическая активность в каком-нибудь Бутане, принесёт меньше денег, чем «ничего-неделание» в Европе.
Welran
23.07.2018 14:19+1Всё равно цвета будут грязно серыми, а не чисто белым. Надо еще яркость на максимум cтавить. А вообще тут дело привычки скорее. Так как в оригинальном просто используется базис голубой, пурпурный и жёлтый, удобней для печати.
ikashnitsky Автор
23.07.2018 14:29https://twitter.com/jschoeley/status/1001503122873872385
install.packages("tricolore") library(tricolore) DemoTricolore()
Welran
23.07.2018 15:06Тут вопрос был в том что смешивание цветов происходит с уменьшением их яркости. Видимо типа при 33% каждого компонента, яркость компоненты снижается на 66% и в сумме получается темносерый цвет. Но возможно было бы красивее повышает общую яркость наибольшей компоненте до максимума и остальные пропорционально. Тогда при равных пропорциях получился бы белый цвет, а на гифке в центре всегда темно серый при любых значениях цвета в углах.
ikashnitsky Автор
23.07.2018 15:18Что-то вроде этого вам хочется?
tricolore::DemoTricolore()Rusli
23.07.2018 19:31Да, так гораздо лучше! Сбалансированное население — это ведь отсутствие проблемы, значит, логичней всего оставить белым. Чем темнее фон, тем больше дисбаланс. Ну а сам цвет уже показывает, в какую сторону этот дисбаланс.
Гораздо логичней, чем первоначальный вариант с каким-то сложным серобуромалиновым для сбалансированных областей.ikashnitsky Автор
23.07.2018 20:12+1Проблема в том, что нам хочется сохранить максимальное визуальное разнообразие оттенков цвета. А это, чисто теоретически, достигается при идеально сером цвете центра ("grey50")
Nick_mentat
24.07.2018 10:44Среднее по европе — не значит идеально сбалансировано. Вот если было бы теоретическое исследование оптимума по таким категориям возрастным, тогда можно было бы центрировать серый на нём, и посмотреть где проблемы есть, а где всё чётко.
Novousp
24.07.2018 04:32хм, мой R пишет радостное «plot.tag» is not a valid theme element name.
ikashnitsky Автор
24.07.2018 13:39Да, мне писал на почту еще один человек с той же ошибкой. Пока могу предположить, что проблемы возникают из-за: 1) обновления
ggplot2
(использована версия 2.2.1); 2) обновления R (использована версия 3.4.3)
chouck
Да демографическая проблема сейчас на самом деле основная в мире. есть ли подобный карты для других частей мира?
ikashnitsky Автор
Пока нет. Но метод совершенно генерализованный, можно запросто кинуть любые данные на карту. Сделаю на досуге Россию и США.
JobberNet
А можно на весь глобус? Или хотя бы бывший Союз и Китай — было бы интересно сравнить с соседями. И США тоже интересно сравнить с Канадой и Латинской Америкой.
ikashnitsky Автор
Все можно, только данные нужны. Данные о население очень простые, но вот с пространственной привязкой не всегда просто.
chouck
неужели нет публичных дата сетов по итогам последних переписей?
ООН ЮНИСЕФ или кто там ведь ведут такую статистику…
какие именно данные нужны и в каком формате?
solariserj
Поддерживаю.
Хотелось бы данные по всей Европе, а не только её части
ikashnitsky Автор
Я использовал данные Eurostat для всех стран, которые приняли систему административного деления NUTS.