Учебники

Matplotlib — Краткое руководство

Matplotlib — Введение

Matplotlib — один из самых популярных пакетов Python, используемых для визуализации данных. Это кроссплатформенная библиотека для создания 2D графиков из данных в массивах. Matplotlib написан на Python и использует NumPy, числовое математическое расширение Python. Он предоставляет объектно-ориентированный API, который помогает встраивать графики в приложения, используя наборы инструментов Python GUI, такие как PyQt, WxPythonotTkinter. Он также может использоваться в оболочках Python и IPython, ноутбуках Jupyter и серверах веб-приложений.

Matplotlib имеет процедурный интерфейс под названием Pylab, который похож на MATLAB, проприетарный язык программирования, разработанный MathWorks. Matplotlib вместе с NumPy можно рассматривать как эквивалент MATLAB с открытым исходным кодом.

Matplotlib был первоначально написан Джоном Д. Хантером в 2003 году. Текущая стабильная версия 2.2.0 выпущена в январе 2018 года.

Matplotlib — Настройка среды

Matplotlib и его пакеты зависимостей доступны в виде пакетов wheel в стандартных репозиториях пакетов Python и могут быть установлены в системах Windows, Linux, а также MacOS с помощью диспетчера пакетов pip.

pip3 install matplotlib

Incase версии Python 2.7 или 3.4 установлены не для всех пользователей, необходимо установить распространяемые пакеты Microsoft Visual C ++ 2008 (64-разрядная или 32-разрядная версия для Python 2.7) или Microsoft Visual C ++ 2010 (64-разрядная или 32-разрядная версия для Python 3.4).

Если вы используете Python 2.7 на Mac, выполните следующую команду —

xcode-select install

После выполнения вышеприведенной команды подпроцесс 32 — зависимость может быть скомпилирован.

В чрезвычайно старых версиях Linux и Python 2.7 может потребоваться установить основную версию подпроцесса32.

Matplotlib требует большого количества зависимостей —

  • Python (> = 2,7 или> = 3,4)
  • NumPy
  • Setuptools
  • dateutil
  • Pyparsing
  • Libpng
  • pytz
  • FreeType
  • велосипедист
  • шесть

При желании вы также можете установить несколько пакетов, чтобы активировать лучшие инструменты интерфейса пользователя.

  • тк
  • PyQt4
  • PyQt5
  • PyGTK
  • WxPython
  • pycairo
  • Торнадо

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

  • _mpeg / avconv
  • ImageMagick
  • Подушка (> = 2.0)
  • LaTeX и GhostScript (для рендеринга текста с помощью LaTeX).
  • LaTeX и GhostScript (для рендеринга текста с помощью LaTeX).

Матплотлиб — Анаконда дистрибуция

Anaconda — это бесплатный и открытый исходный код языков программирования Python и R для крупномасштабной обработки данных, прогнозной аналитики и научных вычислений. Распределение делает управление пакетами и развертывание простым и легким. Matplotlib и множество других полезных (data) научных инструментов являются частью дистрибутива. Версии пакетов управляются системой управления пакетами Conda. Преимущество Anaconda заключается в том, что у вас есть доступ к более чем 720 пакетам, которые можно легко установить с помощью Andaonda Conda, менеджера пакетов, зависимостей и среды.

Дистрибутив Anaconda доступен для установки по адресу https://www.anaconda.com/download/. Для установки в Windows доступны 32 и 64-битные бинарные файлы —

https://repo.continuum.io/archive/Anaconda3-5.1.0-Windows-x86.exe

https://repo.continuum.io/archive/Anaconda3-5.1.0-Windows-x86_64.exe

Установка является довольно простым процессом на основе мастера. Вы можете выбрать между добавлением Anaconda в переменную PATH и регистрацией Anaconda в качестве Python по умолчанию.

Для установки в Linux загрузите установщики для 32-разрядных и 64-разрядных установщиков со страницы загрузок —

https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86.sh

https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh

Теперь запустите следующую команду из терминала Linux —

$ bash Anaconda3-5.0.1-Linux-x86_64.sh

Canopy и ActiveState — наиболее востребованные решения для Windows, macOS и распространенных платформ Linux. Пользователи Windows могут найти опцию в WinPython.

Matplotlib — ноутбук Юпитер

Jupyter — это аббревиатура, означающая Julia, Python и R. Эти языки программирования были первыми целевыми языками приложения Jupyter, но в настоящее время технология ноутбука также поддерживает многие другие языки.

В 2001 году Фернандо Перес начал разработку Ipython. IPython — это командная оболочка для интерактивных вычислений на нескольких языках программирования, изначально разработанная для Python.

Рассмотрим следующие возможности, предоставляемые IPython —

  • Интерактивные оболочки (на основе терминала и Qt).

  • Записная книжка на основе браузера с поддержкой кода, текста, математических выражений, встроенных графиков и других средств массовой информации.

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

  • Гибкие, встраиваемые интерпретаторы для загрузки в собственные проекты.

Интерактивные оболочки (на основе терминала и Qt).

Записная книжка на основе браузера с поддержкой кода, текста, математических выражений, встроенных графиков и других средств массовой информации.

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

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

В 2014 году Фернандо Перес анонсировал дополнительный проект от IPython под названием Project Jupyter. IPython будет продолжать существовать как оболочка Python и ядро ​​для Jupyter, в то время как блокнот и другие не зависящие от языка части IPython будут перемещаться под именем Jupyter. Jupyter добавил поддержку для Julia, R, Haskell и Ruby.

Чтобы запустить ноутбук Jupyter, откройте навигатор Anaconda (графический интерфейс пользователя на рабочем столе, включенный в Anaconda, который позволяет запускать приложения и легко управлять пакетами, средами и каналами Conda без необходимости использования команд командной строки).

Анаконда Навигатор

Навигатор отображает установленные компоненты в дистрибутиве.

Анаконда Навигатор Корень

Запустите Jupyter Notebook из навигатора —

Блокнот Jupyter

Вы увидите открытие приложения в веб-браузере по следующему адресу — http: // localhost: 8888.

Командная строка

