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

Доктор. Странно, вымышленный персонаж, мой любимый супергерой. Одна из его невероятных способностей - видеть возможности событий. Было бы круто, если бы я мог видеть много вещей одновременно, как он. На самом деле, я могу сделать это, не обладая суперсилой. Достаточно правильного типа визуализации и Python.

Несколько данных временных рядов

График временных рядов с одной линией является полезным графиком для представления данных с помощью длинных последовательностей. Он состоит из оси X, представляющей временную шкалу, и оси Y, показывающей значение. Это стандартный метод, поскольку концепция проста и понятна. График может помочь нам извлечь некоторую информацию, такую ​​как тенденции и сезонные эффекты.

Однако многие линии на графике с несколькими временными рядами могут усложнить задачу. Рассмотрим примеры ниже.

Это может показаться преувеличением, но иногда можно встретить такие данные, как будет показано далее. На первой картинке трудно различить линии, и ее трудно прочитать. С тем же набором данных радиальные графики на втором рисунке, которые будут объяснены в качестве идеи в этой статье, помогают справиться с перекрывающимися графиками.

В этой статье будут продемонстрированы 8 идей визуализации с помощью кода Python, чтобы справиться с хаосом при построении графиков данных нескольких временных рядов. Давайте начнем.

Получить данные

Чтобы работать с реальным примером, я буду использовать набор данных Air Pollution in Seoul от Kaggle (ссылка). Данные были предоставлены столичным правительством Сеула. Речь идет об информации о загрязнении воздуха, которое состоит из SO2, NO2, CO, O3, PM10 и PM2,5 в период с 2017 по 2019 год из 25 районов Сеула, столицы Южной Кореи.

В этой статье PM2,5 из 25 районов будет основной переменной, представленной в виде нескольких линий временного ряда. PM2,5 определяется как мелкодисперсное вещество диаметром менее 2,5 мкм. Считается видом загрязнения, вызывающим краткосрочные последствия для здоровья.

Визуализация PM2,5 из многих мест помогает сравнить, как загрязнение влияет на город.

Импорт данных

Начните с импорта библиотек.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.ticker as ticker

Прочтите Measurement_summary.csv с помощью Pandas.

df = pd.read_csv('<file locaion>/Measurement_summary.csv')
df.head()

Исследуйте данные

Теперь, когда мы уже импортировали набор данных. Продолжайте проверять отсутствующее значение и тип данных каждого столбца.

df.info()

Хорошая новость заключается в том, что нет пропущенного значения. Следующим шагом является проверка количества различных кодов станций.

df['Station code'].nunique()
###output:
###25

Всего 25 станций. Проверьте коды станций.

list_scode = list(set(df['Station code']))
list_scode
###output:
### [101, 102, 103, 104, ..., 125]

Данные предварительной обработки

Коды станций от 101 до 125 представляют районы Сеула. Лично для маркировки визуализации удобнее использовать названия районов, так как их удобнее читать. Имена будут взяты из столбца «Адрес» для создания столбца «Район».

list_add = list(df['Address'])
District = [i.split(', ')[2] for i in list_add]
df['District'] = District

Создайте список с 25 названиями районов для использования позже.

list_district = list(set(District))

Подготовьте еще три столбца, YM (год-месяц), год и месяц, чтобы применить их к некоторым графикам. Для упрощения визуализации мы сгруппируем их в среднемесячный DataFrame.

Данные графика

Теперь, когда все готово, давайте сделаем график множественных временных рядов.

Перекрывающиеся строки плохо читаются. В 2017 году видно, что количество PM2,5 на многих станциях шло в том же направлении. Однако в 2018 и 2019 годах линии загрязнения шли произвольно, и их трудно различить.

Идеи визуализации

Основная цель этой статьи — познакомить с некоторыми идеями визуализации с помощью Python для обработки данных нескольких временных рядов.

Прежде чем продолжить, мне нужно кое-что прояснить. Визуализации, рекомендуемые в этой статье, в основном предназначены для работы с перекрывающимися графиками, поскольку это основная проблема при построении данных с несколькими временными рядами, как мы уже видели.

У каждого графика есть свои плюсы и минусы. Очевидно, что нет ничего идеального. Некоторые могут быть просто для привлекательного эффекта. Но все они имеют одну и ту же цель сравнения последовательностей между категориями.

1. Ничего не меняя, но делая сюжет интерактивным.

Plotly — графическая библиотека для создания интерактивных графиков. Интерактивная диаграмма помогает увеличить область с перекрывающимися линиями.

С помощью Plotly также можно создать интерактивную диаграмму с областями.

2. Сравнение один за другим с небольшими множественными временными рядами.

