![](https://habrastorage.org/getpro/habr/upload_files/7eb/783/d08/7eb783d086cde7155d2c9ff6cce213cd.jpg)
Для многих специальностей, будь то бизнес-аналитика, Data Science или геология и геофизика, эффективная визуализация данных вошла в число принципиально важных навыков. Наглядное представление информации, понятное и эстетически привлекательное, может подтолкнуть целевую аудиторию к определенным мыслям или действиям. Хотя на Python создано несколько библиотек визуализации данных, студенты, изучающие этот язык и аналитику данных, часто начинают с Matplotlib.
Команда VK Cloud перевела руководство, как улучшить диаграммы, созданные в Matplotlib. Все показано на реальных примерах.
Немного о Matplotlib
Matplotlib — это универсальный инструмент, который позволяет наглядно представлять данные на разнообразных диаграммах. В своих предыдущих статьях я показывал диаграммы, которые можно создать, если пойти чуть дальше настроек по умолчанию.
![Пример кольцевой столбчатой диаграммы, созданной в Matplotlib Пример кольцевой столбчатой диаграммы, созданной в Matplotlib](https://habrastorage.org/getpro/habr/upload_files/50d/2b4/c3d/50d2b4c3d2863de069bffcf3a6af5f45.png)
Для создания таких фигур требуется терпение и код на Python. Чтобы поменять любую мелочь, часто приходится выискивать решения в StackOverflow или документации к библиотеке. Но если следовать нескольким простым правилам, можно быстро доработать фигуры, созданные в Matplotlib. В этой статье я расскажу про свои любимые приемы, которыми я регулярно пользуюсь, когда создаю фигуры для постов на Medium или научных статей. Их всего четыре. Этим рекомендациям можно следовать не только в Matplotlib, но и в любой программе, поддерживающей создание диаграмм, в том числе Excel и Tableau.
1. Удаление лишнего — ключ к успеху в простоте
Один из самых простых и быстрых способов доработать диаграммы в Matplotlib — это убрать все лишнее. Избавьтесь от ненужных и сбивающих с толку элементов, которые не добавляют визуализируемым данным ценности в глазах читателя. Диаграмма должна содержать только те элементы, которые помогают пользователям лучше разобраться в теме. Вот несколько приемов, с помощью которых можно сделать диаграмму понятнее:
Чем меньше заголовков и надписей, тем они эффективнее.
Откажитесь от сложной терминологии и жаргона.
Уберите ненужные решетки и границы.
Удалите фоновые изображения.
Не используйте вычурные шрифты.
Откажитесь от ненужных трехмерных спецэффектов и теней.
В качестве примера возьмем диаграмму, иллюстрирующую зависимость дохода от возраста. У этой диаграммы несколько элементов, затрудняющих ее чтение и интерпретацию: решетки, метки точек и несочетаемые цвета фона и точек.
![Загроможденная диаграмма рассеяния со множеством лишних деталей Загроможденная диаграмма рассеяния со множеством лишних деталей](https://habrastorage.org/getpro/habr/upload_files/501/9bf/e52/5019bfe528ce3f1ec051997b2e184ec7.png)
Если потратить немного времени и убрать весь этот мусор, получится вот такая фигура:
![«Причесанная» диаграмма рассеяния «Причесанная» диаграмма рассеяния](https://habrastorage.org/getpro/habr/upload_files/0df/c8f/31b/0dfc8f31be39b94a4e2fcdc4070b174e.png)
Она намного чище, ее проще изучать и интерпретировать. А еще я добавил усредняющую прямую, чтобы нагляднее показать общий тренд данных.
Вот другой пример, показывающий, как убрать лишнее из диаграммы:
Один из секретов создания эффективных диаграмм — позволить данным говорить за себя. Это значит, что данные должны выйти на первый план, оттеснив все прочие элементы. Именно так удастся убедительнее всего донести полученные выводы.
2. Правильно подбирайте цвета
На первый взгляд, правильно подобрать цвета для диаграммы дело нехитрое. Но простая задача может превратиться в настоящего пожирателя времени: вдруг окажется, что вы часами не можете определиться с нужным оттенком синего или решить, достаточно ли контрастируют между собой выбранные цвета.
Правильный подбор цветовой гаммы может кардинальным образом повлиять на удобочитаемость графика и, как следствие, на возможности пользователей интерпретировать данные. Например, в этой диаграмме пять разных категорий, и все представлены одним цветом. Хотя график читаемый, неэффективное использование цвета не позволяет привлечь внимание пользователей к тому или иному аспекту данных:
![Базовая столбчатая диаграмма Matplotlib в одном цвете Базовая столбчатая диаграмма Matplotlib в одном цвете](https://habrastorage.org/getpro/habr/upload_files/d06/2de/523/d062de52362a591df2fb732166002074.png)
Если поменять цвета и сделать категорию C оранжевой, мы сразу же к ней привлечем внимание пользователей и покажем им важность именно этой категории:
![Изменили цвет одного столбца в столбчатой диаграмме Matplotlib, чтобы привлечь к нему внимание Изменили цвет одного столбца в столбчатой диаграмме Matplotlib, чтобы привлечь к нему внимание](https://habrastorage.org/getpro/habr/upload_files/2c3/ef1/944/2c3ef194441598a2b41198b317c10c84.png)
Если же пойти другим путем и использовать произвольный цвет для каждой категории, у нас получится плохо читаемая перегруженная диаграмма. Хотя бывают случаи, когда имеет смысл отрисовать каждый столбец отдельным цветом, например, если нужно показать разные бренды:
![Перегруженная цветом и неудобочитаемая столбчатая диаграмма Matplotlib Перегруженная цветом и неудобочитаемая столбчатая диаграмма Matplotlib](https://habrastorage.org/getpro/habr/upload_files/104/fb1/d09/104fb1d099eda041fe11229269520ca7.png)
При подборе цвета нужно учитывать множество нюансов. Цветовое решение зависит от разных факторов, в том числе от типа диаграммы, самих данных и идеи, которую вы хотите донести.
Но есть несколько общих правил, которые помогут придать фигурам лоск и приличный вид:
Используйте цвет, чтобы выделить информацию, а не отвлечь внимание. Цвет помогает правильно расставить акценты на наиболее важных аспектах данных.
Будьте последовательны. Если вы создаете много диаграмм, единый стиль помогает аудитории быстрее ориентироваться и вникать в смысл новой диаграммы, исходя из стиля предыдущих. Например, если вы выделили синим определенную категорию, сохраните цвет этой категории и на других диаграммах.
Помните, что бывают люди, которые плохо различают некоторые цвета. Среди пользователей ваших диаграмм могут оказаться дальтоники. Старайтесь не использовать цвета, которые распознают не все, например красный и зеленый или синий и желтый.
Учитывайте психологию цвета. Смысл, который передает цвет, может иметь важные последствия. Не стоит забывать и о цветовой символике в разных культурах. Например, красный часто воспринимается в негативном ключе или как символ опасности, а зеленый — в позитивном ключе или как индикатор роста.
Подробнее разобраться с выбором цвета помогут следующие статьи:
Кроме того, цвет можно грамотно подобрать с помощью разных генераторов цветовой палитры. Пользуясь этими инструментами, вы заметно сэкономите время и при этом добьетесь отличной удобочитаемости, особенно для пользователей с плохим цветовым зрением. Вот несколько программ:
3. Применяйте темы Matplotlib: это сэкономит вам время и избавит от написания лишнего кода
Если вы периодически читаете мои статьи, то наверняка уже прочитали о нескольких библиотеках тем Matplotlib. С помощью библиотеки тем можно мгновенно преобразить фигуры, заменив стандартную скучноватую цветовую схему Matplotlib на значительно более эстетичную. Так можно не только доработать само оформление, но и улучшить удобочитаемость.
Библиотек тем Matplotlib не так мало. Например, mplcyberpunk помогает превратить фигуры Matplotlib в футуристические диаграммы с неоновой подсветкой. Чтобы создать изображение в стиле киберпанк в mplcyberpunk, можно использовать следующий код:
import mplcyberpunk
import numpy as np
# Generate x values
x = np.linspace(0, 10, 20)
# Generate y values
y = np.sin(x)
y2 = np.cos(x)
plt.style.use('cyberpunk')
plt.figure(figsize = (8,8))
plt.plot(x, y, marker = 'o')
plt.plot(x, y2, marker = 'o', c='lime')
mplcyberpunk.add_gradient_fill(alpha_gradientglow=0.5, gradient_start='zero')
plt.xlabel('X-Axis')
plt.ylabel('Y-Axis')
plt.show()
Вот что должно получиться:
![Линейный график Matplotlib с градиентной заливкой в стиле киберпанк Линейный график Matplotlib с градиентной заливкой в стиле киберпанк](https://habrastorage.org/getpro/habr/upload_files/db4/147/747/db4147747d67cd8a600903313886ce87.png)
Хотя с помощью mplcyberpunk можно создавать довольно интересные фигуры, эту опцию следует использовать с осторожностью. Не все воспримут такое оформление как признак профессионализма, а в некоторых случаях оно может смазать суть данных или идею, которую вы хотите донести. Если вы подыскиваете вариант, который подойдет для академических публикаций, обратите внимание на библиотеку SciencePlots. Она содержит разные стили оформления фигур, подходящие для научных или журналистских статей. Кроме того, в ней реализована поддержка разных языков, в том числе китайского и японского. Например, вот как будут выглядеть данные из предыдущей «неоновой» диаграммы в стиле, приемлемом для научной статьи.
![Линейный график Matplotlib в стиле SciencePlots IEEE Линейный график Matplotlib в стиле SciencePlots IEEE](https://habrastorage.org/getpro/habr/upload_files/4af/040/d15/4af040d15fb284c789ce557787d7f44c.png)
4. Помните про свою аудиторию и про историю, которую вы рассказываете
Когда вы создаете диаграммы, очень важно помнить, кто ваша аудитория и какую историю вы до нее доносите. Для этого можно самостоятельно составить вопросы, на которые будет отвечать тот, кто станет изучать диаграмму. И таким образом понять, что для него важно и какие данные следует выделить.
Вот пример таких вопросов и ответов:
Что показывают столбцы? Средние значение пористости в формации Hugin.
У какой скважины максимальная пористость? 25/8–7 при 26,1%.
Есть ли разница между скважиной 16/10–1 и скважиной 25/8–7? Да, разница составляет 0,1%.
Какая пористость скважины считается хорошей? Выделенные оранжевым скважины с предельным значением более 20%.
Мы также можем изменить нарратив фигуры, выделив столбец цветом. Например, диаграмма ниже может быть частью большой инфографики о скважинах 16/2–16, и, когда мы выделяем цветом этот столбец, мы сразу же привлекаем к нему внимание.
![](https://habrastorage.org/getpro/habr/upload_files/8c5/aba/dfe/8c5abadfea78473d12acfc2aa2e13531.png)
Выделили цветом один столбец в горизонтальной столбчатой диаграмме Matplotlib, чтобы привлечь к нему внимание. Данные из Xeek / Force 2020
Заключение
Эффективная визуализация данных — это высококлассный навык, который особенно нужно освоить, если вы занимаетесь Data Science или аналитикой данных. В этой статье я рассказал о четырех принципах, которых я чаще всего придерживаюсь при создании эффективных диаграмм. Это далеко не все приемы, с помощью которых можно усовершенствовать визуализацию данных. Расскажите в комментариях о своих правилах эффективной визуализации данных.
Датасеты, использованные в этой статье
Обучающий датасет, использованный в соревнованиях по машинному обучению, организованных Xeek и FORCE 2020 (Bormann et al., 2020), предоставляется по лицензии Creative Commons Attribution 4.0 International.
Полный датасет: https://doi.org/10.5281/zenodo.4351155.