Найти в Дзене
programmer's notes (python and more)

Программирование на языке python. Библиотека matplotlib. Простые графики и использование NumPy

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео. Продолжаем разбираться с библиотекой matplotlib. Посмотрим, что дополнительно можно сделать на графике функции. #!/usr/bin/python3
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-20.0, 20.0, 400)
y = np.sin(x)*np.cos(x) + np.log(x*x + 200)
plt.plot(x, y, 'r')
plt.ylabel ('Значение функции')
plt.xlabel ('Значение аргумента')
plt.grid(True, linestyle = 'dotted', color = "grey", linewidth = "1.4")
plt.show() Результат работы программы построения функции sin(x)*cos(x) + log(x*x + 200) см. на Рисунке 1. Несколько замечаний по программе Напомню, что с помощью кнопки "сохранить", можно получить чистый график функции. Теперь рассмотрим два способа построения окружности в matplotlib. Их, кстати, больше. В следующих статьях рассмотрим другие. Первый способ предполагает построения двух графиков функций: верхняя часть окружнос
Оглавление

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Библиотека NumPy | programmer's notes (python and more) | Дзен
Графика на Python | programmer's notes (python and more) | Дзен
Научные графические библиотеки для Python | programmer's notes (python and more) | Дзен

Построение графиков на matplotlib

Продолжаем разбираться с библиотекой matplotlib. Посмотрим, что дополнительно можно сделать на графике функции.

#!/usr/bin/python3
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-20.0, 20.0, 400)
y = np.sin(x)*np.cos(x) + np.log(x*x + 200)
plt.plot(x, y, 'r')
plt.ylabel ('Значение функции')
plt.xlabel ('Значение аргумента')
plt.grid(True, linestyle = 'dotted', color = "grey", linewidth = "1.4")
plt.show()

Результат работы программы построения функции

sin(x)*cos(x) + log(x*x + 200)

см. на Рисунке 1. Несколько замечаний по программе

  • В функции plot() мы указали цвет графика.
  • Указали дополнительную информацию для осей координат: ylabel() и xlabel().
  • С помощью grid() устанавливаем сетку и параметры сетки (точками, цвет серый, ширина линии 1.4).
Рисунок 1. Пример построения графика функции с дополнительными параметрами.  представления гарфика
Рисунок 1. Пример построения графика функции с дополнительными параметрами. представления гарфика

Напомню, что с помощью кнопки "сохранить", можно получить чистый график функции.

Построение окружности на matplotlib

Теперь рассмотрим два способа построения окружности в matplotlib. Их, кстати, больше. В следующих статьях рассмотрим другие.

Первый способ предполагает построения двух графиков функций: верхняя часть окружности и нижняя часть окружности. Например, если уравнение окружности будет

x**2 + y**2 = 4

то нужно построить график двух функций

y1 = sqrt(4 - (x1)**2)
y1 = - sqrt(4 - (x1)**2)

Поскольку корень из отрицательного числа не существует на множестве действительных чисел, нужно либо вычислить промежуток, на котором будет строиться функция, либо проверять знак выражения под корнем, не заморачиваясь точным вычислением промежутка. Ниже в программе мы просто строго определяем нужный отрезок

#!/usr/bin/python3
import matplotlib.pyplot as plt
import numpy as np
x1 = np.linspace(-2, 2, 130)
y1 = np.sqrt(4 - (x1)**2)
y2 = -np.sqrt(4 - (x1)**2)
plt.plot(x1, y1, 'b')
plt.plot(x1, y2, 'b')
plt.show()

Обратите внимание, что мы на этот раз с помощью функции plot() строим два графика отдельно. Но проблем нет и мы получаем изображение окружности.

Результат выполнения программы см. на рисунке 2

Рисунок 2. Построение окружности первым способом
Рисунок 2. Построение окружности первым способом

Следующий способ построения окружности основывается на функции contour(), которая даёт нам как бы проекции или контур 3-х мерной фигуры на плоскость. Если мы построим шар, то контуром как раз будет окружность.

#!/usr/bin/python3
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1.1, 2.0, 100)
y = np.linspace(-1.1, 2.0, 100)
x1, y1 = np.meshgrid(x,y)
z = (x1+0.01)**2 + (y1-0.5)**2 - 1.0
plt.contour(x1, y1, z, [0])
plt.show()

Пояснение к программе

  • Функция NumPy meshgrid() формирует сетку значений для построения трехмерной фигуры. Для того, чтобы понять, что делает эта функция можно выполнить следующий фрагмент кода

    x, y = np.linspace(0, 1, 3), np.linspace(0, 1, 3)
    X, Y = np.meshgrid(x, y)
    print(x)
    print(y)
    print(X)
    print(Y)


    Результат выполнения

    [0.  0.5 1. ]
    [0.  0.5 1. ]
    [[0.  0.5 1. ]
    [0.  0.5 1. ]
    [0.  0.5 1. ]]
    [[0.  0.  0. ]
    [0.5 0.5 0.5]
    [1.  1.  1. ]]
  • Функция contour() даёт нам проекцию шара на плоскость ([0]), по большему контуру. Можно указывать несколько контуров, например [0, 0.1, 0.2] и мы получим три окружности на плоскости, вложенные друг в друга.

Результат работы программы см. на рисунке 3

Рисунок 3. Построение окружности вторым способом
Рисунок 3. Построение окружности вторым способом

Следующая статья здесь

Ну, пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Кривые вас до добра не доведут
Кривые вас до добра не доведут