Использование библиотеки Matplotlib. Как рисовать графики вида y = f(x) | jenyay.net

Использование библиотеки Matplotlib. Как рисовать графики вида y = f(x)

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

Следующий пример строит график функции f(x) = sin(x) / x:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import math

# !!! Импортируем один из пакетов Matplotlib
import matplotlib.pyplot as plt
import numpy as np


# Будем рисовать график этой функции
def func(x):
    """
    sinc(x)
    """

    return math.sin(x) / x if x != 0 else 1.0


if __name__ == '__main__':
    # Интервал изменения переменной по оси X
    xmin = -20.0
    xmax = 20.0

    # Количество отсчетов на заданном интервале
    count = 200

    # !!! Создадим список координат по оси X на отрезке [-xmin; xmax], включая концы
    xlist = np.linspace(xmin, xmax, count)

    # Вычислим значение функции в заданных точках
    ylist = [func(x) for x in xlist]

    # !!! Нарисуем одномерный график
    plt.plot(xlist, ylist)

    # !!! Покажем окно с нарисованным графиком
    plt.show()

Если в качестве отсчетов по оси X используется последовательность 0, 1, 2, ..., len(ylist) - 1, то первый параметр можно опустить. Следующий пример это демонстрирует

График выглядит точно также с той лишь разницей, что координаты X отсчитываются от 0, а расстояние между точками считается равным 1.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import math

# !!! Импортируем один из пакетов Matplotlib
import matplotlib.pyplot as plt
import numpy as np


# Будем рисовать график этой функции
def func(x):
    """
    sinc(x)
    """

    return math.sin(x) / x if x != 0 else 1.0


if __name__ == '__main__':
    # Интервал изменения переменной по оси X
    xmin = -20.0
    xmax = 20.0

    # Количество отсчетов на заданном интервале
    count = 200

    # !!! Создадим список координат по оси X на отрезке [-xmin; xmax], включая концы
    xlist = np.linspace(xmin, xmax, count)

    # Вычислим значение функции в заданных точках
    ylist = [func(x) for x in xlist]

    # !!! Нарисуем одномерный график
    plt.plot(ylist)

    # !!! Покажем окно с нарисованным графиком
    plt.show()

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import math

# !!! Импортируем один из пакетов Matplotlib
import matplotlib.pyplot as plt
import numpy as np


# Будем рисовать график этой функции
def func(x):
    """
    sinc(x)
    """

    return math.sin(x) / x if x != 0 else 1.0


if __name__ == '__main__':
    # Интервал изменения переменной по оси X
    xmin = -20.0
    xmax = 20.0

    # Количество отсчетов на заданном интервале
    count = 200

    # !!! Создадим список координат по оси X на отрезке [-xmin; xmax], включая концы
    xlist = np.linspace(xmin, xmax, count)

    # Вычислим значение функции в заданных точках
    ylist1 = [func (x) for x in xlist]
    ylist2 = [func (x * 0.2) for x in xlist]

    # !!! Нарисуем одномерные графики
    plt.plot (xlist, ylist1)
    plt.plot (xlist, ylist2)

    # !!! Покажем окно с нарисованным графиком
    plt.show()

Результат работы этого скрипта выглядит следующим образом:

Остальные примеры

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
4.5 stars

Рейтинг 4.3/5. Всего 87 голос(а, ов)



 20.11.2011 - 22:52

shrieking smileyshrieking smileyshrieking smileyshrieking smileyshrieking smiley

Light 13.11.2014 - 09:00

Небольшая ошибка

В начале статьи написано
Следующий пример строит график функции f(x) = x / sin(x):
Однако, в коде наоборот
return math.sin (x) / x

В остальном - отличная статья, помогает освоить язык, спасибо!

Jenyay 13.11.2014 - 10:19

Спасибо, поправил.

Павел 16.05.2019 - 06:05

А как программно сохранить нарисованный график в файл jpg, png или tiff?

Alex 16.07.2019 - 06:41

Павел

Можно попробовать сохранить нарисованные графики с помощью savefig('C:\\Users\\User_name\\1.png') перед командой show().

 29.04.2020 - 01:35

почему-то ругается на строку : "xlist = mlab.frange (xmin, xmax, dx)" и говорит, что в mlab'е нет frange
Кто подскажет?

ZeD 25.09.2020 - 15:46

 "xlist = mlab.frange (xmin, xmax, dx)"  строка выдаёт ошибку.

Исправить:
import numpy

xlist = numpy.arange (xmin, xmax, dx)

так правильней...

Slain 13.10.2020 - 23:07

все можно сделать проще

Я скажу так статья может быть короче в 999 раз вот код функции y = sin(x)/x

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-20,20.01,0.01)
plt.plot(x, np.sin(x)/x)
plt.show()

Jenyay 17.10.2021 - 12:03

Обновил статью, заменив устаревшие вызовы из Matplotlib

 10.10.2024 - 00:04

import numpy as np
import matplotlib.pyplot as plt

# Функция
def f(x):
    return 4 * x - x**2

# X мәндері
x = np.linspace(-1, 5, 100)
y = f(x)

# Графикті салу
plt.plot(x, y, label='y = 4x - x^2', color='blue')
plt.axhline(0, color='black', lw=0.5, ls='--')
plt.axvline(0, color='black', lw=0.5, ls='--')
plt.scatter([0, 4], [0, 0], color='red')  # қиылысу нүктелері
plt.scatter(2, 4, color='green')  # максимум нүктесі
plt.text(0, 0, '(0, 0)', fontsize=10, verticalalignment='bottom')
plt.text(4, 0, '(4, 0)', fontsize=10, verticalalignment='bottom')
plt.text(2, 4, '(2, 4)', fontsize=10, verticalalignment='bottom')

# Жиынтық параметрлері
plt.title('График y = 4x - x^2')
plt.xlabel('x')
plt.ylabel('y')
plt.xlim(-1, 5)
plt.ylim(-1, 5)
plt.grid()
plt.legend()
plt.show()

Jenyay 10.10.2024 - 09:34

К чему этот код?


Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 505