Вы, вероятно, хотите начать с создания нового ноутбука. Вы можете легко сделать это, нажав на кнопку «Создать» на вкладке «Файлы». Вы видите, что у вас есть возможность сделать обычный текстовый файл, папку и терминал. Наконец, вы также увидите возможность сделать ноутбук на Python 3.

Блокнот Python 3

Matplotlib — Pyplot API

Новый блокнот без названия с расширением .ipynb (расшифровывается как блокнот IPython) отображается на новой вкладке браузера.

Pyplot API

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

Типы участков

Sr.No Описание функции
1

Бар

Сделайте барный сюжет.

2

Барх

Сделайте горизонтальный линейный график.

3

Boxplot

Сделать коробку и усы сюжет.

4

тс

Постройте гистограмму.

5

hist2d

Создайте 2D гистограмму.

6

пирог

Постройте круговую диаграмму.

7

участок

Нанесите линии и / или маркеры на оси.

8

полярный

Сделай полярный сюжет ..

9

рассеивать

Составьте точечный график x против y.

10

Stackplot

Рисует сложенную область участка.

11

ножка

Создайте сюжетный ствол.

12

шаг

Сделайте пошаговый сюжет.

13

Колчан

Постройте двумерное поле стрелок.

Бар

Сделайте барный сюжет.

Барх

Сделайте горизонтальный линейный график.

Boxplot

Сделать коробку и усы сюжет.

тс

Постройте гистограмму.

hist2d

Создайте 2D гистограмму.

пирог

Постройте круговую диаграмму.

участок

Нанесите линии и / или маркеры на оси.

полярный

Сделай полярный сюжет ..

рассеивать

Составьте точечный график x против y.

Stackplot

Рисует сложенную область участка.

ножка

Создайте сюжетный ствол.

шаг

Сделайте пошаговый сюжет.

Колчан

Постройте двумерное поле стрелок.

Функции изображения

Sr.No Описание функции
1

Imread

Прочитать изображение из файла в массив.

2

Imsave

Сохраните массив как в файле изображения.

3

Imshow

Покажите изображение на осях.

Imread

Прочитать изображение из файла в массив.

Imsave

Сохраните массив как в файле изображения.

Imshow

Покажите изображение на осях.

Функции оси

Sr.No Описание функции
1

Топоры

Добавьте оси к фигуре.

2

Текст

Добавьте текст к осям.

3

заглавие

Установить заголовок текущих осей.

4

Xlabel

Установите метку оси x текущей оси.

5

Xlim

Получить или установить пределы х текущих осей.

6

Xscale

,

7

Xticks

Получить или установить x-пределы текущего местоположения галочек и меток.

8

Ylabel

Установите метку оси Y текущей оси.

9

Ylim

Получить или установить Y-пределы текущих осей.

10

Yscale

Установите масштаб оси Y.

11

Yticks

Получите или установите y-пределы текущего местоположения галочки и меток.

Топоры

Добавьте оси к фигуре.

Текст

Добавьте текст к осям.

заглавие

Установить заголовок текущих осей.

Xlabel

Установите метку оси x текущей оси.

Xlim

Получить или установить пределы х текущих осей.

Xscale

,

Xticks

Получить или установить x-пределы текущего местоположения галочек и меток.

Ylabel

Установите метку оси Y текущей оси.

Ylim

Получить или установить Y-пределы текущих осей.

Yscale

Установите масштаб оси Y.

Yticks

Получите или установите y-пределы текущего местоположения галочки и меток.

Функции рисунка

Sr.No Описание функции
1

Figtext

Добавьте текст к рисунку.

2

фигура

Создает новую фигуру.

3

Шоу

Покажите фигуру.

4

Savefig

Сохранить текущий рисунок.

5

близко

Закройте окно фигуры.

Figtext

Добавьте текст к рисунку.

фигура

Создает новую фигуру.

Шоу

Покажите фигуру.

Savefig

Сохранить текущий рисунок.

близко

Закройте окно фигуры.

Matplotlib — простой сюжет

В этой главе мы узнаем, как создать простой график с помощью Matplotlib.

Теперь мы покажем простой линейный график угла в радианах относительно его значения синуса в Matplotlib. Начнем с того, что модуль Pyplot из пакета Matplotlib импортируется с псевдонимом plt по договоренности.

import matplotlib.pyplot as plt

Далее нам нужен массив чисел для построения. Различные функции массива определены в библиотеке NumPy, которая импортируется с псевдонимом np.

import numpy as np

Теперь мы получаем ndarray объект углов между 0 и 2π, используя функцию arange () из библиотеки NumPy.

x = np.arange(0, math.pi*2, 0.05)

Объект ndarray служит значениями на оси x графика. Соответствующие значения синусов углов в x, которые будут отображены на оси y, получаются с помощью следующего оператора —

y = np.sin(x)

Значения из двух массивов построены с использованием функции plot ().

plt.plot(x,y)

Вы можете установить название графика и метки для осей x и y.

You can set the plot title, and labels for x and y axes.
plt.xlabel("angle")
plt.ylabel("sine")
plt.title('sine wave')

Окно просмотра графика вызывается функцией show () —

plt.show()

Полная программа выглядит следующим образом —

from matplotlib import pyplot as plt
import numpy as np
import math #needed for definition of pi
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
plt.plot(x,y)
plt.xlabel("angle")
plt.ylabel("sine")
plt.title('sine wave')
plt.show()

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

Простой сюжет

Теперь используйте ноутбук Jupyter с Matplotlib.

Запустите блокнот Jupyter из навигатора Anaconda или из командной строки, как описано ранее. В ячейке ввода введите операторы импорта для Pyplot и NumPy —

from matplotlib import pyplot as plt
import numpy as np

Чтобы отобразить результаты печати внутри самой записной книжки (а не в отдельной программе просмотра), введите следующее волшебное утверждение —

%matplotlib inline

Получите x как ndarray объект, содержащий углы в радианах от 0 до 2π, а y как синусоидальную величину каждого угла —

import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)

Установите метки для осей X и Y, а также название графика —

plt.xlabel("angle")
plt.ylabel("sine")
plt.title('sine wave')

Наконец, выполните функцию plot () для генерации синусоидального изображения в записной книжке (нет необходимости запускать функцию show ()) —

plt.plot(x,y)

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

