import numpy as np
import plotly.graph_objs as go
from plotly.subplots import make_subplots
from plotly.offline import plot
# Создание данных для капусты (используем круг как упрощенный пример)
theta = np.linspace(0, 2*np.pi, 100)
x = 0.5 * np.cos(theta)
y = 0.5 * np.sin(theta)
# Создание кадров анимации
frames = []
for i in range(200):
scale = 1 + 0.1 * np.sin(i * 0.1)
new_x = scale * x
new_y = scale * y
frames.append(go.Frame(data=[go.Scatter(x=new_x, y=new_y, mode='lines')]))
# Начальные данные для графика
init_trace = go.Scatter(x=x, y=y, mode='lines')
# Создание фигуры с начальными данными и кадрами
fig = go.Figure(data=[init_trace], frames=frames)
# Настройка анимации
fig.update_layout(
updatemenus=[{
'buttons': [
{
'args': [None, {'frame': {'duration': 50, 'redraw': True}, 'fromcurrent': True}],
'label': 'Play',
'method': 'animate'
},
{
'args': [[None], {'frame': {'duration': 0, 'redraw': False}, 'mode': 'immediate', 'transition': {'duration': 0}}],
'label': 'Pause',
'method': 'animate'
}
],
'showactive': False
}]
)
# Настройка осей
fig.update_xaxes(range=[-1, 1])
fig.update_yaxes(range=[-1, 1])
# Отображение анимации
plot(fig)
Click Run or press shift + ENTER to run code