С библиотекой Seaborn мы можем делать небольшие кратные временные ряды. Идея этих графиков состоит в том, чтобы отображать каждую линию одну за другой, при этом сравнивая их с силуэтом других линий. Код на официальном сайте по ссылке здесь.

3. Изменение точки зрения с помощью Facet Grid

FacetGrid от Seaborn можно использовать для создания многосюжетных сеток. В этом случае атрибуты Месяц и Год задаются как строки и столбцы соответственно. С другой стороны, значения можно одновременно сравнивать ежемесячно по вертикали и ежегодно по горизонтали.

4. Использование цвета с тепловой картой

Тепловая карта представляет данные в виде двумерной диаграммы, отображающей значения в цветах. Чтобы работать с данными временных рядов, мы можем установить группы по вертикали и временную шкалу по горизонтали. Разница в цвете помогает различать группы.

Повернуть фрейм данных

5. Применение углов с помощью радиолокационной диаграммы

Мы можем установить угловую ось на точечной диаграмме в Plotly, чтобы создать интерактивную Радарную диаграмму. Каждый месяц будет выбран в качестве переменной на круге. Например, в этой статье мы создадим лепестковую диаграмму, сравнивающую среднемесячное значение PM2,5 в 25 районах в 2019 году.

Отфильтруйте DataFrame только с данными за 2019 год.

df_19 = df_monthly[df_monthly['Year']=='2019']

Создать радарную диаграмму. Преимущество использования Plotly заключается в том, что диаграмма радара является интерактивной. Таким образом, мы можем легко отфильтровать диаграмму.

Давайте пойдем дальше, заполнив область радара каждого отдельного объекта один за другим и сравнив каждый с остальными. Затем создайте фотоколлаж.

Определите функцию для создания фотоколлажа. Я нашел этот отличный способ объединить графики из этой ссылки на Stack Overflow.

Используйте функцию

Вуаля!!…

6. Представьте гистограмму с помощью Circular Bar Plot (Сюжет гоночной трассы)

Концепция круговой гистограммы (также известной как ипподром) настолько проста, потому что это просто гистограммы по кругу. Мы можем ежемесячно строить график с круговой полосой, а затем делать фотоколлаж, чтобы сравнивать процесс во времени.

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

Определите функцию для создания диаграммы Circular Bar

Применить функцию

Создать фотоколлаж

7. Начиная с центра с помощью радиального графика

Как и круговой столбчатый график, Радиальный график основан на столбчатых диаграммах, в которых вместо декартовых координат используются полярные координаты. Этот тип диаграммы неудобен при сравнении категорий, расположенных далеко друг от друга, но это отличный выбор для привлечения внимания. Его можно использовать в инфографике.

На рисунке ниже показан пример радиальных графиков, показывающих среднее значение PM2,5 в 25 районах в январе 2019 года.

Применить функцию

Создать фотоколлаж

8. Отображение плотностей с перекрывающимися плотностями (график хребта)

Перекрывающиеся плотности (график хребта) можно использовать с данными нескольких временных рядов, установив ось в качестве временной шкалы. Подобно круглому столбчатому графику и радиальному графику, график Ridge может привлечь внимание людей. Код на официальном сайте Seaborn находится здесь.

На следующем рисунке показан пример графика Ридж с плотностью PM2,5 в районе в 2019 году.

Определите функцию для создания графика Риджа

Применить функцию

Создать фотоколлаж

Краткое содержание

В этой статье показаны некоторые визуализации с примерами кода Python для обработки наложенных линий на графике нескольких временных рядов. Двумя основными концепциями являются использование интерактивных сюжетов и их разделение. Интерактивная диаграмма полезна благодаря параметрам, которые позволяют пользователям свободно выбирать категории, а разделение графиков помогает пользователям легко их сравнивать.

Это лишь некоторые идеи. Я уверен, что есть больше идей визуализации для обработки нескольких данных временных рядов, чем графики, упомянутые в этой статье. Если у вас есть какие-либо вопросы или предложения, пожалуйста, не стесняйтесь оставлять комментарии. Спасибо за прочтение.

Это другие статьи о визуализации данных, которые могут вас заинтересовать.

  • Визуализация скорости света с помощью Python (ссылка)
  • Визуализация невидимого SO2 с помощью данных NASA и Python (ссылка)
  • Извлечение цвета изображения с помощью Python за 4 шага (ссылка)

Ссылка

  • Сеульское столичное правительство. (2021, май). Информация об измерении загрязнения воздуха в Сеуле, Корея. Получено 24 апреля 2022 г. с https://www.kaggle.com/datasets/bappekim/air-pollution-in-seoul.
  • Автор: Plotly Technologies Inc. Название: Collaborative data science Издатель: Plotly Technologies Inc. Место публикации: Montréal, QC Дата публикации: 2015 URL: https://plot.ly