Последняя строка кода

Matplotlib — модуль PyLab

PyLab — это процедурный интерфейс к библиотеке объектно-ориентированных графиков Matplotlib. Matplotlib — это целый пакет; matplotlib.pyplot — это модуль в Matplotlib; PyLab — это модуль, который устанавливается вместе с Matplotlib.

PyLab — это удобный модуль, который массово импортирует matplotlib.pyplot (для построения графиков) и NumPy (для математики и работы с массивами) в одном пространстве имен. Хотя во многих примерах используется PyLab, он больше не рекомендуется.

Основы печати

Построение кривых выполняется с помощью команды plot. Требуется пара массивов одинаковой длины (или последовательности) —

from numpy import *
from pylab import *
x = linspace(-3, 3, 30)
y = x**2
plot(x, y)
show()

Выше строка кода генерирует следующий вывод —

Основы печати

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

символы -, -, -.,,. ,,, о, ^, v, <,>, с, +, х, D, д, 1, 2, 3, 4, ч, Н, р, ​​| , _
цвета b, g, r, c, m, y, k, w

Теперь рассмотрим выполнение следующего кода —

from pylab import *
x = linspace(-3, 3, 30)
y = x**2
plot(x, y, 'r.')
show()

Он отображает красные точки, как показано ниже —

Дополнительный строковый аргумент

Участки могут быть наложены. Просто используйте несколько команд заговора. Используйте clf (), чтобы очистить график.

from pylab import *
plot(x, sin(x))
plot(x, cos(x), 'r-')
plot(x, -sin(x), 'g--')
show()

Выше строка кода генерирует следующий вывод —

Команды с несколькими участками

Matplotlib — объектно-ориентированный интерфейс

Несмотря на то, что с помощью модуля matplotlib.pyplot легко быстро создавать графики, рекомендуется использовать объектно-ориентированный подход, поскольку он обеспечивает больший контроль и настройку ваших графиков. Большинство функций также доступны в классе matplotlib.axes.Axes .

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

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

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

fig = plt.figure()

Теперь добавьте оси к фигуре. Метод add_axes () требует объекта списка из 4 элементов, соответствующих левому, нижнему, ширине и высоте фигуры. Каждое число должно быть от 0 до 1 —

ax=fig.add_axes([0,0,1,1])

Установить метки для осей X и Y, а также заголовок —

ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')

Вызвать метод plot () объекта оси.

ax.plot(x,y)

Если вы используете ноутбук Jupyter, должна быть выпущена встроенная директива% matplotlib; функция otherwistshow () модуля pyplot отображает график.

Попробуйте выполнить следующий код —

from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.plot(x,y)
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
plt.show()

Выход

Выше строка кода генерирует следующий вывод —

Метод добавления осей

Тот же код при запуске в блокноте Jupyter показывает вывод, как показано ниже —

Выход ноутбука Jupyter

Matplotlib — класс рисунков

Модуль matplotlib.figure содержит класс Figure. Это контейнер верхнего уровня для всех элементов графика. Создание объекта Figure осуществляется путем вызова функции figure () из модуля pyplot —

fig = plt.figure()

В следующей таблице приведены дополнительные параметры —

Figsize (ширина, высота) кортеж в дюймах
точек на дюйм Точек на дюймы
Facecolor Рисунок патча лицевого цвета
Edgecolor Рисунок края пятна цвета
Ширина линии Ширина линии края

Matplotlib — класс топоров

Объект оси — это область изображения с пространством данных. Данная фигура может содержать много осей, но данный объект осей может быть только на одной фигуре. Оси содержат два (или три в случае 3D) объекта Оси. Класс Axes и его функции-члены являются основной точкой входа в работу с интерфейсом OO.

Объект Axes добавляется к рисунку путем вызова метода add_axes (). Он возвращает объект осей и добавляет оси в позиции rect [left, bottom, width, height], где все величины выражены в долях ширины и высоты фигуры.

параметр

Ниже приведен параметр для класса Axes —

  • rect — последовательность из четырех величин [влево, низ, ширина, высота].

rect — последовательность из четырех величин [влево, низ, ширина, высота].

ax=fig.add_axes([0,0,1,1])

Следующие функции-члены класса осей добавляют разные элементы в plot —

легенда

Метод legend () класса осей добавляет легенду на график. Требуется три параметра —

ax.legend(handles, labels, loc)

Где метки представляют собой последовательность строк и обрабатывают последовательность экземпляров Line2D или Patch. loc может быть строкой или целым числом, указывающим местоположение легенды.

Строка местоположения Код местоположения
Лучший 0
верхний правый 1
верхний левый 2
нижний левый 3
Нижний правый 4
Правильно 5
Центр слева 6
Правый центр 7
нижний центр 8
верхний центр 9
Центр 10

axes.plot ()

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

Цветовые коды

символ цвет
«Б» синий
‘г’ зеленый
‘р’ красный
«Б» синий
«С» Cyan
«М» фуксин
«У» желтый
«К» черный
«Б» синий
«Ш» белый

Коды маркеров

символ Описание
» Маркер точки
«О» Маркер круга
‘Икс’ Маркер X
‘D’ Алмазный маркер
‘ЧАС’ Маркер шестиугольника
‘S’ Квадратный маркер
‘+’ Плюс маркер

Стили линий

символ Описание
‘-‘ Сплошная линия
‘-‘ Пунктир
‘-‘. Пунктирная линия
‘:’ Пунктирная линия
‘ЧАС’ Маркер шестиугольника

В следующем примере показаны расходы на рекламу и продажи телевизоров и смартфонов в виде линейных графиков. Линия, представляющая телевизор, представляет собой сплошную линию с желтым цветом и квадратными маркерами, а линия смартфона — пунктирная линия с зеленым цветом и круговым маркером.

import matplotlib.pyplot as plt
y = [1, 4, 9, 16, 25,36,49, 64]
x1 = [1, 16, 30, 42,55, 68, 77,88]
x2 = [1,6,12,18,28, 40, 52, 65]
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
l1 = ax.plot(x1,y,'ys-') # solid line with yellow colour and square marker
l2 = ax.plot(x2,y,'go--') # dash line with green colour and circle marker
ax.legend(labels = ('tv', 'Smartphone'), loc = 'lower right') # legend placed at lower right
ax.set_title("Advertisement effect on sales")
ax.set_xlabel('medium')
ax.set_ylabel('sales')
plt.show()

