Диаграмма рассеяния и столбчатая диаграмма в Plotly Express

Модуль Plotly Express содержит функции для создания разного вида графиков. Сегодня мы расскажем вам, как построить диаграмму рассеяния (scatter) и столбчатую диаграмму (bar chart) в обычном и фасеточном виде, а также рассмотрим аргументы функций Plotly Express, которые повысят интерактивность.

Особенности Plotly Express

Plotly Express (обычно импортиремый как px) является рекомендуемым способом визуализации данных и, в отличии от создания графических объектов напрямую (о чем мы говорили здесь), занимает несколько строчек кода.

В Plotly Express есть 30 функций для создания фигур. Для большинства Data Science проектов их достаточно. Причём API для этих функций очень простой, достаточно разобраться с их аргументами, которые для каждого типа фигуры могут отличаться.

Plotly Express содержит функции для построения:

  • Базовые графики: scatter, line, area, bar, funnel, timeline
  • Части целого: pie, sunburst, treemap, funnel_area
  • 1D распределения: histogram, box, violin, strip
  • 2D распределения: density_heatmap, density_contour
  • С матричным входом: imshow
  • 3D-графики: scatter_3d, line_3d
  • Многомерные: scatter_matrix, parallel_coordinates, parallel_categories
  • Тайловые карты: scatter_mapbox, line_mapbox, choropleth_mapbox, density_mapbox
  • Контурные карты: scatter_geo, line_geo, choropleth
  • Графики в полярной системе координат: scatter_polar, line_polar, bar_polar
  • Тернарные диаграммы: scatter_ternary, line_ternary

Диаграмма рассеяния

Plotly Express может работать с данными Pandas, т.е. с данными в формате DataFrame. В Plotly есть также модуль data, который предоставляет разные наборы данных, т.н, там есть датасет с ирисом (растение). Мы можем посмотреть зависимость между шириной и длиной чашелистика для разных видов ириса. Следующий код на Python демонстрирует построение диаграммы рассеяния:

import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
fig.show()
Пример графика scatter
Диаграмма рассеяния

Более того, мы можем указать размер точек в зависимости от атрибута. Вот так выглядит Python-код, где размер точек определяется длиной лепестка:

fig = px.scatter(df, x="sepal_width", y="sepal_length", 
                 color="species", size="petal_length",)
scatter plot Plotly Express
Диаграмма рассеяния с указанным размером точек

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

Столбчатая диаграмма

В Plotly есть датасет с демографическими показателями. Построим столбчатую диаграмму, которая будет показывать популяцию Канады в разные периоды. В функциях Plotly Express есть аргумент labels, в котором можно указать отображаемое на графике название атрибута. Это будет полезно в нашем случае, поскольку атрибут pop на графике будет малоинформативен. Вот так выглядит Python-код:

data = px.data.gapminder()

data_canada = data[data.country == 'Canada']
fig = px.bar(data_canada, x='year', y='pop')
fig.show()
Барный график
Столбчатая диаграмма

Ещё одним полезным аргументом функций Plotly Express является hover_data, который необходим для отображения указанных значений атрибутов при наведении на один из столбцов. Также укажем цвет (color) для обозначения продолжительности жизни.

fig = px.bar(data_canada, x='year', y='pop',
             hover_data=['lifeExp', 'gdpPercap'], color='lifeExp',
             labels={'pop':'population of Canada'},)
bar plot (барная диаграмма)
Информативная столбчатая диаграмма

При наведении на один столбцов будет отображено дополнительно значение lifeExp (продолжительность жизни) и gdpPercap (ВВП на душу). А также по цвету можно определить, какая продолжительность жизни была в разные периоды.

Фасеточное отображение

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

Для этого в аргументах функции Plotly Express указываются facet_row и/или facet_col. Они принимают название атрибута, по которому проводить разделение. Вдобавок к ним можно указать category_orders, который расположит графики в заданном порядке. Следующий код на Python это демонстрирует:

df = px.data.tips()
fig = px.bar(df, x="sex", y="total_bill", 
             color="smoker", barmode="group", 
             facet_row="time", facet_col="day",
             category_orders={"day": ["Thur", "Fri", "Sat", "Sun"], 
                              "time": ["Lunch", "Dinner"]})
Пример фасеточного построения в Plotly Express
Фасеточное отображение столбчатой диаграммы

Кроме того, мы указали barmode="group", который сгруппирует атрибут указанный в x, т.е. «под капотом» выполнит метод groupby библиотеки Pandas.

 

 

Еще больше о визуализации данных в Plotly реальных примерах Data Science, вы узнаете на специализированном курсе «VIP: Визуализация данных на языке Python» в лицензированном учебном центре обучения и повышения квалификации IT-специалистов в Москве.

Источники
  1. https://plotly.com/python/

Добавить комментарий

Поиск по сайту