У этого вопроса был простой ответ: Matplotlib был единственным способом. В настоящее время Python – это язык науки о данных, и есть гораздо больше выбора. Что вам следует использовать?
Это руководство поможет вам решить. Я покажу вам, как использовать Семь библиотеков Python , с бонусом подробное руководство для каждой библиотеки !
Я также упаковал пример для каждой библиотеки как Наковальня Приложение, показывая, как построить веб-приложения для данных с Python Анкет Все эти библиотеки доступны в серверных модулях Anvil и прямо работают непосредственно в Anvil’s Front-End Python Code слишком! Нажмите на углубленные руководства для примера кода.
Самыми популярными библиотеками Python является Matplotlib, Plotly, Seaborn и Bokeh. Я также включил несколько недооцененных драгоценных камней, которые вы обязательно должны рассмотреть: Altair, с его выразительным API и Pygal, с его прекрасной выходом SVG. Мы также посмотрим на очень удобный API, предоставленный Pandas.
Каждая из этих библиотек требует немного другого подхода. Чтобы сравнить их, я собираюсь создать один и тот же сюжет с каждой библиотекой и покажу вам исходный код. Я выбрал сгруппированную барную карту британских выборов с 1966 года. Вот:
Я собрал набор данных британской истории выборов из Википедии : Количество мест в парламенте Великобритании, выигранного консервативными, трудовыми и либеральными партиями (широко определенными) на каждом выборах с 1966 по 2019 год, плюс количество мест, завоевавших «другие». Вы можете скачать его как файл CSV Здесь Анкет
Matplotlib это самая старая библиотека Python, и она по -прежнему самая популярная. Он был создан в 2003 году как часть Scipy Stack , библиотека научных вычислительных наук с открытым исходным кодом, похожая на Matlab.
Matplotlib дает вам точный контроль над вашими графиками-например, вы можете определить отдельное X-положение каждой полосы в вашем барже. Я написал более подробное руководство по Matplotlib, и вы можете найти его Здесь Анкет
import matplotlib.pyplot as plt import numpy as np from votes import wide as df # Initialise a figure. subplots() with no args gives one plot. fig, ax = plt.subplots() # A little data preparation years = df['year'] x = np.arange(len(years)) # Plot each bar plot. Note: manually calculating the 'dodges' of the bars ax.bar(x - 3*width/2, df['conservative'], width, label='Conservative', color='#0343df') ax.bar(x - width/2, df['labour'], width, label='Labour', color='#e50000') ax.bar(x + width/2, df['liberal'], width, label='Liberal', color='#ffff14') ax.bar(x + 3*width/2, df['others'], width, label='Others', color='#929591') # Customise some display properties ax.set_ylabel('Seats') ax.set_title('UK election results') ax.set_xticks(x) # This ensures we have one tick per year, otherwise we get fewer ax.set_xticklabels(years.astype(str).values, rotation='vertical') ax.legend() # Ask Matplotlib to show the plot plt.show()
Полный гид и пример кода: построение в Matplotlib>
Seaborn это слой абстракции поверх matplotlib – он дает вам действительно аккуратный интерфейс, чтобы очень легко сделать широкий спектр полезных типов графиков.
Это не идет на компромисс на власти, хотя! Seaborn дает вам Escape люки Чтобы получить доступ к основным объектам Matplotlib, вы все еще имеете полный контроль. Вы можете проверить более подробное руководство по Seaborn Здесь Анкет
Вот наш участок выборов в Seaborn. Вы можете видеть, что код намного проще, чем необработанный matplotlib.
import seaborn as sns from votes import long as df # Some boilerplate to initialise things sns.set() plt.figure() # This is where the actual plot gets made ax = sns.barplot(data=df, x="year", y="seats", hue="party", palette=['blue', 'red', 'yellow', 'grey'], saturation=0.6) # Customise some display properties ax.set_title('UK election results') ax.grid(color='#cccccc') ax.set_ylabel('Seats') ax.set_xlabel(None) ax.set_xticklabels(df["year"].unique().astype(str), rotation='vertical') # Ask Matplotlib to show it plt.show()
Полный гид и пример код: построение в Seaborn>
Старший это экосистема, которая включает в себя библиотеку на питоне. Есть три разных интерфейса:
- объектно-ориентированный интерфейс
- Императивный интерфейс, который позволяет указать ваш график с помощью данных, подобных JSON
- и интерфейс высокого уровня, похожий на Seaborn, называемый Plotly Express.
Графики сюжета предназначены для встроенных в веб -приложения. По своей сути, Plotly на самом деле является библиотекой JavaScript! Он использует d3 и stack.gl, чтобы нарисовать сюжеты.
Вы можете создавать библиотеки в других языках на других языках, передавая JSON в библиотеку JavaScript. Официальные библиотеки Python и R делают именно это. На Анаворе мы перенесли API Python Plotlily в Запустить в веб -браузере Анкет
Вот график результатов выборов в слое:
import plotly.graph_objects as go from votes import wide as df # Get a convenient list of x-values years = df['year'] x = list(range(len(years))) # Specify the plots bar_plots = [ go.Bar(x=x, y=df['conservative'], name='Conservative', marker=go.bar.Marker(color='#0343df')), go.Bar(x=x, y=df['labour'], name='Labour', marker=go.bar.Marker(color='#e50000')), go.Bar(x=x, y=df['liberal'], name='Liberal', marker=go.bar.Marker(color='#ffff14')), go.Bar(x=x, y=df['others'], name='Others', marker=go.bar.Marker(color='#929591')), ] # Customise some display properties layout = go.Layout( title=go.layout.Title(text="Election results", x=0.5), yaxis_title="Seats", xaxis_tickmode="array", xaxis_tickvals=list(range(27)), xaxis_ticktext=tuple(df['year'].values), ) # Make the multi-bar plot fig = go.Figure(data=bar_plots, layout=layout) # Tell Plotly to render it fig.show()
Полный гид и пример кода: настройки с помощью слоя>
Боке (произносится «Boe-Kay») специализируется на создании интерактивных сюжетов, поэтому этот пример не показывает его лучшим. Проверьте Это расширенное руководство по боке , где мы добавляем несколько пользовательских подсказков! Как и в сюжете, графики Боке предназначены для встроенных в веб -приложения – он выводит свои графики в виде файлов HTML.
Вот результаты выборов, нанесенные в Боке:
from bokeh.io import show, output_file from bokeh.models import ColumnDataSource, FactorRange, HoverTool from bokeh.plotting import figure from bokeh.transform import factor_cmap from votes import long as df # Specify a file to write the plot to output_file("elections.html") # Tuples of groups (year, party) x = [(str(r[1]['year']), r[1]['party']) for r in df.iterrows()] y = df['seats'] # Bokeh wraps your data in its own objects to support interactivity source = ColumnDataSource(data=dict(x=x, y=y)) # Create a colourmap cmap = { 'Conservative': '#0343df', 'Labour': '#e50000', 'Liberal': '#ffff14', 'Others': '#929591', } fill_color = factor_cmap('x', palette=list(cmap.values()), factors=list(cmap.keys()), start=1, end=2) # Make the plot p = figure(x_range=FactorRange(*x), width=1200, title="Election results") p.vbar(x='x', top='y', width=0.9, source=source, fill_color=fill_color, line_color=fill_color) # Customise some display properties p.y_range.start = 0 p.x_range.range_padding = 0.1 p.yaxis.axis_label = 'Seats' p.xaxis.major_label_orientation = 1 p.xgrid.grid_line_color = None
Полный гид и пример кода: Заговор с Боке>
Altair основан на декларативном языке построения (или «грамматике визуализации») под названием Вега . Это означает хорошо продуманную API, который хорошо масштабируется для сложных сюжетов, спасая вас от того, что он заблудился в аду.
Как и в случае с Bokeh, Altair выводит свои графики в виде HTML -файлов. Проверьте расширенное руководство по Altair Здесь Анкет
Вот как наш сюжет результатов выборов выглядит в Altair. Обратите внимание, насколько явно указан фактический график, только шесть строк Python:
import altair as alt from votes import long as df # Set up the colourmap cmap = { 'Conservative': '#0343df', 'Labour': '#e50000', 'Liberal': '#ffff14', 'Others': '#929591', } # Cast years to strings df['year'] = df['year'].astype(str) # Here's where we make the plot chart = alt.Chart(df).mark_bar().encode( x=alt.X('party', title=None), y='seats', column=alt.Column('year', sort=list(df['year']), title=None), color=alt.Color('party', scale=alt.Scale(domain=list(cmap.keys()), range=list(cmap.values()))) ) # Save it as an HTML file. chart.save('altair-elections.html')
Полный гид и пример кода: настройки с помощью слоя>
Пигал фокусируется на визуальном внешнем виде. По умолчанию он производит участки SVG, так что вы можете увеличить их навсегда – или распечатать их – без их пикселирования. Графики пигалов также поставляются со встроенными хорошими функциями интерактивности, что делает Pygal еще одним недооцененным кандидатом, если вы хотите встроить участки в веб-приложение.
Вот график результатов выборов в Pygal:
import pygal from pygal.style import Style from votes import wide as df # Define the style custom_style = Style( colors=('#0343df', '#e50000', '#ffff14', '#929591') font_family='Roboto,Helvetica,Arial,sans-serif', background='transparent', label_font_size=14, ) # Set up the bar plot, ready for data c = pygal.Bar( title="UK Election Results", style=custom_style, y_title='Seats', width=1200, x_label_rotation=270, ) # Add four data sets to the bar plot c.add('Conservative', df['conservative']) c.add('Labour', df['labour']) c.add('Liberal', df['liberal']) c.add('Others', df['others']) # Define the X-labels c.x_labels = df['year'] # Write this to an SVG file c.render_to_file('pygal.svg')
Полный гид и пример код: настройки с помощью Pygal>
Панды чрезвычайно популярная библиотека данных для Python. Это позволяет вам делать всевозможные манипуляции с данными масштабильно, но также имеет удобный API. Поскольку он работает непосредственно на рамках данных, наш пример Pandas является наиболее кратким фрагментом кода в этой статье – даже короче, чем Seaborn!
Pandas API представляет собой обертку вокруг Matplotlib, поэтому вы также можете использовать базовый API Matplotlib, чтобы получить мелкозернистый контроль над вашими графиками.
Вот сюжет в пандах. Код прекрасно лаконичен!
from matplotlib.colors import ListedColormap from votes import wide as df cmap = ListedColormap(['#0343df', '#e50000', '#ffff14', '#929591']) ax = df.plot.bar(x='year', colormap=cmap) ax.set_xlabel(None) ax.set_ylabel('Seats') ax.set_title('UK election results') plt.show()
Полный гид и пример кода: настрой с пандами>
Anvil-это система для создания веб-приложений с полным стеком, не имеющим ничего, кроме Python-JavaScript не требуется!
Вы можете использовать любую из библиотек, о которых я говорил в этой статье, чтобы создать сюжеты на наковальни и отобразить их в веб -браузере. Это здорово для Здание мониторных панелей :
В каждом из подробных руководств о Matplotlib , Старший , Seaborn В Боке , Altair и Пигал , вы найдете пример веб -приложения, которое вы можете открыть и отредактировать в Anvil, показывая вам, как использовать каждую из этих библиотек Python.
Вы также можете найти консультант по конванию в Руководство по заговору на наковальнике . В нем рассказывается, как использовать сюжеты из каждой из библиотек, упомянутых в этой статье в вашем приложении Anvil, включая полностью переднюю версию Python Python.
Оригинал: “https://dev.to/meredydd/7-great-plotting-libraries-for-python-compared-with-guides-for-each-3047”