NumPy Matplotlib

Matplotlib — это библиотека для построения графиков для Python. Она может использоваться с NumPy, предоставляя эффективную альтернативу MatLab с открытым исходным кодом. Она также может использоваться с GUI-инструментариями, такими как PyQt и wxPython.

Установка с помощью pip3:

pip3 install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

Системы Linux также могут использовать менеджер пакетов Linux для установки:

  • Debian / Ubuntu:

    sudo apt-get install python-matplotlib
  • Fedora / Redhat:

    sudo yum install python-matplotlib

После установки вы можете использоватьpython -m pip listкоманду, чтобы проверить, установлен ли модуль matplotlib.

$ pip3 list | grep matplotlib
matplotlib        3.3.0  

Пример

Пример

import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Демонстрация Matplotlib") plt.xlabel("подпись оси x") plt.ylabel("подпись оси y") plt.plot(x,y) plt.show()

В приведённом выше примере функция np.arange() создаёт значения на оси x. Соответствующие значения на оси y хранятся в другом объекте массива, y. Эти значения отображаются с помощью функции plot() подмодуля pyplot пакета matplotlib.

График отображается с помощью функции show().

Отображение китайского языка на графиках

Matplotlib по умолчанию не поддерживает китайский язык. Мы можем использовать следующие простые методы, чтобы решить эту проблему.

Здесь мы используем Source Han Sans — шрифт с открытым исходным кодом, выпущенный Adobe и Google.

Официальный сайт:https://source.typekit.com/source-han-serif/cn/

Адрес GitHub:https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese

После открытия ссылки просто выберите один из них:

Вы также можете скачать с облачного диска:https://pan.baidu.com/s/10-w1JbXZSnx3Tm6uGpPGOw, код извлечения:yxqu。

Вы можете скачать шрифт OTF, например SourceHanSansSC-Bold.otf, и поместить этот файл в каталог текущего исполняемого файла с кодом:

Поместите файл SourceHanSansSC-Bold.otf в каталог текущего исполняемого файла с кодом:

Пример

import numpy as np from matplotlib import pyplot as plt import matplotlib # fname — это путь к скачанной вами библиотеке шрифтов, обратите внимание на путь к шрифту SourceHanSansSC-Bold.otf zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf") x = np.arange(1,11) y = 2 * x + 5 plt.title("Пример руководства — Тест", fontproperties=zhfont1) # fontproperties задаёт отображение китайского текста, fontsize задаёт размер шрифта plt.xlabel("ось X", fontproperties=zhfont1) plt.ylabel("ось Y", fontproperties=zhfont1) plt.plot(x,y) plt.show()

При выполнении получается следующий рисунок:

Кроме того, мы также можем использовать системные шрифты:

from matplotlib import pyplot as plt
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

for i in a:
    print(i)

Выведите все зарегистрированные имена в ttflist вашего font_manager, найдите китайский шрифт, например STFangsong (Fangsong), затем добавьте следующий код:

plt.rcParams['font.family']=['STFangsong']

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

Символ Описание
'-' Стиль сплошной линии
'--' Стиль штриховой линии
'-.' Стиль штрихпунктирной линии
':' Стиль пунктирной линии
'.' Точечный маркер
',' Пиксельный маркер
'o' Круговой маркер
'v' Маркер в виде перевёрнутого треугольника
'^' Маркер в виде треугольника, направленного вверх
'<' Маркер в виде треугольника, направленного влево
'>' Маркер в виде треугольника, направленного вправо
'1' Маркер в виде стрелки, направленной вниз
'2' Маркер стрелки вверх
'3' Маркер стрелки влево
'4' Маркер стрелки вправо
's' Квадратный маркер
'p' Пятиугольный маркер
'*' Маркер-звезда
'h' Маркер-шестиугольник 1
'H' Маркер-шестиугольник 2
'+' Маркер-плюс
'x' Маркер X
'D' Ромбовидный маркер
'd' Тонкий ромбовидный маркер
'|' Маркер вертикальной линии
'_' Маркер горизонтальной линии

Ниже приведены сокращения цветов:

Символ Цвет
'b' Синий
'g' Зелёный
'r' Красный
'c' Циан
'm' Magenta
'y' Жёлтый
'k' Чёрный
'w' Белый

Чтобы отобразить круги для представления точек вместо линий в примере выше, используйте 'ob' в качестве строки формата в функции plot().

Пример

import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Демонстрация Matplotlib") plt.xlabel("подпись оси x") plt.ylabel("подпись оси y") plt.plot(x,y,"ob") plt.show()

При выполнении получается следующий рисунок:

Построение синусоиды

В следующем примере используется matplotlib для создания графика синусоиды.

Пример

import numpy as np import matplotlib.pyplot as plt # Вычислить координаты x и y для точек на синусоиде x = np.arange(0, 3 * np.pi, 0.1) y = np.sin(x) plt.title("форма синусоиды") # Использовать matplotlib для построения точек plt.plot(x, y) plt.show()

При выполнении получается следующий рисунок:

subplot()

Функция subplot() позволяет строить разные графики на одной фигуре.

В следующем примере отображаются значения синуса и косинуса:

Пример

import numpy as np import matplotlib.pyplot as plt # Вычислите координаты x и y для точек на кривых синуса и косинуса x = np.arange(0, 3 * np.pi, 0.1) y_sin = np.sin(x) y_cos = np.cos(x) # Настройте сетку subplot, высота 2, ширина 1 # Активируйте первый subplot plt.subplot(2, 1, 1) # Постройте первый график plt.plot(x, y_sin) plt.title('Синус') # Активируйте второй subplot и постройте второй график plt.subplot(2, 1, 2) plt.plot(x, y_cos) plt.title('Косинус') # Отобразите графики plt.show()

При выполнении получается следующий рисунок:

bar()

Подмодуль pyplot предоставляет функцию bar() для создания столбчатых диаграмм.

Следующий пример строит столбчатые диаграммы для двух наборов массивов x и y.

Пример

from matplotlib import pyplot as plt x = [5,8,10] y = [12,16,6] x2 = [6,9,11] y2 = [6,15,7] plt.bar(x, y, align = 'center') plt.bar(x2, y2, color = 'g', align = 'center') plt.title('Столбчатая диаграмма') plt.ylabel('Ось Y') plt.xlabel('Ось X') plt.show()

При выполнении получается следующий рисунок:

numpy.histogram()

Функция numpy.histogram() представляет собой графическое представление частотного распределения данных. Прямоугольники с одинаковыми горизонтальными размерами соответствуют интервалам классов, называемым bins, а переменная высота соответствует частоте.

Функция numpy.histogram() принимает входной массив и bins в качестве двух параметров. Последовательные элементы в массиве bins используются как границы каждого bin.

Пример

import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) np.histogram(a,bins = [0,20,40,60,80,100]) hist,bins = np.histogram(a,bins = [0,20,40,60,80,100]) print (hist) print (bins)

Результат вывода:

[3 4 5 2 1]
[  0  20  40  60  80 100]

plt()

Matplotlib может преобразовать числовое представление гистограммы в график. Функция plt() подмодуля pyplot принимает массив, содержащий данные, и массив bins в качестве параметров и преобразует его в гистограмму.

Пример

from matplotlib import pyplot as plt import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) plt.hist(a, bins = [0,20,40,60,80,100]) plt.title("histogram") plt.show()

При выполнении получается следующий рисунок:

Больше справочного материала по Matplotlib:

Другие расширения