Модуль 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()
Более того, мы можем указать размер точек в зависимости от атрибута. Вот так выглядит Python-код, где размер точек определяется длиной лепестка:
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species", size="petal_length",)
Уже по такой простому графику можно понять, что ирис вида 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'},)
При наведении на один столбцов будет отображено дополнительно значение 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"]})
Кроме того, мы указали barmode="group"
, который сгруппирует атрибут указанный в x
, т.е. «под капотом» выполнит метод groupby
библиотеки Pandas.
Еще больше о визуализации данных в Plotly реальных примерах Data Science, вы узнаете на специализированном курсе «VIP: Визуализация данных на языке Python» в лицензированном учебном центре обучения и повышения квалификации IT-специалистов в Москве.