Когда приведенная выше строка кода выполняется, она создает следующий график —

Рекламный эффект

Матплотлиб — Мультиплоты

В этой главе мы научимся создавать несколько сюжетов на одном холсте.

Функция subplot () возвращает объект оси в заданной позиции сетки. Сигнатура Call этой функции —

plt.subplot(subplot(nrows, ncols, index)

На текущем рисунке функция создает и возвращает объект Axes с указателем позиции сетки nrows по ncolsaxes. Индексы изменяются от 1 до nrows * ncols с приращением в главном порядке строк. Если значение параметраrow, ncols и index меньше 10, индексы также могут быть заданы как одно объединенное, threedigitnumber.

Например, как вспомогательный участок (2, 3, 3), так и вспомогательный участок (233) создают оси в верхнем правом углу текущей фигуры, занимая половину высоты фигуры и треть ширины фигуры.

Создание подзаголовка приведет к удалению любого ранее существующего подплота, который перекрывается с ним за пределами общей границы.

import matplotlib.pyplot as plt
# plot a line, implicitly creating a subplot(111)
plt.plot([1,2,3])
# now create a subplot which represents the top plot of a grid with 2 rows and 1 column.
#Since this subplot will overlap the first, the plot (and its axes) previously 
created, will be removed
plt.subplot(211)
plt.plot(range(12))
plt.subplot(212, facecolor='y') # creates 2nd subplot with yellow background
plt.plot(range(12))

Выше строка кода генерирует следующий вывод —

Multiplots

Функция add_subplot () класса figure не будет перезаписывать существующий график —

import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot([1,2,3])
ax2 = fig.add_subplot(221, facecolor='y')
ax2.plot([1,2,3])

Когда приведенная выше строка кода выполняется, она генерирует следующий вывод —

Добавить спотовую функцию

Вы можете добавить график вставки на том же рисунке, добавив другой объект осей на том же рисунке.

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig=plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
axes2 = fig.add_axes([0.55, 0.55, 0.3, 0.3]) # inset axes
y = np.sin(x)
axes1.plot(x, y, 'b')
axes2.plot(x,np.cos(x),'r')
axes1.set_title('sine')
axes2.set_title("cosine")
plt.show()

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

Вставить участок

Matplotlib — Функция Subplots ()

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

Plt.subplots(nrows, ncols)

Два целочисленных аргумента этой функции задают количество строк и столбцов сетки подзаговоров. Функция возвращает объект фигурки и кортеж, содержащий объекты осей, равные nrows * ncols. Каждый объект оси доступен по его индексу. Здесь мы создаем участок из 2 строк по 2 столбца и отображаем 4 разных графика в каждом из них.

import matplotlib.pyplot as plt
fig,a =  plt.subplots(2,2)
import numpy as np
x = np.arange(1,5)
a[0][0].plot(x,x*x)
a[0][0].set_title('square')
a[0][1].plot(x,np.sqrt(x))
a[0][1].set_title('square root')
a[1][0].plot(x,np.exp(x))
a[1][0].set_title('exp')
a[1][1].plot(x,np.log10(x))
a[1][1].set_title('log')
plt.show()

Выше строка кода генерирует следующий вывод —

Функция сюжетов

Функция Matplotlib — Subplot2grid ()

Эта функция дает больше гибкости при создании объекта осей в определенном месте сетки. Он также позволяет охватывать объект оси по нескольким строкам или столбцам.

Plt.subplot2grid(shape, location, rowspan, colspan)

В следующем примере сетка 3X3 объекта рисунка заполнена объектами осей различных размеров в интервалах строк и столбцов, каждый из которых показывает свой график.

import matplotlib.pyplot as plt
a1 = plt.subplot2grid((3,3),(0,0),colspan = 2)
a2 = plt.subplot2grid((3,3),(0,2), rowspan = 3)
a3 = plt.subplot2grid((3,3),(1,0),rowspan = 2, colspan = 2)
import numpy as np
x = np.arange(1,10)
a2.plot(x, x*x)
a2.set_title('square')
a1.plot(x, np.exp(x))
a1.set_title('exp')
a3.plot(x, np.log(x))
a3.set_title('log')
plt.tight_layout()
plt.show()

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

Функции Subplot2grid

Матплотлиб — Сетки

Функция grid () объекта axes устанавливает или отключает видимость сетки внутри фигуры. Вы также можете отобразить основные / второстепенные (или оба) галочки сетки. Дополнительно свойства color, linestyle и linewidth могут быть установлены в функции grid ().

import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(1,3, figsize = (12,4))
x = np.arange(1,11)
axes[0].plot(x, x**3, 'g',lw=2)
axes[0].grid(True)
axes[0].set_title('default grid')
axes[1].plot(x, np.exp(x), 'r')
axes[1].grid(color='b', ls = '-.', lw = 0.25)
axes[1].set_title('custom grid')
axes[2].plot(x,x)
axes[2].set_title('no grid')
fig.tight_layout()
plt.show()

Сетки

Matplotlib — Оси форматирования

Иногда одна или несколько точек намного больше, чем объем данных. В таком случае масштаб оси должен быть логарифмическим, а не нормальным. Это логарифмическая шкала. В Matplotlib это возможно, установив для свойства xscale или vscale объекта axes значение ‘log’.

Иногда требуется также показать некоторое дополнительное расстояние между номерами осей и меткой оси. Для свойства labelpad любой оси (x, y или обоих) можно установить желаемое значение.

Обе вышеуказанные функции демонстрируются с помощью следующего примера. Подплощадка справа имеет логарифмическую шкалу, а слева — ось x с меткой на большем расстоянии.

import matplotlib.pyplot as plt
import numpy as np
fig, axes = plt.subplots(1, 2, figsize=(10,4))
x = np.arange(1,5)
axes[0].plot( x, np.exp(x))
axes[0].plot(x,x**2)
axes[0].set_title("Normal scale")
axes[1].plot (x, np.exp(x))
axes[1].plot(x, x**2)
axes[1].set_yscale("log")
axes[1].set_title("Logarithmic scale (y)")
axes[0].set_xlabel("x axis")
axes[0].set_ylabel("y axis")
axes[0].xaxis.labelpad = 10
axes[1].set_xlabel("x axis")
axes[1].set_ylabel("y axis")
plt.show()

Оси форматирования

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

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

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.spines['bottom'].set_color('blue')
ax.spines['left'].set_color('red')
ax.spines['left'].set_linewidth(2)
ax.spines['right'].set_color(None)
ax.spines['top'].set_color(None)
ax.plot([1,2,3,4,5])
plt.show()

Оси Колючки

Matplotlib — установка пределов

Matplotlib автоматически достигает минимального и максимального значений переменных, которые будут отображаться вдоль осей x, y (и оси z в случае трехмерного графика). Однако можно установить ограничения явно с помощью функций set_xlim () и set_ylim () .

На следующем графике показаны автомасштабированные пределы осей x и y:

import matplotlib.pyplot as plt
fig = plt.figure()
a1 = fig.add_axes([0,0,1,1])
import numpy as np
x = np.arange(1,10)
a1.plot(x, np.exp(x))
a1.set_title('exp')
plt.show()

Установка пределов

Теперь мы отформатируем пределы по оси х (от 0 до 10) и оси у (от 0 до 10000) —

import matplotlib.pyplot as plt
fig = plt.figure()
a1 = fig.add_axes([0,0,1,1])
import numpy as np
x = np.arange(1,10)
a1.plot(x, np.exp(x),'r')
a1.set_title('exp')
a1.set_ylim(0,10000)
a1.set_xlim(0,10)
plt.show()

Формат Пределы

Matplotlib — Установка меток и меток

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

Функция xticks () и yticks () принимает объект списка в качестве аргумента. Элементы в списке обозначают позиции на соответствующем действии, где будут отображаться галочки.

ax.set_xticks([2,4,6,8,10])

Этот метод помечает точки данных в заданных позициях галочками.

Аналогично, метки, соответствующие галочкам, могут быть установлены функциями set_xlabels () и set_ylabels () соответственно.

ax.set_xlabels([‘two’, four’,’six’, eight’, ten’])

Это будет отображать текстовые метки под маркерами на оси х.

Следующий пример демонстрирует использование галочек и меток.

import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) # main axes
y = np.sin(x)
ax.plot(x, y)
ax.set_xlabel(‘angle’)
ax.set_title('sine')
ax.set_xticks([0,2,4,6])
ax.set_xticklabels(['zero','two','four','six'])
ax.set_yticks([-1,0,1])
plt.show()

