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

Читать онлайн.
Название Библиотеки Python Часть 2. Практическое применение
Автор произведения Джейд Картер
Жанр
Серия
Издательство
Год выпуска 2025
isbn



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

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

      ))

      #