```python
profit = [300, 500, 200, 400, 350]
fig = go.Figure()
fig.add_trace(go.Bar(
x=categories,
y=sales,
name='Sales',
marker=dict(color='blue')
))
fig.add_trace(go.Scatter(
x=categories,
y=profit,
mode='lines+markers',
name='Profit',
line=dict(color='green', width=2)
))
fig.update_layout(
title='Продажи и прибыль по категориям товаров',
xaxis_title='Категории',
yaxis_title='Сумма ($)',
barmode='group',
template='plotly_white'
)
fig.show()
```
Что добавлено:
– Комбинация `Bar` и `Scatter` позволяет визуализировать данные разных типов.
– Параметр `barmode='group'` размещает столбцы по группам, чтобы они не перекрывались.
Построение круговой диаграммы
Для отображения долей в процентах часто используется круговая диаграмма. Например, распределение продаж по категориям.
```python
fig = go.Figure()
fig.add_trace(go.Pie(
labels=categories,
values=sales,
hole=0.3 # Полудонат (дырка в центре)
))
fig.update_layout(
title='Распределение продаж по категориям',
template='plotly_white'
)
fig.show()
```
Особенности:
– Используем `go.Pie` для построения круговой диаграммы.
– Параметр `hole` задаёт размер центральной части, превращая график в "пончиковую" диаграмму.
Построение тепловой карты
Тепловые карты полезны для отображения матриц данных, например, уровня продаж в разных регионах и месяцах.
```python
import numpy as np
regions = ['North', 'South', 'East', 'West']
months = ['January', 'February', 'March', 'April']
sales_data = np.random.randint(100, 1000, size=(4, 4))
fig = go.Figure(data=go.Heatmap(
z=sales_data,
x=months,
y=regions,
colorscale='Viridis' # Цветовая схема
))
fig.update_layout(
title='Уровень продаж по регионам и месяцам',
xaxis_title='Месяцы',
yaxis_title='Регионы'
)
fig.show()
```
Объяснение:
– Используем `go.Heatmap` для отображения данных в виде тепловой карты.
– Параметр `colorscale` задаёт цветовую палитру, визуально усиливая различия между значениями.
Построение трёхмерного графика
Plotly поддерживает трёхмерные визуализации. Например, график, отображающий поверхность функции.
```python
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
fig = go.Figure(data=[go.Surface(z=Z, x=X, y=Y)])
fig.update_layout(
title='3D График поверхности',
scene=dict(
xaxis_title='X',
yaxis_title='Y',
zaxis_title='Z'
)
)
fig.show()
```
Особенности:
– Используем `go.Surface` для построения трёхмерной поверхности.
– Параметры `scene` задают подписи к осям в трёхмерном пространстве.
Интерактивность с помощью виджетов
Plotly позволяет добавлять интерактивные элементы, такие как слайдеры. Например, график, где пользователь может выбирать диапазон времени.
```python
from plotly.subplots import make_subplots
years = ['2020', '2021', '2022', '2023']
values = [500, 700, 800, 600]
fig = make_subplots(rows=1, cols=1)
fig.add_trace(go.Scatter(
x=years,
y=values,
mode='lines+markers',
name='Yearly Data'
))
fig.update_layout(
title='Интерактивный график с выбором диапазона',
xaxis=dict(rangeslider=dict(visible=True)), # Добавляем ползунок
template='plotly_white'
)
fig.show()
```
Интерактивность:
– Ползунок позволяет выбирать диапазон данных на оси X.
– Это полезно для работы с временными рядами.
Plotly – универсальный инструмент для создания интерактивных графиков. Благодаря множеству типов графиков и богатым возможностям настройки, библиотека подходит для самых разнообразных задач: от анализа данных до их визуальной презентации. Используя Plotly, вы можете не только создавать красивые графики, но и предоставлять пользователям возможность активно взаимодействовать с ними.
Задача 1: Построение графика изменения температуры