Джейд Картер

Библиотеки Python Часть 2. Практическое применение


Скачать книгу

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

      ))

      #