Меню

Python как вывести график функции

Графики функций и поверхностей в Python Питон Matplotlib

Построение графиков с помощью модуля Matplotlib в Python Питон.

В этом уроке мы разберём, как строить графики функций с помощью модуля Matplotlib в Python Питон.
Matplotlib это библиотека для Python, предназначенная для визуализации данных. В данном уроке мы разберём построение графиков функций в Питон на плоскости и построение поверхности в трёхмерном пространстве. Зачастую, именно Matplotlib используется в научных исследованиях и конференциях для демонстрации полученных данных.
Для построения графиков нужно импортировать модуль Pyplot. Pyplot это модуль для работы с графиками в Питоне. Pyplot это набор команд, созданных для построения графиков функций и уравнений. Для удобного построения графиков так же нужно использовать библиотеку NumPy.
Matplotlib, как и NumPy, встроен в среду разработки Spyder, поэтому их можно импортировать без предварительной установки.
import numpy as np
import matplotlib.pyplot as plt
as np и as plt означает, что когда мы будем вызывать функции и процедуры из модулей, вместо названия модулей мы будем использовать np и plt .
Для построения графика функции в Python нужно задать саму функцию. Её можно задать с помощью лямбда-функции. Лямбда-функция — это краткий способ записи обычной функции в одну строчку. В этом уроке мы рассмотрим построение синусоиды на Питоне. Синусоида задаётся функцией f(x) = sin(x) .
y = lambda x: np.sin(x)
y это обозначение функции (для её вызова мы будем использовать y(x) ), lambda это ключевое слово, обозначающее начало задания лямбда-функции, x это аргумент, использующийся в функции, после двоеточия задаётся функция. Так как в стандартном Python нет функции, возвращающей синус x , мы его задаём с помощью NumPy, его мы импортировали под именем np .
Все действия в Pyplot производятся на рисунках. Для построения графика функции в Python нужно сначала задать сетку координат. Сетка координат в python задается с помощью команды plt.subplots().
fig = plt.subplots()
Мы должны определить область значений, на которой мы будем строить график функции в Питоне. Это делается с помощью linspace .
x = np.linspace(-3, 3, 100)
linspace создаёт массив с нижней границей -3 и верхней границей 3 , в созданном массиве будет 100 элементов. Чем больше будет последнее число, тем больше значений функции будет рассчитываться, тем точнее будет отображаться график в Python.
После того, как мы создали систему координат, область построения, мы можем построить график в Питон. Для построения графика фуекции в Python нужно использовать команду plt.plot(x, y(x)) , где x это аргумент, y(x) это функция от x , заданная с помощью лямбда-выражения.
plt.plot(x, y(x))
После того, как мы построили график в Python, нужно показать его на рисунке. Для этого используется plt.show() .
Полный код программы на python для рисования графика функции
# импортируем модули
import numpy as np
import matplotlib.pyplot as plt
# функция
y = lambda x: np.sin(x)
# создаём рисунок с координатную плоскость
fig = plt.subplots()
# создаём область, в которой будет
# — отображаться график
x = np.linspace( -3, 3, 100)
# значения x, которые будут отображены
# количество элементов в созданном массиве
# — качество прорисовки графика
# рисуем график
plt.plot(x, y(x))
# показываем график
plt.show()

Получим график синусоиды в python в отдельном окне

Отображение нескольких графиков на одном рисунке в Python

В одной области в python можно отобразить графики нескольких функций. Добавим aeyrwb. y=x и нарисуем ее совместно с синусоидой.
Для этого введем еще одну функцию с помощью lambda
y1=lambda x: x
Построим график этой функции
plt.plot(x,y1(x))
В итоге программа в Python для построения графиков двух функций в одном окне

# импортируем модули
import numpy as np
import matplotlib.pyplot as plt
# функция
y = lambda x: np.sin(x)
y1=lambda x: x
# создаём рисунок с координатную плоскость
fig = plt.subplots()
# создаём область, в которой будет
# — отображаться график
x = np.linspace(-3, 3,100)
# значения x, которые будут отображены
# количество элементов в созданном массиве
# — качество прорисовки графика
# рисуем график
plt.plot(x, y(x))
plt.plot(x,y1(x))
# показываем график
plt.show()

