Сравнение двух тяжеловесов визуализации данных Python

Добро пожаловать, знатоки данных и энтузиасты Python!

Вы сидите со своим попкорном и напитком, готовые к решающей схватке с визуализацией данных Python?

В сегодняшнем главном событии Matplotlib, проверенный временем инструмент, любимый за свою точность, сразится с Plotly, интерактивным выскочкой, ориентированным на Интернет.

Кто выйдет на первое место? Кто станет чемпионом мира по исследованию и визуализации данных?

Matplotlib: старый ветеран гризли

Во-первых, в синем углу у нас есть Matplotlib, крестный отец визуализации данных Python. Эта библиотека существует с 2003 года — у нее определенно большой опыт. И отличный отчет о победах и поражениях.

От простых гистограмм и линейных диаграмм до сложных тепловых карт и трехмерных графиков — Matplotlib умеет все.

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

import matplotlib.pyplot as plt
import numpy as np

# Generate some data
years = np.arange(2000, 2021, 1)
temp = np.random.normal(loc=15, scale=2, size=21)

# Create a line plot
plt.plot(years, temp)
plt.title('Average Temperature Over Years')
plt.xlabel('Year')
plt.ylabel('Temperature (°C)')
plt.show()

Но вот в чем загвоздка:диаграммы matplotlib статичны.

Они как снимок ваших данных: красиво, но они не взаимодействуют. И если вы хотите сделать много настроек, код может стать немного длинным.

Сюжет: Вверх и вперед

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

Plotly — это интерактивность. С Plotly ваши графики — это не просто картинки; это динамические игровые площадки. Например, если вы работаете с одними и теми же климатическими данными и хотите, чтобы ваши пользователи могли масштабировать определенные годы, Plotly сделает это проще простого:

import plotly.graph_objects as go

# Generate some data
years = np.arange(2000, 2021, 1)
temp = np.random.normal(loc=15, scale=2, size=21)

# Create a line plot
fig = go.Figure(data=go.Scatter(x=years, y=temp, mode='lines+markers'))
fig.update_layout(title='Average Temperature Over Years', xaxis_title='Year', yaxis_title='Temperature (°C)')
fig.show()

Plotly также очень хорошо работает с веб-приложениями, И у него есть собственная библиотека панели инструментов — dash, что делает его отличным выбором для онлайн-дисплеев.

Plotly против Matplotlib: разборки

Хорошо, это сигнал к началу первого раунда. Давайте посмотрим, как эти два титана сразятся друг с другом в этом поединке из 4 раундов: по простоте использования, интерактивности, настройке и веб-интеграции.

Раунд 1. Простота использования

Стиль кодирования Matplotlib находится под влиянием MATLAB, и это может стать серьезным препятствием для новичков или тех, кто не знаком со стилем MATLAB. Рассмотрим простую задачу создания точечной диаграммы.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y)
plt.show()

С Plotly задача такая же простая, но синтаксис, возможно, более интуитивный и читаемый, особенно для тех, кто не знаком с синтаксисом, подобным MATLAB:

import plotly.graph_objects as go
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

fig = go.Figure(data=go.Scatter(x=x, y=y, mode='markers'))
fig.show()

Раунд 2. Интерактивность

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

import matplotlib.pyplot as plt

plt.plot(x, y)
plt.show()

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

import plotly.graph_objects as go

fig = go.Figure(data=go.Scatter(x=x, y=y))
fig.show()

Раунд 3. Кастомизация

Хотя обе библиотеки предлагают широкий спектр параметров настройки, Matplotlib предлагает несколько больший уровень контроля. Например, предположим, что вы настраиваете отметки на оси X. В Matplotlib вы можете контролировать почти каждый аспект:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.xaxis.set_ticks(np.arange(0, 2*np.pi, np.pi/2))
ax.xaxis.set_ticklabels(['0', 'π/2', 'π', '3π/2', '2π'])
plt.show()

Хотя Plotly также допускает настройку, некоторые конкретные аспекты (например, пример выше) могут быть не такими простыми и/или требовать дополнительного кода.

Раунд 4. Веб-интеграция

Matplotlib не предлагает встроенной поддержки веб-интеграции (боооо!).

Хотя существуют обходные пути для отображения графиков Matplotlib в веб-приложениях, это не основной вариант использования библиотеки. С другой стороны, Plotly отлично справляется с веб-интеграцией. Он предназначен для бесперебойной работы с Dash, фреймворком Python для создания аналитических веб-приложений.

Например, вы можете создать интерактивную диаграмму Plotly и встроить ее в приложение Dash, написав всего несколько строк кода:

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objects as go

app = dash.Dash(__name__)

fig = go.Figure(data=go.Scatter(x=x, y=y))

app.layout = html.Div(children=[
    dcc.Graph(figure=fig)
])

app.run_server(debug=True)

В этом примере совместимость Plotly с Dash позволяет напрямую встроить интерактивный сюжет в веб-приложение — супер просто, супер классно.

Окончательное решение

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

Лично я, как Судья №1, объявляю Plotly победителем!

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

Однако, если вам нужны простые статические диаграммы или вы жаждете большого контроля, Matplotlib — отличный выбор. НО, если вы ищете интерактивные, удобные для Интернета диаграммы, Plotly — это то, что вам нужно.

Стоит помнить, что это не игра с нулевой суммой. Иногда лучший подход — использовать оба инструмента в тандеме.

Например, вы можете использовать Matplotlib для исследовательского анализа данных, а затем переключиться на Plotly, когда будете готовы создавать интерактивные визуализации — этот подход использует сильные стороны обеих библиотек.

В конце концов, ваше решение может основываться на ваших конкретных требованиях, характере вашего проекта и ваших личных предпочтениях.

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

Если вам интересно, вот ссылка на другие статьи, которые я написал. Есть статьи о Python, генеративном ИИ, жизни экспатов, обучении марафону, путешествиях и многом другом!

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .