Лабораторная работа №6 Построение 2D графиков в Python
Технические требования:
Среда разработки для написания кода на Python Компилятор Python 3 (+ стандартный набор библиотек)
Требования к знаниям студентов:
Основы синтаксиса Python 3:
-умение работать с переменными и знание типов данных
-умение работать со списками
-умение считывать данные из файла
-умение выводить данные в консоль/файл
-знание условных конструкций if-elif-else
-умение писать циклы for/while
-умение создавать и вызывать функции, возращать значения
-умение генерировать случайные числа
Цель работы:
Знакомство с численными методами для решения задач: - построение 2D графиков
Теоретическое введение:
Блок 1 “Построение 2D графиков”
Библиотека matplotlib — один из наиболее популярных инструментов для визуализации данных в Python. Она позволяет создавать различные типы двумерных графиков, начиная от простых точечных диаграмм и заканчивая сложными графиками функций и трехмерными изображениями.
Рассмотрим простейший пример - построим график прямой линии.
import numpy as np
import matplotlib.pyplot as plt
#Генерируем массив значений x x = np.linspace(-10, 10, 100)
#Вычисляем значения y = x^2 y = x ** 2
#Создаем график
plt.plot(x, y)
#Добавляем заголовок и подписи к осям plt.title('График квадратичной функции') plt.xlabel('X ось')
plt.ylabel('Y ось')
#Отображаем график
plt.show()
Теперь рассмотрим случай, когда мы хотим построить набор (массив) отдельных точек в координатных осях.
import numpy as np
import matplotlib.pyplot as plt
#Массив случайных значений X и Y np.random.seed(0)
x = np.random.randn(50) y = np.random.randn(50)
#Строим точки
plt.scatter(x, y, color='blue', marker='o')
#Заголовок и подписи к осям plt.title('Диаграмма рассеяния') plt.xlabel('Ось X') plt.ylabel('Ось Y')
#Показываем график plt.show()
Помимо стандартных сплошных линий ('-'), библиотека поддерживает другие стили отображения:
Строка |
Описание |
'-' |
Сплошная линия |
'--' |
Штриховая линия |
'-.' |
Штрих-пунктирная |
':' |
Точка-штрих |
'None' |
Нет линии |
Пример изменения стиля линии:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100) y = np.sin(x)
plt.plot(x, y, linestyle='--') # Используем штриховую линию plt.title('Синусоидальная кривая')
plt.xlabel('Время')
plt.ylabel('Амплитуда')
plt.show()
Можно также настроить внешний вид маркеров (точек), используемых для обозначения точек на графике.
Параметр |
Значение |
'.' |
Точка |
',' |
Пиксел |
'o' |
Круг |
'+' |
Плюс |
'*' |
Звезда |
's' |
Квадрат |
'd' |
Ромб |
Пример настройки маркера: |
|
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10) y = np.exp(x / 10)
plt.plot(x, y, marker='*', markersize=8, markeredgecolor='black', linewidth=0) plt.title('Экспоненциальная зависимость')
plt.xlabel('Индекс') plt.ylabel('Значение экспоненты') plt.show()
Для того, чтобы сделать графики более читабельными, можно добавить сетку и изменить оформление осей.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 100) y = np.cos(x)
plt.figure(figsize=(8, 6)) # Размер окна графика plt.plot(x, y, label='Косинус')
plt.grid(True) # Включаем сетку plt.legend() # Подписываем легенду plt.title('График косинуса') plt.xlabel('Угол в радианах') plt.ylabel('Значение функции') plt.show()
Практическая часть
Задание 1.1 (основная часть) “Построение массива точек”
Напишите программу, которая получает на вход 4 числа (x_min, x_max, y_min, y_max), генерирует 10 точек со случайными координатами x и y, расположенными в пределах заданных диапазонов, и визуализирует их в системе координат.
Задание 1.2 (основная часть) “Построение графика функции”
Выберите 2 нелинейные функции и постройте их в одной декартовой системе координат на плоскости. Подпишите оси и график. Для визуализации линий используйте различные типы построения (сплошная, штриховая, точкаштрих).
Заключение:
В качестве результата необходимо представить отчет, включающий в себя листинг программы (текст исходного кода), полученные результаты, а также их анализ.
При сдаче работы студент должен знать изученные численные методы, а также разбираться в коде написанной программы.