Трехмерные поверхности в Python

В трёхмерном пространстве каждая точка задаётся тремя координатами, следовательно, в трёхмерном пространстве нужно два аргумента для задания функции. В этом уроке по Питону мы зададим функцию
f(x,y)=x^2-y^2
от двух аргументов. Аргументы x и y , функция z .
f = lambda x, y: x ** 2 — y ** 2
Чтобы начать рисовать трехмерные поверхности в Python нужно сначал задать область построения с помощью функции plt.figure принимает параметр figsize(x, y) , где x и y – ширина и высота рисунка в дюймах. Создадим рисунок в Python размером 12×6 дюймов для отображения графиков
fig = plt.figure(figsize = (12, 6))
В построенной области мы создадим рисунок, в котором будут отображено трёхмерное пространство с координатными осями и сама поверхность. В Питоне для этого используется fig.add_subplot() .
ax = fig.add_subplot(1, 1, 1, projection = ‘3d’)
Функция в Python fig.add_subplot() разбивает область построения на клетки и задает в какой клетке рисовать трехмерный график. Так команда ax = fig.add_subplot(1, 1, 1, projection = ‘3d’) разбивает область построения на две клтки и в первую клетку будет отображаться трехмерный гарфик, благодаря аргументу projection = ‘3d’
Введём области отображения функции для каждого аргумента в Питон.
xval = np.linspace(-5, 5, 100)
yval = np.linspace(-5, 5, 100)
Нужно создать поверхность, которая будет отображаться на рисунке в Python. Для этого используется
surf = ax.plot_surface(x, y, z, rstride = 4, cstride = 4, cmap = cm.plasma)
Где x и y это принимаемые аргументы, z это получаемая функция, rstride и cstride отвечает за шаг прорисовки поверхности в Питон, чем меньше будут эти значения, тем более плавно будет выглядеть градиент на поверхности. С помощью cmap.plasma поверхность будет отображаться с цветовой схемой plasma . Например, существуют цветовые схемы, такие как viridis и magma . Полный список цветовых схем есть на сайте Matplotlib.
Пример программы на Python построение поверхности в трёхмерном пространстве # импортируем модули
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
from matplotlib import cm
import matplotlib.pyplot as plt
# уравнение поверхности
f = lambda x, y: x ** 2 — y ** 2
# создаём полотно для рисунка
fig = plt.figure(figsize = (10, 10))
# создаём рисунок пространства с поверхностью
ax = fig.add_subplot(1, 1, 1, projection = ‘3d’)
# размечаем границы осей для аргументов
xval = np.linspace(-4, 4, 100)
yval = np.linspace(-4, 4, 100)
# создаём массив с xval столбцами и yval строками
# — в этом массиве будут храниться значения z
x, y = np.meshgrid(xval, yval)
# приравниваем z к функции от x и y
z = f(x, y)
# создаём поверхность
surf = ax.plot_surface(
# отмечаем аргументы и уравнение поверхности
x, y, z,
# шаг прорисовки сетки
# — чем меньше значение, тем плавнее
# — будет градиент на поверхности
rstride = 10,
cstride = 10,
# цветовая схема plasma
cmap = cm.plasma)

Читайте также:  Centos как вывести список пользователей

Получим график трехмерной поверхности в цветовой гамме в специальном окне

Изменим параметры построения трехмерной поверхности, уменьшим размер сетик, сделаем поверхность более плавной и точной для этого уменьшаем параметры и сменим цветовую гамму на viridis

rstride = 2,
cstride = 2,
cmap = cm.viridis)

Получим график трехмерной поверхности в Python более точный и в другой цветовой гамме

Вернуться к содержанию курса python Следующая тема Классы в Питон

Источник

Построение графиков функций на Python. Pygame

Привет, Хабр! Я хотел бы рассказать, как написать программу для построения графиков функций. Программу будем писать на Python с использованием библиотеки PyGame.

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

