В то время как за окном температура на пути к очередным рекордам, интересно посмотреть, а какие вообще бывали температуры в произвольный интервал времени, за любые года за последние несколько десятилетий в 30 000 точках по всему миру. А может не прогадать с днями отпуска, и взять их в те дни, когда есть какое-то «статистическое преимущество» в выбранном местоположении по теплой погоде, а может быть по холодной, оценив его визуально на любой из трех типов диаграмм. Ну или можно просто повращать глобус, визуально оценить разнообразие температур и «как прекрасен этот мир».
Сбор данных
Источниками данных послужили данные с метеостанций расположенные по всему миру, результаты которых предоставляются в том числе и в Национальное управление океанических и атмосферных исследований (National Oceanic and Atmospheric Administration, NOAA), на сайте которых и имеется архив показаний этих станций с 1901 года по всем (более 30 000) станциям существующим за это время, в настоящий момент актуальных станций около 14 000. Доступ к данным осуществляется по ftp, различных данных там достаточно много (есть и среднесуточные, и более частые данные, данные в каждом файле имеются по температуре, влажности, осадки, ветер и др.), я буду использовать только данные по среднесуточной температуре.
Данные на каждый год по каждой станции, представляют собой заархивированный текстовый файл с разделителями. Общее число файлов на данном ресурсе, около 700 000, можно было их и все скачать, ориентировочное время скачивания составило бы около двух суток и потребовало бы около 200 ГБ дискового пространства, но не вижу необходимости в этом, так как время скачивания данных одной единицы (одна станция за один год) составляет менее 0.2 секунд, поэтому для подавляющего большинства запросов (5-10 станций, за 5-10 лет) время ожидания составляет не более минуты, поэтому доступ он-лайн. Каждая станция имеет синоптический индекс (уникальный код), название, и координаты. К сожалению, названия станций не всегда информативны, но в подавляющем большинстве случаев это ближайший населенный пункт, в остальных случаях – располагающийся по близости аэропорт. Многие станции закрывались или наоборот открывались недавно, поэтому по некоторым годам могут быть пропуски. После выбора интересующего интервала времени происходит выборка по данному диапазону, построение диаграмм и отображение усредненных данных на глобусе и на карте.
Отображение на глобусе и на карте
Для отображения данных на вращающемся глобусе используется пакет threejs. Для рендеринга возможно использовать графический формат – jpeg файл (в географической проекции на эллипсоиде WGS84) или же сгененировав объект. В данном случае используется готовый jpeg файл — ландшафтный покров земной поверхности набора данных Blue Marble Next Generation с сайта NASA от августа 2004 года (разрешение 8 км на пиксель). В итоге, так как на глобусе можно отобразить один параметр, отображается на нем усредненная (медианная) температура (как по годам, так и и по интервалу дней). На глобусе для конкретной точки отображается столбик определенного цвета, высоты и толщины, в моем случае все эти параметры используются для отображения усредненной температуры по всем годам на всем интересующем интервале времени относительно всех выбранных станций, используется масштабирование в случае размеров столбика и переход в цвете от синего к красному для температур (то есть для станций с усредненными температурами (-10°, -5°, +7°, +10°, +30°) синий столбик с минимальный высотой и толщиной будет для метеостанции с -10°, красный столбик с максимальной высотой-толщиной будет для метеостанции с +30°, а размеры и цвета остальных станций пропорционально рассчитаны относительно этих крайних значений).
Помимо этих баров, также указаны кривые исходящие из одной точки (г. Москва), они показывают траектории до выбранных станций, толщина и цвет этих кривых также отмасштабированы относительно температур. Отображение этих кривых наглядно показывает как расстояние, так и усредненную температуру. Также помимо данных на глобусе (который можно вращать и увеличивать), эта информация (усредненная температура, расстояние, и используемые цвета) приведены в соседней таблице (рис. 1). Также помимо глобуса, эти же усредненные данные приведены на плоской карте Google (закладка Карта).
Диаграммы, статичные и интерактивные
Графическим веб-интерфейсом традиционно является надоевшийудобный интерфейс shiny-dashboard, в котором как видно на скриншотах, в боковой панели выбираются параметры, а на основной используется панель с закладками.
Рис. 1. Главное окно
Помимо данных на первой закладке (на глобусе) (которые усреднены и не несут в себе доп. информации) интереснее посмотреть разброс и динамику температур как по годам, так и относительно друг друга, для этого используются следующие диаграммы (по закладкам), все диаграммы панельные:
— Временные ряды (рис. 2) – обычные временные ряды, где на каждой панели (метеостанции) цветом раскрашены архивные года, а черная жирная кривая – усредненная по этим годам (на рисунке показана интерактивная диаграмма, по наведению показывается легенда по историческим температурам (отсортированным) для каждого дня)
Рис.2. Диаграмма временные ряды
— Боксплоты, диаграмма размахов (рис. 3) – в данном случае, каждый день рассматривается, как атомарный и на данной диаграмме отображен разброс значений на конкретную дату по всем выбранным годам
Рис.3. Диаграмма размахов (боксплоты, коробка с усами)
— Плотности (рис. 4) – диаграмма плотностей температур по выбранным станциям, где по панелям уже указаны года, на ней наглядно видно как соотношения температур по станциям, так и динамика по времени (по годам)
Рис.4. Диаграмма плотностей
Помимо статичных диаграмм ggplot2, отметив чекбокс «интерактивные диаграммы» диаграммы преобразуются в интерактивные, которые по наведению показывают легенду, сами диаграммы можно увеличивать, уменьшать, двигать оси. Для этого используется перевод существующих объектов ggplot2 в непосредственное интерактивное отображение, с помощью пакета plotly.
Сохранение
Для сохранения всех результатов, возможно выгрузить все приведенные диаграммы, таблицы в формат html и/или docx (закладка Отчет). Для этого выбирается необходимый формат и сохраняется файл. Здесь используется интеграция с markdown, для этого используется файл-макет Rmarkdown, в котором приведен как обычный текст, так и вызов функций R.
Заключение
В итоге, из-за моего желания получить «статистическое преимущество» в выборе оптимальных дней отпуска, получился инструмент на котором можно посмотреть как на исторические температуры любого интервала дней практически в любой точке мира, так и оценить есть ли какое-то глобально-локальное потепление. Традиционно, благодаря R, все это было реализовано достаточно быстро и просто.
Автор: atikhonov