English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NumPy и Matplotlib

pip3 устанавливается:

pip 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 demo") 
 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, 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

Открыв ссылку, выберите один из них:

Вы можете загрузить 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 (Фан Сун), и добавьте следующий код:

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

Вместо линейной диаграммы можно отобразить отдельные значения, добавив строку формата к функции plot(). Można użyć następujących znaków formatujących.

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

Вот сокращения цветов:

символцвет
'b'синий
'g'зеленый
'r'красный
'c'голубой
'm'розовый
'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 demo") 
 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='центр') 
 plt.bar(x2, y2, color='зелёный', align='центр') 
 plt.title('Гистограмма') 
 plt.ylabel('Ось Y') 
 plt.xlabel('Ось X') 
 plt.show()

Результат выполнения показан на рисунке ниже:

numpy.histogram()

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

Функция numpy.histogram() принимает в качестве параметров вводимые массивы и bin. Конsecutive элементы массива bin используются в качестве границ каждого 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 преобразует массив данных и массив bin в гистограмму.

 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("гистограмма") 
 plt.show()

Результат выполнения показан на рисунке ниже:

Более подробная информация о Matplotlib:

Руководство пользователя Частые вопросы и ответы Снимок экрана