Основной алгоритм

Основной алгоритм заключается в вычислении функции на интервале: [-10,10]. Так как целых значений немного, то будем увеличивать параметр с малым шагом, к примеру 0.0001.

Функция имеет вид y = f(x). Формат ввода, соответственно, string(так как пользователь вводить функцию с использованием символов).

Получается следующий алгоритм:

Пишем код

Для начала следует импортировать библиотеки. Это библиотека PyGame, с её помощью будем рисовать. И библиотека math, она добавляет больше математических функций(sin, cos, sqrt и т.д.).

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

Создадим класс, который будет рисовать координатные оси(ординат и абсцисс).

Теперь класс для точки, так как точек будет очень много, то график будет казаться сплошным.

Теперь приступим к основному алгоритму. Функцию считает модуль eval, а с ним нужно быть очень аккуратным в плане ввода(т.е. «x» желательно брать в скобки, чтобы модуль учитывал знак минус, степень — это два знака умножить(**), и т.д.). Конечно, можно сделать так, чтобы ввод пользователя преобразовывался в нормальный вид, это аналогично части с заменой «x» на значение(строка 6), но и тут есть свои проблемы.

Читайте также:  Ploom электронная сигарета инструкция как чистить

Теперь заключительная часть кода.

Вот такой получился код:

Итоги

В заключение можно сказать, что получилась простая программа, которая справляется со своими функциями, Ба-Дум-Тсс. Конечно, здесь есть свои проблемы(в основном — модуль eval), но главная задача статьи — понять, как компьютер строит графики.

Источник

Рисование графиков. Python. Tkinter

Это моя первая статья и я хотел бы рассказать о том как написать простейшую программу по рисованию графиков функций.
Статья ориентирована на новичков!
Начнем с того, что наша функция будет иметь вид:
y = c(x)
Где c(x) — это выражение от одной переменной «x».
Сразу считаем её.

Считать значение функции мы будем функцией eval().
Подключим нужные нам библиотеки.

Теперь надо нарисовать оси координат.

Для пересчета значений функции в разных точках я брал 16000 точек на оси X.
Для каждой из них мы считаем значение «y».
Нарисуем овалы с координатами (x, y, x + 1, y + 1).
Овалы, как вы уже, наверное, поняли, — это просто точки на нашем графике.
Перебираем эти точки.

Итак, мы уже умеем выводить оси координат и график функции на отрезке от -500 до 500.

Но если мы введем функцию, которая не определена в какой — нибудь из проверяемых точек, или она содержит ошибку, то наша программа вылетит с ошибкой, это не есть здорово.
Для того, чтобы исправить это, усовершенствуем наш код.
И разметим наши оси.

Теперь готово.
Получилась примитивная рисовала графиков.


Источник

Matplotlib. Урок 1. Быстрый старт

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

Установка

Варианты установки Matplotlib

Существует два основных варианта установки этой библиотеки: в первом случае вы устанавливаете пакет Anaconda , в состав которого входит большое количество различных инструментов для работы в области машинного обучения и анализа данных (и не только); во втором – установить Matplotlib самостоятельно, используя менеджер пакетов. Про установку Anaconda вы можете прочитать в статье Python. Урок 1. Установка .

Установка Matplotlib через менеджер pip

Второй вариант – это воспользоваться менеджером pip и установить Matplotlib самостоятельно, для этого введите в командной строке вашей операционной системы следующие команды:

Первая из них обновит ваш pip , вторая установит matplotlib со всеми необходимыми зависимостями.

Проверка установки

Для проверки того, что все у вас установилось правильно, запустите интерпретатор Python и введите в нем следующее:

После этого можете проверить версию библиотеки (она скорее всего будет отличаться от приведенной ниже):

Быстрый старт

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

Если вы работаете в Jupyter Notebook для того, чтобы получать графики рядом с ячейками с кодом необходимо выполнить специальную magic команду после того, как импортируете matplotlib ::

