24, 26, 25, 23, 21, 20],
'Los Angeles': [30, 31, 29, 28, 27, 26, 25],
'Chicago': [15, 18, 20, 17, 16, 14, 12]
}
# Создание анимации
fig = go.Figure()
for city in cities:
fig.add_trace(go.Scatter(
x=days,
y=temperatures[city],
mode='lines+markers',
name=city
))
# Настройка анимации
frames = [
go.Frame(
data=[
go.Scatter(
x=days[:i],
y=temperatures[city][:i],
mode='lines+markers',
name=city
)
for city in cities
]
)
for i in range(1, len(days) + 1)
]
fig.update(frames=frames)
# Настройка кнопок
fig.update_layout(
updatemenus=[
dict(
type='buttons',
showactive=False,
buttons=[
dict(label='Play', method='animate', args=[None, {'frame': {'duration': 500, 'redraw': True}}]),
dict(label='Pause', method='animate', args=[[None], {'frame': {'duration': 0, 'redraw': False}}])
]
)
]
)
# Оформление графика
fig.update_layout(
title='Изменение температуры по дням недели',
xaxis_title='День недели',
yaxis_title='Температура (°C)',
template='plotly_white'
)
fig.show()
```
Задача 7: Трёхмерная анимация COVID-19
Описание:
Используйте вымышленные данные о росте случаев COVID-19 в трёх странах (`USA`, `India`, `Brazil`) за шесть месяцев:
– Месяцы: `['January', 'February', 'March', 'April', 'May', 'June']`
– Число случаев (матрица):
```
USA: [1000, 2000, 4000, 8000, 15000, 20000]
India: [500, 1500, 3000, 6000, 12000, 18000]
Brazil: [800, 1600, 3200, 6400, 13000, 19000]
```
Создайте трёхмерную анимацию, показывающую рост числа случаев по месяцам.
Решение:
```python
import plotly.graph_objects as go
# Данные
months = ['January', 'February', 'March', 'April', 'May', 'June']
countries = ['USA', 'India', 'Brazil']
cases = {
'USA': [1000, 2000, 4000, 8000, 15000, 20000],
'India': [500, 1500, 3000, 6000, 12000, 18000],
'Brazil': [800, 1600, 3200, 6400, 13000, 19000]
}
# Построение графика
fig = go.Figure()
for month, idx in zip(months, range(len(months))):
fig.add_trace(go.Scatter3d(
x=countries,
y=[month] * len(countries),
z=[cases[country][idx] for country in countries],
mode='markers',
marker=dict(size=10, color=[cases[country][idx] for country in countries], colorscale='Viridis'),
name=month
))
# Оформление графика
fig.update_layout(
title='Трёхмерная анимация роста COVID-19',
scene=dict(
xaxis_title='Страна',
yaxis_title='Месяц',
zaxis_title='Число случаев'
),
template='plotly_dark'
)
fig.show()
```
Задача 8: Тепловая карта с аннотациями
Описание:
Имеется таблица оценки студентов по предметам:
– Студенты: `['Alice', 'Bob', 'Charlie', 'Diana']`
– Предметы: `['Math', 'Physics', 'Chemistry', 'Biology']`
– Оценки (матрица):
```
[[85, 90, 78, 92],
[88, 84, 89, 91],
[76, 85, 83, 88],
[90, 92, 80, 87]]
```
Постройте тепловую карту, добавив аннотации с оценками.
Решение:
```python
import plotly.graph_objects as go
# Данные
students = ['Alice', 'Bob', 'Charlie', 'Diana']
subjects = ['Math', 'Physics', 'Chemistry', 'Biology']
grades = [
[85, 90, 78, 92],
[88, 84, 89, 91],
[76, 85, 83, 88],
[90, 92, 80, 87]
]
# Построение тепловой карты
fig = go.Figure(data=go.Heatmap(
z=grades,
x=subjects,
y=students,
colorscale='Blues',
showscale=True
))
#