Тик и ярлыки

Matplotlib — Двойные Оси

Считается полезным иметь двойные оси x или y на фигуре. Более того, при построении кривых с различными единицами вместе. Matplotlib поддерживает это с помощью функций twinx и twiny.

В следующем примере график имеет двойные оси Y, одна из которых показывает exp (x), а другая — log (x) —

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
a1 = fig.add_axes([0,0,1,1])
x = np.arange(1,11)
a1.plot(x,np.exp(x))
a1.set_ylabel('exp')
a2 = a1.twinx()
a2.plot(x, np.log(x),'ro-')
a2.set_ylabel('log')
fig.legend(labels = ('exp','log'),loc='upper left')
plt.show()

Двойные Оси

Матплотлиб — Барный участок

Гистограмма или гистограмма — это диаграмма или диаграмма, которая представляет категориальные данные с прямоугольными столбцами с высотами или длинами, пропорциональными значениям, которые они представляют. Бары могут быть нанесены вертикально или горизонтально.

Гистограмма показывает сравнения между отдельными категориями. Одна ось диаграммы показывает конкретные категории, которые сравниваются, а другая ось представляет измеренное значение.

Matplotlib API предоставляет функцию bar (), которую можно использовать в стиле MATLAB, а также объектно-ориентированный API. Сигнатура функции bar () для использования с объектом axes выглядит следующим образом:

ax.bar(x, height, width, bottom, align)

Функция создает гистограмму со связанным прямоугольником размера (x-width = 2; x + width = 2; bottom; bottom + height).

Параметры для функции —

Икс последовательность скаляров, представляющих координаты х баров. выровняйте элементы управления, если x — центр полосы (по умолчанию) или левый край.
рост скаляр или последовательность скаляров, представляющих высоту (и) столбцов.
ширина скаляр или массив, необязательно. ширина (с) баров по умолчанию 0,8
низ скаляр или массив, необязательно. координаты y столбцов по умолчанию Нет.
выравнивать {‘center’, ‘edge’}, необязательно, по умолчанию ‘center’

Функция возвращает контейнерный объект Matplotlib со всеми барами.

Ниже приведен простой пример графика бара Matplotlib. Показывает количество студентов, обучающихся на различных курсах, предлагаемых в институте.

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
ax.bar(langs,students)
plt.show()

Matplotlib Bar Plot

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

Мы можем построить несколько гистограмм, играя с толщиной и положением баров. Переменная данных содержит три ряда из четырех значений. Следующий скрипт покажет три гистограммы из четырех баров. Стержни будут иметь толщину 0,25 единиц. Каждая гистограмма будет сдвинута на 0,25 единицы от предыдущей. Объект данных представляет собой мультидикт, содержащий количество студентов, обучающихся в трех филиалах инженерного колледжа за последние четыре года.

import numpy as np
import matplotlib.pyplot as plt
data = [[30, 25, 50, 20],
[40, 23, 51, 17],
[35, 22, 45, 19]]
X = np.arange(4)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(X + 0.00, data[0], color = 'b', width = 0.25)
ax.bar(X + 0.25, data[1], color = 'g', width = 0.25)
ax.bar(X + 0.50, data[2], color = 'r', width = 0.25)

Несколько гистограмм

Столбчатая диаграмма с накоплением объединяет столбцы, которые представляют разные группы друг над другом. Высота полученного столбца показывает объединенный результат групп.

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

