Как сделать легенду в matplotlib
Matplotlib — библиотека на языке программирования Python для визуализации данных двумерной (2D) графикой (3D графика также поддерживается). Получаемые изображения могут быть использованы в качестве иллюстраций в публикациях[4].
Matplotlib написан и поддерживался в основном Джоном Хантером (англ. John Hunter) и распространяется на условиях BSD-подобной лицензии. Генерируемые в различных форматах изображения могут быть использованы в интерактивной графике, в научных публикациях, графическом интерфейсе пользователя, веб-приложениях, где требуется построение диаграмм (англ. plotting)[5][6]. В документации автор признаётся, что Matplotlib начинался с подражания графическим командам MATLAB, но является независимым от него проектом
Установка
Для установки используйте пакетный менеджер:
Импорт
Для отображения графиков в notebook'е введите
Благодаря этой строчке все графики будут выводиться в векторном формате svg:
Для отображения графиков в отрыве от jupyter notebook используйте plt.show() после всех команд для вывода графиков.
API matplotlib в функциональном стиле
Example
В отличии от pandas, matplotlib может строить графики из обычных списков или массивов numpy.
TL; DR → Как создать легенду для линейного графика в Matplotlib PyPlot без каких-либо дополнительных переменных?
Рассмотрим графику script ниже:
Как вы можете видеть, это очень простое использование Matplotlib PyPlot . Это идеально генерирует граф, подобный приведенному ниже:
Ничего особенного, я знаю. Тем не менее, неясно, какие данные строятся там (я пытаюсь построить данные некоторых алгоритмов сортировки, длину и время, и я хотел бы убедиться, что люди знают, какая строка есть). Таким образом, мне нужна легенда, однако, взглянув на следующий пример ниже (с официального сайта):
Вы увидите, что мне нужно создать дополнительную переменную ax . Как добавить легенду на мой график, не создавая эту дополнительную переменную и сохраняя простоту моего текущего script.
Добавьте label= к каждому из вызовов plot() , а затем вызовите legend(loc='upper left') .
Рассмотрим этот пример:
Вы можете получить доступ к экземпляру Axes ( ax ) с помощью plt.gca() . В этом случае вы можете использовать
Вы можете сделать это либо используя ключевое слово label= в каждом из ваших plt.plot() либо назначив свои метки в виде кортежа или списка в legend , как в этом рабочем примере:
Однако, если вам нужно получить доступ к экземпляру Axes более одного раза, я рекомендую сохранить его в переменной ax с
и затем вызывая ax вместо plt.gca() .
Вот пример, чтобы помочь вам…
Простой сюжет для кривых синуса и косинуса с легендой.
Добавьте метки к каждому аргументу в вашем графическом вызове, соответствующем серии, в которой он отображается, т.е. label = "series 1"
TL;DR -> как можно создать легенду для линейного графика в Matplotlib 's PyPlot без создания каких-либо дополнительных переменных?
Пожалуйста, рассмотрите сценарий graphing ниже:
Как вы можете видеть, это очень простое использование matplotlib 's PyPlot . Это идеально генерирует график, подобный приведенному ниже:
Ничего особенного, я знаю. Однако неясно, какие данные выводятся на график (я пытаюсь plot данные некоторых алгоритмов сортировки, длина против затраченного времени, и я хотел бы убедиться, что люди знают, какая строка какая). Таким образом, мне нужна Легенда, однако, взглянув на следующий пример ниже( с официального сайта ):
Вы увидите, что мне нужно создать дополнительную переменную ax . Как я могу добавить легенду к своему графику, не создавая эту дополнительную переменную и сохраняя простоту моего текущего скрипта?
У меня есть необычный прецедент в matplotlib, который я пытаюсь решить. У меня есть пара осей, созданных с помощью twinx() . Каждый из них содержит ровно один линейный объект с различными стилями. Вместо того чтобы иметь обычную легенду, я должен добавить патч, представляющий каждую линию, к метке.
Я установил Anaconda 4.2.0 на Linux (64-bit) машину. Я импортирую весь модуль matplotlib, он работает. Но когда я импортирую pyplot из matplotlib, например: from matplotlib import pyplot Возникает ошибка. Там написано: ImportError: No module named PyQt4 Насколько мне известно, бэкэнд pyplot был.
Добавьте label= к каждому из ваших plot() вызовов, а затем вызовите legend(loc='upper left') .
Рассмотрим этот пример (проверено с Python 3.8.0):
Вы можете получить доступ к экземпляру Axes ( ax ) с помощью plt.gca() . В этом случае вы можете использовать
Это можно сделать либо с помощью ключевого слова label= в каждом из вызовов plt.plot() , либо назначив метки в виде кортежа или списка в legend , как в этом рабочем примере:
Однако, если вам нужно получить доступ к экземпляру Axes более одного раза, я рекомендую сохранить его в переменной ax с помощью
а потом позвонил ax вместо plt.gca() .
Вот пример, который поможет вам .
Простой plot для синусоидальных и косинусоидальных кривых с легендой.
Я новичок в pyplot matplotlib и задавался вопросом, Как получить черные линии между барами гистограммы. Я немного погуглил, и другие, похоже, извлекли это поведение из коробки с помощью тех же команд, что и я.
Добавьте метки к каждому аргументу в вызове plot, соответствующему ряду, который является graphing, т. е. label = "series 1"
Затем просто добавьте Pyplot.legend() в нижнюю часть вашего скрипта, и легенда отобразит эти метки.
Вы можете добавить пользовательскую документацию легенды
Похожие вопросы:
Я хочу найти в файле определенную строку, а затем поместить комментарий в начало этой строки. Но мне нужен ответ, который избегал бы regex, глобальных изменений и всех других причудливых вещей. Я.
Я хочу добавить некоторый интервал между концом записи легенды и границей легенды. Я пробовал использовать аргументы для pyplot.legend , но не нашел подходящей комбинации. Вот минимальный рабочий.
Я пытаюсь импортировать pyplot, но мой код python не запускается и застревает в следующем месте: from matplotlib import pyplot as plt Traceback (most recent call last): File , line 1.
У меня есть необычный прецедент в matplotlib, который я пытаюсь решить. У меня есть пара осей, созданных с помощью twinx() . Каждый из них содержит ровно один линейный объект с различными стилями.
Я установил Anaconda 4.2.0 на Linux (64-bit) машину. Я импортирую весь модуль matplotlib, он работает. Но когда я импортирую pyplot из matplotlib, например: from matplotlib import pyplot Возникает.
У меня возникла проблема, из-за которой я не могу вызвать элемент 'pyplot' из 'matplotlib'. Из приведенного ниже кода Вы можете видеть, что мне пришлось добавить TkAgg для работы элемента.
Я новичок в pyplot matplotlib и задавался вопросом, Как получить черные линии между барами гистограммы. Я немного погуглил, и другие, похоже, извлекли это поведение из коробки с помощью тех же.
Я пытаюсь получить местоположение легенды в matplotlib. Похоже, что Legend.get_window_extent() должен обеспечить это, но он возвращает одно и то же значение независимо от того, где находится.
При попытке импортировать pyplot из matplotlib я получаю эту ошибку (python 3.6). Он отлично работает на моем другом компьютере, который имеет python 3.5, но я не думаю, что он сильно изменился. Я.
Я использую заголовок легенды (via matplotlib), который помещает заголовок над записями легенды, однако я хочу создать длинную тонкую легенду под сюжетом. ncol создаст одну строку записей легенды.
Matplotlib является самой популярной библиотекой 2-D графики, но иногда трудно заставить ваши графики выглядеть правильно.
Как мне изменить название этикетки на моей легенде? Как мне установить отметки? Как изменить шкалу на логарифмическую? Как добавить аннотации и стрелки на мой график? Как добавить линии сетки на мои графики?
Прежде всего, убедитесь, что вы импортируете matplotlib.
В Jupyter Notebook вы можете включить эту строку ниже, чтобы вам не пришлось звонить plt.show() каждый раз, когда вы хотите сделать сюжет.
До:
После:
В: Как мне увеличить размер моей фигуры?
Часто размер по умолчанию слишком мал. Вы можете добавить аргумент figsize и указать ширину и высоту в дюймах, как показано ниже.
Q: Что такое подзаговор? Как мне создавать и перемещаться по участкам?
Сюжеты - это группы меньших осей, которые существуют вместе в пределах одной фигуры. Ниже приведен пример четырех участков в форме 2 x 2.
Эти участки были созданы с кодом ниже. Мы называем plt.subplot и укажите три числа. Они ссылаются на количество строк, количество столбцов и номер подзаговора, который вы хотите активировать.
На приведенных выше графиках текст на графиках является ссылкой на эти три числа. Порядок номера подзаголовка располагается слева направо, начиная с номера 1. Например, верхний левый график - это номер 1, верхний правый график - номер 2, нижний левый график - номер 3, и нижний правый график - это участок № 4.
Обратите внимание, что вам придется специально позвонить plt.subplot(2, 2, 1) активировать этот участок.
До
После
Q:. Как добавить линии сетки на мои графики?
В: Как мне изменить цвет линий / ширину / стиль?
Вы можете передать аргументы color, linewidth и linestyle.
Вот несколько параметров стиля линии, которые вы можете установить.
Q: Как я могу изменить свой стиль маркера или цвет?
Вы можете передать маркер аргументов и цвет, как показано ниже.
Вот несколько вариантов маркеров, которые вы можете установить по своему вкусу.
В: Как мне изменить прозрачность моих линий?
Передайте альфа-параметр на ваш график. Альфа может быть установлена от 0 до 1, где 0 полностью прозрачен, а 1 - нет прозрачности.
График ниже иллюстрирует, как прозрачность выглядит при уровнях альфа 0,9, 0,5 и 0,1
В: Как мне добавить легенду к своему сюжету?
Если легенда не появляется автоматически на вашем графике, вы можете использовать следующий код для отображения легенды.
В: Как мне изменить местоположение, где появляется моя легенда?
Вы можете передать следующие параметры loc аргумент: верхний правый, верхний левый, нижний левый, нижний правый, правый, центральный левый, правый центр, нижний центр, верхний центр, центр.
В: Как мне изменить название ярлыка на моей легенде?
Опция 1:
Вариант 2:
Кроме того, вы можете создать список имен меток и установить метки легенды равными списку, который вы создали.
В: Как мне изменить размер моей легенды?
Чтобы установить размер легенды для этого конкретного графика, вы можете передать аргумент fontsize.
В качестве альтернативы, вместо использования числа, вы можете сделать что-то вроде этого.
Q: Как я могу назвать свои метки осей x и y и как изменить размер шрифта?
В: Как мне установить отметки?
Первый аргумент - это место, где вы хотите установить метки, а второй аргумент - метка рядом с меткой.
Q: Как установить экстент осей?
В: Как мне изменить масштаб на логарифмический?
В: Как мне добавить аннотации и стрелки к моему графику?
Мы можем создавать аннотации и указывать координаты для аннотации к xy аргумент. xytext определить координаты метки. Если мы хотели стрелы, нам нужно будет использовать arrowprops чтобы стрелки появились.
Если в вашем ноутбуке Jupyter окажется большое количество двумерной графики, ваш ноутбук будет работать очень медленно. Это случилось со мной во время одного из проектов, над которым я работал. Если вы наведите указатель мыши на левую сторону графика, появится серое поле, как показано ниже. Двойным щелчком на этом сером квадрате я смог скрыть свои графики, чтобы Jupyter Notebook мог нормально работать. Это поможет и с прокруткой.
Надеюсь, вам понравился этот обзор Matplotlib. Было бы невозможно охватить каждую вещь в огромной библиотеке Matplotlib, но если есть другие функции Matplotlib, которые, по вашему мнению, должны быть включены в эту статью, дайте мне знать.
Читайте также: