Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

теория 1к 2с / Построение графиков в Python с использованием модуля matplotlib. - практика

.pdf
Скачиваний:
8
Добавлен:
20.06.2023
Размер:
911.57 Кб
Скачать

Легенда

 

Исходный код

Результат

1

xs = np.linspace(0, 2*np.pi, 100)

 

2

ys = np.sin(xs)

 

3

ys1 = np.cos(xs)

 

4

 

 

5

plt.plot(xs, ys, label="Синус")

 

6

plt.plot(xs, ys1, label="Косинус")

 

7

 

 

8

plt.title("Y = f(X)")

 

9

plt.xlabel("Ось X")

 

10

plt.ylabel("Ось Y")

 

11

 

 

12# Отображение легенды

13plt.legend()

14plt.show()

Ограничение осей

 

Исходный код

Результат

1

xs = np.linspace(0, 2*np.pi, 100)

 

2

ys = np.sin(xs)

 

3

ys1 = np.cos(xs)

 

4

 

 

5

plt.plot(xs, ys, label="Синус")

 

6

plt.plot(xs, ys1, label="Косинус")

 

7

 

 

8

plt.title("Y = f(X)")

 

9

plt.xlabel("Ось X")

 

10

plt.ylabel("Ось Y")

 

11

 

 

12# Ограничение оси X

13plt.xlim(left=0)

14# Ограничение оси Y

15plt.ylim(-1, 1)

16

17plt.legend()

18plt.show()

Стили линий

 

Исходный код

Результат

1

xs = np.linspace(0, 2*np.pi, 100)

 

2

s = np.sin(xs)

 

3

ys = [s, s+1, s+2, s+3]

 

4

 

 

5

# Черный штрих

 

6

plt.plot(xs, ys[0], "--k", label=0)

 

7

# Синий пунктир

 

8

plt.plot(xs, ys[1], c="blue",

 

9ls=":", label=1)

10 # Прозрачный штрих-пунктир

11 plt.plot(xs, ys[2], ls="-.",

12lw=3, alpha=0.5, label=2)

13# Без линии с маркерами

14plt.plot(xs, ys[3],

15ls="", marker="x",

16markevery=5, label=3)

17

18plt.legend()

19plt.show()

Две фигуры

 

 

Исходный код

Результат

 

 

 

 

1

xs = np.linspace(0, 2*np.pi, 100)

 

 

 

2

ys1 = np.sin(xs)

 

 

 

3

ys2 = np.cos(xs)

 

 

 

4

 

 

 

 

5

# Создание первой фигуры

 

 

 

6

plt.figure()

 

 

 

7

 

 

 

 

8

plt.plot(xs, ys1)

 

 

 

9

plt.title("Синус")

 

 

 

10

 

 

 

 

11

# Создание второй фигуры

 

 

 

12

plt.figure()

 

 

 

13

 

 

 

 

14

plt.plot(xs, ys2)

 

 

 

15

plt.title("Косинус")

 

 

 

16

 

 

 

 

17

# Отображение обеих фигур

 

 

 

18

plt.show()

 

 

 

 

 

 

 

 

 

 

 

 

Подграфики

 

Исходный код

Результат

1

xs = np.linspace(0, 2*np.pi, 100)

 

2

ys1 = np.sin(xs)

 

3

ys2 = np.cos(xs)

 

4

 

 

5

# Создание первого подграфика

 

6

plt.subplot(221)

 

7

plt.plot(xs, ys1)

 

8

plt.title("Синус")

 

9

 

 

10

# Создание второго подграфика

 

11plt.subplot(222)

12plt.plot(xs, ys2)

13plt.title("Косинус")

15# Создание третьего подграфика

16plt.subplot(212)

17plt.plot(xs, ys1 + ys2)

18plt.title("Сумма")

20# Корректировка расстояний

21# между подграфиками

22plt.tight_layout()

23plt.show()

Встроенные стили

 

Исходный код

Результат

1

import matplotlib as mpl

 

2

 

 

3

# Задание стиля графика

 

4

mpl.style.use("seaborn-whitegrid")

 

5

 

 

6

xs = np.linspace(0, 2*np.pi, 100)

 

7

ys1 = np.sin(xs)

 

8

ys2 = np.cos(xs)

 

9

 

 

10

plt.plot(xs, ys1, label="Синус")

 

11

plt.plot(xs, ys2, label="Косинус")

 

12

 

 

13plt.legend()

14plt.show()

Виды графиков

 

Исходный код

Результат

1

xs = np.linspace(0, 2*np.pi, 1000)

 

2

ys = np.sin(xs)

 

3

# Создание псевдо-экспериментальных данных

 

4

yr = ys + np.random.randn(ys.size) / 5

 

5

# Расчет отклонений

 

6

err = ys - yr

 

7

 

 

8

plt.subplot(211)

 

9

plt.plot(xs, ys, c="black")

 

10

# Построение дискретных точек

 

11plt.scatter(xs, yr, alpha=0.15)

12plt.title("y = f(x)")

13

14plt.subplot(212)

15# Построение гистограммы

16plt.hist(err, bins=20)

17plt.title("Распределение ошибок")

18plt.xlabel("Значение отклонения")

19plt.ylabel("Частота")

20

21plt.tight_layout()

22plt.show()

Объектно-ориентированный подход

Рассмотрим пример использования объектно-

ориентированного подхода для построения графиков

Использование ООП открывает доступ к гораздо большему количеству настроек и модификаций

Практически все примеры на официальном сайте MatPlotLib выполнены с применением

ООП

Использование ООП

Исходный код

Результат

1 xs = np.linspace(0, 2*np.pi, 1000)

2 ys1 = np.sin(xs)

3 ys2 = np.cos(xs)

4

5 # Создание фигуры и подграфиков

6 fig, axs = plt.subplots(1, 2)

7

8 # Первый подграфик

9 axs[0].plot(xs, ys1)

10axs[0].set_title("Синус")

11axs[0].set_xlabel("Ось X")

12axs[0].set_ylabel("Ось Y")

14# Второй подграфик

15axs[1].plot(xs, ys2)

16axs[1].set_title("Косинус")

17axs[1].set_xlabel("Ось X")

18axs[1].set_ylabel("Ось Y")

20plt.tight_layout()

21plt.show()

3D графики

 

Исходный код

Результат

1

import matplotlib as mpl

 

2

# Позволяет использовать 3D

 

3

from mpl_toolkits.mplot3d import Axes3D

 

4

# Создание исходных данных

 

5

x = np.linspace(0, 5, 30)

 

6

# Создание координатной сетки

 

7

X, Y = np.meshgrid(x, x)

 

8

Z = np.sin(X) + np.cos(Y)

 

9

# Создание основной фигуры

 

10

fig = plt.figure()

 

11

# Добавление на фигуру первой 3D проекции

 

12

ax1 = fig.add_subplot(221, projection='3d')

 

13

ax1.scatter(X, Y, Z, c=Z.flatten(), cmap=mpl.cm.coolwarm)

 

14ax1.set_title("scatter")

15# Добавление на фигуру второй 3D проекции

16ax2 = fig.add_subplot(222, projection='3d')

17ax2.plot_surface(X, Y, Z, cmap=mpl.cm.hot)

18ax2.set_title("plot_surface")

19# Добавление на фигуру третьей 3D проекции

20ax3 = fig.add_subplot(223, projection='3d')

21ax3.plot_wireframe(X, Y, Z)

22ax3.set_title("plot_wireframe", fontsize=14)

24plt.show()