import numpy as np
import matplotlib.pyplot as plt
N = 5
menMeans = (20, 35, 30, 35, 27)
womenMeans = (25, 32, 34, 20, 25)
ind = np.arange(N) # the x locations for the groups
width = 0.35
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(ind, menMeans, width, color='r')
ax.bar(ind, womenMeans, width,bottom=menMeans, color='b')
ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.set_xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
ax.set_yticks(np.arange(0, 81, 10))
ax.legend(labels=['Men', 'Women'])
plt.show()

множество

Матплотлиб — Гистограмма

Гистограмма является точным представлением распределения числовых данных. Это оценка распределения вероятностей непрерывной переменной. Это своего рода гистограмма.

Чтобы построить гистограмму, выполните следующие действия.

  • Бин диапазон значений.
  • Разделите весь диапазон значений на ряд интервалов.
  • Посчитайте, сколько значений попадают в каждый интервал.

Контейнеры обычно указываются как последовательные непересекающиеся интервалы переменной.

Функция matplotlib.pyplot.hist () строит гистограмму. Он вычисляет и рисует гистограмму х.

параметры

В следующей таблице перечислены параметры для гистограммы —

Икс массив или последовательность массивов
бункеры целое число или последовательность или ‘auto’, необязательно
необязательные параметры
спектр Нижний и верхний диапазон бункеров.
плотность Если True, первым элементом возвращаемого кортежа будет счет, нормализованный для формирования плотности вероятности.
кумулятивный Если True, то гистограмма вычисляется, где каждый бин дает счетчики в этом бине, а также все бины для меньших значений.
histtype Тип гистограммы для рисования. По умолчанию это «бар»

  • ‘bar’ — это традиционная гистограмма барного типа. Если дано несколько данных, столбцы располагаются рядом.
  • ‘barstacked’ — это гистограмма в виде столбца, в которой несколько данных расположены друг над другом.
  • ‘step’ генерирует линейный график, который по умолчанию не заполнен.
  • ‘stepfilled’ генерирует линейный график, который по умолчанию заполнен.

В следующем примере показана гистограмма оценок, полученных учениками в классе. Определены четыре ячейки: 0-25, 26-50, 51-75 и 76-100. Гистограмма показывает количество студентов, попадающих в этот диапазон.

from matplotlib import pyplot as plt
import numpy as np
fig,ax = plt.subplots(1,1)
a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27])
ax.hist(a, bins = [0,25,50,75,100])
ax.set_title("histogram of result")
ax.set_xticks([0,25,50,75,100])
ax.set_xlabel('marks')
ax.set_ylabel('no. of students')
plt.show()

Сюжет выглядит так, как показано ниже —

Гистограмма

Matplotlib — круговая диаграмма

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

API Matplotlib имеет функцию pie (), которая генерирует круговую диаграмму, представляющую данные в массиве. Дробная площадь каждого клина определяется как x / sum (x) . Если сумма (х) <1, то значения х напрямую задают дробную площадь, и массив не будет нормализован. Результирующий пирог будет иметь пустой клин размером 1 — сумма (х).

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

параметры

В следующей таблице перечислены параметры для круговой диаграммы —

Икс массив типа. Размеры клина.
этикетки список. Последовательность строк, обеспечивающая метки для каждого клина.
Цвета Последовательность matplotlibcolorargs, через которую будет проходить круговая диаграмма. Если None, будет использовать цвета в текущем активном цикле.
Autopct строка, используемая для обозначения клиньев их числовым значением. Метка будет размещена внутри клина. Строка формата будет fmt% pct.

Следующий код использует функцию pie () для отображения круговой диаграммы в списке студентов, зачисленных на различные курсы компьютерного языка. Пропорциональный процент отображается внутри соответствующего клина с помощью параметра autopct, который установлен в% 1.2f%.

from matplotlib import pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.axis('equal')
langs = ['C', 'C++', 'Java', 'Python', 'PHP']
students = [23,17,35,29,12]
ax.pie(students, labels = langs,autopct='%1.2f%%')
plt.show()

Круговая диаграмма

Matplotlib — Scatter Plot

Точечные диаграммы используются для построения точек данных по горизонтальной и вертикальной оси в попытке показать, насколько одна переменная подвержена влиянию другой. Каждая строка в таблице данных представлена ​​маркером, положение которого зависит от его значений в столбцах, заданных по осям X и Y. Третья переменная может быть установлена, чтобы соответствовать цвету или размеру маркеров, таким образом добавляя еще одно измерение к графику.

Сценарий ниже показывает диаграмму разброса шкал оценок по сравнению с оценками мальчиков и девочек в двух разных цветах.

import matplotlib.pyplot as plt
girls_grades = [89, 90, 70, 89, 100, 80, 90, 100, 80, 34]
boys_grades = [30, 29, 49, 48, 100, 48, 38, 45, 20, 30]
grades_range = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
fig=plt.figure()
ax=fig.add_axes([0,0,1,1])
ax.scatter(grades_range, girls_grades, color='r')
ax.scatter(grades_range, boys_grades, color='b')
ax.set_xlabel('Grades Range')
ax.set_ylabel('Grades Scored')
ax.set_title('scatter plot')
plt.show()

Оцененный балл

Матплотлиб — Контур Участок

Контурные графики (иногда называемые графиками уровня) — это способ показать трехмерную поверхность на двухмерной плоскости. Он отображает две прогнозирующие переменные XY на оси Y и ответную переменную Z в виде контуров. Эти контуры иногда называют z-слайсами или значениями изо-ответа.

Контурная диаграмма подходит, если вы хотите увидеть, как изменяется значение Z в зависимости от двух входов X и Y, так что Z = f (X, Y). Контурная линия или изолиния функции двух переменных — это кривая, вдоль которой функция имеет постоянное значение.

Независимые переменные x и y обычно ограничены регулярной сеткой, называемой meshgrid. Numpy.meshgrid создает прямоугольную сетку из массива значений x и массива значений y.

Matplotlib API содержит функции contour () и contourf (), которые рисуют контурные линии и закрашенные контуры соответственно. Обе функции нуждаются в трех параметрах x, y и z.