Результат работы выглядеть будет так, как показано на рисунке ниже.

Если вы пишете код в .py файле, а потом запускаете его через вызов интерпретатора Python , то строка %matplotlib inline вам не нужна, используйте только импорт библиотеки.

Пример, аналогичный тому, что представлен на рисунке выше, для отдельного Python файла будет выглядеть так:

В результате получите график в отдельном окне.

Далее мы не будем останавливаться на особенностях использования magic команды, просто запомните, если вы используете Jupyter notebook при работе с Matplotlib вам обязательно нужно включить %matplotlib inline.

Теперь перейдем непосредственно к Matplotlib . Задача урока “Быстрый старт” – это построить разные типы графиков, настроить их внешний вид и освоиться в работе с этим инструментом.

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

Для начал построим простую линейную зависимость, дадим нашему графику название, подпишем оси и отобразим сетку. Код программы:

Читайте также:  Prompt вывести 2 строки

В результате получим следующий график:

Изменим тип линии и ее цвет, для этого в функцию plot() , в качестве третьего параметра передадим строку, сформированную определенным образом, в нашем случае это “r–”, где “r” означает красный цвет, а “–” – тип линии – пунктирная линия. Более подробно о том, как задавать цвет и какие типы линии можно использовать будет рассказано с одной из следующих глав.

Несколько графиков на одном поле

Построим несколько графиков на одном поле, для этого добавим квадратичную зависимость:

В приведенном примере в функцию plot() последовательно передаются два массива для построения первого графика и два массива для построения второго, при этом, как вы можете заметить, для обоих графиков массив значений независимой переменной x один и то же.

Несколько разделенных полей с графиками

Третья, довольно часто встречающаяся задача – это отобразить два или более различных поля, на которых будет отображено по одному или более графику.

Построим уже известные нам две зависимость на разных полях.

Здесь мы воспользовались новыми функциями:

figure() – функция для задания глобальных параметров отображения графиков. В нее, в качестве аргумента, мы передаем кортеж, определяющий размер общего поля.

subplot() – функция для задания местоположения поля с графиком. Существует несколько способов задания областей для вывода через функцию subplot() мы воспользовались следующим: первый аргумент – количество строк, второй – столбцов в формируемом поле, третий – индекс (номер поля, считаем сверху вниз, слева направо).

Остальные функции уже вам знакомы, дополнительно мы использовали параметр fontsize для функций xlabel() и ylabel() , для задания размера шрифта.

Построение диаграммы для категориальных данных

До этого мы строили графики по численным данным, т.е. зависимая и независимая переменные имели числовой тип. На практике довольно часто приходится работать с данными нечисловой природы – имена людей, название фруктов, и т.п.

Построим диаграмму на которой будет отображаться количество фруктов в магазине:

Для вывода диаграммы мы использовали функцию bar() .

К этому моменту, если вы самостоятельно попробовали запустить приведенные выше примеры, у вас уже должно сформировать некоторое понимание того, как осуществляется работа с этой библиотекой.

Основные элементы графика

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

Корневым элементом при построения графиков в системе Matplotlib является Фигура ( Figure ). Все, что нарисовано на рисунке выше является элементами фигуры. Рассмотрим ее составляющие более подробно.

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

Вторым, после непосредственно самого графика, по важности элементом фигуры являются оси. Для каждой оси можно задать метку (подпись), основные ( major ) и дополнительные ( minor ) тики, их подписи, размер и толщину, также можно задать диапазоны по каждой из осей.

Сетка и легенда

Следующими элементами фигуры, которые значительно повышают информативность графика являются сетка и легенда. Сетка также может быть основной ( major ) и дополнительной ( minor ). Каждому типу сетки можно задавать цвет, толщину линии и тип. Для отображения сетки и легенды используются соответствующие команды.

Ниже представлен код, с помощью которого была построена фигура, изображенная на рисунке:

Если в данный момент вам многое кажется непонятным – не переживайте, далее мы разберем подробно особенности настройки и использования всех элементов представленных на поле с графиками.

P.S.

Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта . Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

Источник