Сравнение двух тяжеловесов визуализации данных 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 .