import numpy as np
import matplotlib.pyplot as plt
xlist = np.linspace(-3.0, 3.0, 100)
ylist = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(xlist, ylist)
Z = np.sqrt(X**2 + Y**2)
fig,ax=plt.subplots(1,1)
cp = ax.contourf(X, Y, Z)
fig.colorbar(cp) # Add a colorbar to a plot
ax.set_title('Filled Contours Plot')
#ax.set_xlabel('x (cm)')
ax.set_ylabel('y (cm)')
plt.show()

Заполненный график цветов

Matplotlib — Quiver Plot

На графике колчана векторы скорости отображаются в виде стрелок с компонентами (u, v) в точках (x, y).

quiver(x,y,u,v)

Приведенная выше команда отображает векторы в виде стрелок с координатами, указанными в каждой соответствующей паре элементов в x и y.

параметры

В следующей таблице перечислены различные параметры для графика колчана —

Икс 1D или 2D массив, последовательность. Координаты x расположения стрелок
Y 1D или 2D массив, последовательность. Y координаты расположения стрелок
U 1D или 2D массив, последовательность. Компоненты х векторов стрелок
v 1D или 2D массив, последовательность. Компоненты y векторов стрелок
с 1D или 2D массив, последовательность. Цвета стрелок

Следующий код рисует простой сюжет колчана —

import matplotlib.pyplot as plt
import numpy as np
x,y = np.meshgrid(np.arange(-2, 2, .2), np.arange(-2, 2, .25))
z = x*np.exp(-x**2 - y**2)
v, u = np.gradient(z, .2, .2)
fig, ax = plt.subplots()
q = ax.quiver(x,y,u,v)
plt.show()

Более быстрый сюжет

Matplotlib — Box Plot

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

Box Box

Давайте создадим данные для боксов. Мы используем функцию numpy.random.normal () для создания поддельных данных. Требуется три аргумента, среднее значение и стандартное отклонение нормального распределения, а также количество требуемых значений.

np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)

Список массивов, который мы создали выше, является единственным обязательным входом для создания боксплота. Используя строку кода data_to_plot , мы можем создать блокпост с помощью следующего кода:

fig = plt.figure()
# Create an axes instance
ax = fig.add_axes([0,0,1,1])
# Create the boxplot
bp = ax.boxplot(data_to_plot)
plt.show()

Выше строка кода будет генерировать следующий вывод —

Строка кода

Матплотлиб — Сюжет для скрипки

Графики для скрипки аналогичны блочным диаграммам, за исключением того, что они также показывают плотность вероятности данных при различных значениях. Эти графики включают маркер для медианы данных и прямоугольник, указывающий межквартильный диапазон, как на стандартных прямоугольниках. На этой рамке приведена оценка плотности ядра. Как и блочные графики, графики скрипки используются для представления сравнения переменного распределения (или выборочного распределения) по различным «категориям».

Сюжет для скрипки более информативен, чем простой сюжет. Фактически, в то время как на рамочном графике показаны только сводные статистические данные, такие как среднее / среднее и межквартильный диапазоны, на графике скрипки показано полное распределение данных.

 импортировать matplotlib.pyplot как plt

 np.random.seed (10)
 collectn_1 = np.random.normal (100, 10, 200)
 collectn_2 = np.random.normal (80, 30, 200)
 collectn_3 = np.random.normal (90, 20, 200)
 collectn_4 = np.random.normal (70, 25, 200)

 ## объединить эти разные коллекции в список
 data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4]

 # Создать экземпляр фигуры
 fig = plt.figure ()

 # Создать экземпляр оси
 ax = fig.add_axes ([0,0,1,1])

 # Создайте блокпост
 bp = ax.violinplot (data_to_plot)
 plt.show ()

Участок скрипки

Matplotlib — трехмерное черчение

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

Трехмерные оси можно создать, передав ключевое слово projection = ‘3d’ любой из стандартных процедур создания осей.

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(projection='3d')
z = np.linspace(0, 1, 100)
x = z * np.sin(20 * z)
y = z * np.cos(20 * z)
ax.plot3D(x, y, z, 'gray')
ax.set_title('3D line plot')
plt.show()

Теперь мы можем строить различные трехмерные типы графиков. Самым простым трехмерным графиком является трехмерный линейный график, созданный из наборов (x, y, z) троек. Это можно создать с помощью функции ax.plot3D.

Трехмерное черчение

Трехмерный график рассеяния создается с помощью функции ax.scatter3D .

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.axes(projection='3d')
z = np.linspace(0, 1, 100)
x = z * np.sin(20 * z)
y = z * np.cos(20 * z)
c = x + y
ax.scatter(x, y, z, c=c)
ax.set_title('3d Scatter plot')
plt.show()

3D Scatter Plot

Matplotlib — 3D Contour Plot

Функция ax.contour3D () создает трехмерный контурный график. Требуется, чтобы все входные данные были в форме двумерных регулярных сеток, а Z-данные оценивались в каждой точке. Здесь мы покажем трехмерную контурную диаграмму трехмерной синусоидальной функции.

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
def f(x, y):
   return np.sin(np.sqrt(x ** 2 + y ** 2))
	
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)

X, Y = np.meshgrid(x, y)
Z = f(X, Y)

fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contour3D(X, Y, Z, 50, cmap='binary')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
ax.set_title('3D contour')
plt.show()

3D Contour

Matplotlib — 3D каркасный сюжет

Каркасный график принимает сетку значений и проецирует ее на указанную трехмерную поверхность, что позволяет довольно легко визуализировать получающиеся трехмерные формы. Функция plot_wireframe () используется для этой цели —

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
def f(x, y):
   return np.sin(np.sqrt(x ** 2 + y ** 2))
	
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)

X, Y = np.meshgrid(x, y)
Z = f(X, Y)

fig = plt.figure()
ax = plt.axes(projection='3d')
ax.plot_wireframe(X, Y, Z, color='black')
ax.set_title('wireframe')
plt.show()

Выше строка кода будет генерировать следующий вывод —

Каркасный

Matplotlib — 3D Поверхностный сюжет

Поверхностный график показывает функциональную взаимосвязь между назначенной зависимой переменной (Y) и двумя независимыми переменными (X и Z). Сюжет является сопутствующим сюжетом для контурного сюжета. Поверхностный график похож на каркасный график, но каждая грань каркаса представляет собой заполненный многоугольник. Это может помочь восприятию топологии визуализируемой поверхности. Plot_surface () функции x, y и z в качестве аргументов.

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
x = np.outer(np.linspace(-2, 2, 30), np.ones(30))
y = x.copy().T # transpose
z = np.cos(x ** 2 + y ** 2)

fig = plt.figure()
ax = plt.axes(projection='3d')

ax.plot_surface(x, y, z,cmap='viridis', edgecolor='none')
ax.set_title('Surface plot')
plt.show()

Выше строка кода будет генерировать следующий вывод —

Земельный участок

Matplotlib — Работа с текстом

Matplotlib имеет обширную текстовую поддержку, включая поддержку математических выражений, поддержку TrueType для растровых и векторных выводов, разделенный новой строкой текст с произвольными поворотами и поддержку юникода. Matplotlib включает в себя собственный matplotlib.font_manager, который реализует кросс-платформенный, W3C-совместимый алгоритм поиска шрифтов.

Пользователь имеет большой контроль над свойствами текста (размер шрифта, вес шрифта, расположение и цвет текста и т. Д.). Matplotlib реализует большое количество математических символов и команд TeX.

Следующий список команд используется для создания текста в интерфейсе Pyplot —

текст Добавить текст в произвольном месте осей.
аннотировать Добавьте аннотацию с необязательной стрелкой в ​​произвольном расположении осей.
xlabel Добавьте метку к оси X осей.
ylabel Добавьте метку к оси Y осей.
заглавие Добавьте заголовок к Оси.
figtext Добавьте текст в произвольном месте рисунка.
suptitle Добавьте заголовок к рисунку.

Все эти функции создают и возвращают экземпляр matplotlib.text.Text () .

Следующие сценарии демонстрируют использование некоторых из вышеуказанных функций —

import matplotlib.pyplot as plt
fig = plt.figure()

ax = fig.add_axes([0,0,1,1])

ax.set_title('axes title')
ax.set_xlabel('xlabel')
ax.set_ylabel('ylabel')
ax.text(3, 8, 'boxed italics text in data coords', style='italic', 
bbox = {'facecolor': 'red'})
ax.text(2, 6, r'an equation: $E = mc^2$', fontsize = 15)
ax.text(4, 0.05, 'colored text in axes coords',
verticalalignment = 'bottom', color = 'green', fontsize = 15)
ax.plot([2], [1], 'o')
ax.annotate('annotate', xy = (2, 1), xytext = (3, 4),
arrowprops = dict(facecolor = 'black', shrink = 0.05))
ax.axis([0, 10, 0, 10])
plt.show()

Выше строка кода будет генерировать следующий вывод —

Работа с текстом

Matplotlib — математические выражения

Вы можете использовать подмножество TeXmarkup в любой текстовой строке Matplotlib, поместив ее внутри пары знаков доллара ($).

# math text
plt.title(r'$\alpha > \beta$')

Для создания нижних и верхних индексов используйте символы «_» и «^» —

r'$\alpha_i> \beta_i$'

import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)

plt.plot(t,s)
plt.title(r'$\alpha_i> \beta_i$', fontsize=20)

plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$', fontsize = 20)
plt.text(0.1, -0.5, r'$\sqrt{2}$', fontsize=10)
plt.xlabel('time (s)')
plt.ylabel('volts (mV)')
plt.show()

Выше строка кода будет генерировать следующий вывод —

Математические выражения

Matplotlib — Работа с изображениями

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

Загрузка данных изображения поддерживается библиотекой Pillow. Собственно, Matplotlib поддерживает только изображения PNG. Команды, показанные ниже, возвращаются к Подушке, если не удается выполнить родное чтение.

Изображение, используемое в этом примере, является файлом PNG, но имейте это в виду требование подушки для ваших собственных данных. Функция imread () используется для чтения данных изображения в объекте ndarray типа float32 dtype.

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
img = mpimg.imread('mtplogo.png')

Предполагая, что следующее изображение с именем mtplogo.png присутствует в текущем рабочем каталоге.

Matplotlib Image

Любой массив, содержащий данные изображения, можно сохранить в файл на диске, выполнив функцию imsave () . Здесь вертикально перевернутая версия оригинального png-файла сохраняется путем задания параметра origin как более низкого.

plt.imsave("logo.png", img, cmap = 'gray', origin = 'lower')

Новое изображение отображается, как показано ниже, если оно открыто в любой программе просмотра изображений.

Просмотрщик изображений

Чтобы нарисовать изображение в программе просмотра Matplotlib, выполните функцию imshow () .

imgplot = plt.imshow(img)

Матплотлиб — Преобразования

Пакет matplotlib построен поверх структуры преобразования, чтобы легко перемещаться между системами координат. Можно использовать четыре системы координат. Системы кратко описаны в таблице, приведенной ниже —

координировать Объект трансформации Описание
Данные ax.transData

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

Топоры ax.transAxes

Система координат осей. (0,0) слева внизу и (1,1) справа вверху от осей.

фигура fig.transFigure

Система координат рисунка. (0,0) слева внизу и (1,1) вверху справа на рисунке

дисплей Никто

Это пиксельная система координат дисплея. (0,0) — левый нижний угол, а (ширина, высота) — верхний правый угол экрана в пикселях.

Альтернативно, (matplotlib.transforms.IdentityTransform ()) может использоваться вместо None.

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

Система координат осей. (0,0) слева внизу и (1,1) справа вверху от осей.

Система координат рисунка. (0,0) слева внизу и (1,1) вверху справа на рисунке

Это пиксельная система координат дисплея. (0,0) — левый нижний угол, а (ширина, высота) — верхний правый угол экрана в пикселях.

Альтернативно, (matplotlib.transforms.IdentityTransform ()) может использоваться вместо None.

Рассмотрим следующий пример —

axes.text(x,y,"my label") 

Текст размещается в теоретической позиции точки данных (x, y). Таким образом, мы будем говорить о «координатах данных».

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

axes.text(0.5, 0.5, "middle of graph", transform=axes.transAxes)

Эти преобразования могут быть использованы для любого типа объектов Matplotlib. Преобразование по умолчанию для ax.text — это ax.transData, а преобразование по умолчанию для fig.text — это fig.transFigure.

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