Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Построение простого графика функции на matplotlib. Использование библиотеки NumPy
Приступаем к новой библиотеке, которая обычно используется для визуализации расчётов или просто данных: графиков функций, диаграмм. Удобная библиотека. Для большинства задач её использование очень простое и эффективное. Разумеется её можно использовать и в WEB-приложениях.
Устанавливается библиотека тривиально
pip3 install matplotlib
Для Windows используем pip
Библиотека подсоединяется стандартным способом с помощью команды
import matplotlib.pyplot as plt
Нам понадобятся пока всего две функции: plt.plot(x, y), котоаря создаёт график на основе массивов x и y. и функции plt.show(), которая создаёт окно с графиком (наличие графика обязательно). Предельно простая технология.
#!/usr/bin/python3
import matplotlib.pyplot as plt
import math
x, y = [0], []
a, b, n = 0, 20, 200
d = (b - a) / n
[x.append(a:=a+d) for i in range(n+1)]
[y.append(math.sin(x1)**2 + math.sqrt(x1)) for x1 in x]
plt.plot(x, y)
plt.show()
Результат см. рисунок 1
Пояснения к программе
С помощью двух генераторов мы создаём массив значений по оси x, а потом массив значений функции. Взята функция
sin(x)*sin(x) + sqrt(x)
Результат работы програмы см. на рисунке 1.
Как мы видим (см. рисунок 1) у нас есть кнопка "сохранить", с помощью которой можно сохранить сам график в формате .png. Результат сохранения представлен на рисунке 2.
Другие кнопочки окна (см. Рисунок 1) я не обсуждаю, ну по-крайней мере, пока. Можно "поиграть" с ними самостоятельно.
А теперь тоже самое с использованием библиотеки NumPy
В библиотеке NumPy есть удобная функция numpy.linspace(). С помощью неё можно создать массив значений. Это удобно, когда вы строите график функции на заданном промежутке. В общем случае
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0, device=None)
- start — начальное значение последовательности (начало отрезка);
- stop — конец последовательности;
- num — количество значений в массиве;
- endpoint — если True (по умолчанию), то последнее значение stop включается в массив значений, если False, то нет;
- dtype — тип выводимых в массив значений, если False, то тип совпадает с start и stop;
- axis — используется если start и stop это массивы.
- device — устройство, куда будет помещён полученный массив значений.
Программа, которая делает ровно тоже самое, что и первая программа, с использование NumPy будет гораздо проще (см. ниже).
#!/usr/bin/python3
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0.0, 20.0, 200)
y = np.sin(x)*np.sin(x) + np.sqrt(x)
plt.plot(x, y)
plt.show()
Результат работы программы такой же, как и у программы первой.
Лишний раз подчеркну красоту и продуманность библиотеки NumPy.
Следующа статья
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.