Заполните правый столбец легенды matplotlib

Эй, я пытаюсь подгонять легенду на сюжет, чтобы он не скрывал график.

import numpy as np import matplotlib.pyplot as plt X = np.linspace(0,100,11) plt.plot(X,-X, label='plot 1') plt.plot(X,-2*X, label='plot 2') plt.plot(X,-3*X, label='plot 3') leg=plt.legend(ncol=2) leg.get_frame().set_visible(False) plt.show() 

Итак, в минимальном рабочем примере выше, что я хочу сделать, это переместить метку «plot 2» в легенде в правый столбец, то есть непосредственно под «plot 3».

Любая помощь будет оценена, спасибо.

3 Solutions collect form web for “Заполните правый столбец легенды matplotlib”

Легенда заполняется колонками слева направо. Другими словами, если вы обманом поймете, что есть еще одна строка (без текста или цвета строки в легенде), вы можете заполнить пространство под «plot 3».

 import numpy as np import matplotlib.pyplot as plt from pylab import * X = np.linspace(0,100,11) plt.plot(X,-X, label='plot 1', color='red') plt.plot(X,-2*X, label='plot 2', color='green') plt.plot(X,-3*X, label='plot 3', color='blue') line1 = Line2D(range(10), range(10), marker='', color="red") line2 = Line2D(range(10), range(10), marker='',color="green") line3 = Line2D(range(10), range(10), marker='', color="blue") line4 = Line2D(range(10), range(10), marker='', color="white") plt.legend((line1,line4, line3,line2),('plot1','','plot3','plot2'),numpoints=1, loc=4,ncol=2) plt.show() 

Дифференциальная реализация ответа @cosmosis. Это, вероятно, более гибко.

 import numpy as np import matplotlib.pyplot as plt X = np.linspace(0,100,11) plt.plot(X,-X, label='plot 1', color='red') plt.plot(X,-2*X, label='plot 2', color='green') plt.plot(X,-3*X, label='plot 3', color='blue') (lines, labels) = plt.gca().get_legend_handles_labels() #it's safer to use linestyle='none' and marker='none' that setting the color to white #should be invisible whatever is the background lines.insert(1, plt.Line2D(X,X, linestyle='none', marker='none')) labels.insert(1,'') plt.legend(lines,labels,numpoints=1, loc=4,ncol=1) plt.show() 

Другой вариант – создать две легенды, как здесь, а затем вытеснить их с помощью ключевого слова bbox_to_anchor здесь

 (lines, labels) = plt.gca().get_legend_handles_labels() leg1 = plt.legend(lines[:1], labels[:1], bbox_to_anchor=(0,0,0.8,1), loc=1) leg2 = plt.legend(lines[1:], labels[1:], bbox_to_anchor=(0,0,1,1), loc=1) gca().add_artist(leg1) 

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

Третий подход, основанный на ответе Франнеско. Нарисуйте линию заполнителя с альфа = 0 (прозрачным).

 #draw your actual lines here #plt.... lines, labels = plt.gca().get_legend_handles_labels() lines.insert(1, plt.Line2D([],[], alpha=0)) labels.insert(1,'') plt.legend(lines,labels,ncol=2) plt.show() 

Это имеет те же преимущества, что и в его ответе. Однако это решение не работает в matplotlib 1.5.1 (под python3), говоря, что ValueError: Unrecognized marker style none

  • Вставить изображение в круговую диаграмму
  • Графики прозрачной линии Matplotlib
  • Сделайте 2D-графический сюжет с помощью matplotlib
  • Matplotlib: как установить текущий показатель?
  • Несколько строк меток x tick в matplotlib
  • Пейджинг / прокрутка набора двухмерных карт тепла в matplotlib
  • Как сохранить сюжет в Seaborn с Python
  • Построение эллиптических орбит
  • TeX в matplotlib для Mac OS X и TeX Live
  • Как использовать Matplotlib в Django?
  • Matplotlib 1.5 использование axes.prop_cycle
  •  
    Interesting Posts for Van-Lav

    PyQt – Как угасить фон рабочего стола за диалогом (аналогично Windows UAC)?

    Дизайн виртуальной пробной комнаты

    Почему «импортировать» заявление, но «перезагружать» функцию?

    Найти конкретные комментарии в HTML-коде, используя python

    Некоторые материалы NLP, связанные с грамматикой, помечением, вытеснением и смысловым смысловым смыслом в Python

    Python: неисправность инструментальной привязки при установке numpy

    Хорошие использует значения переменных аргумента переменной?

    Выбор языка встроенных скриптов для C ++

    Как получить секунды с эпохи с момента выхода + даты gmtime () в Python?

    Как открыть файл на Mac OSX 10.8.2 в python

    HTML-код для отображения разбитого data_frame на одной странице html с использованием python

    Как получить подробную информацию о устройстве / разделе из пути к файлу в Linux (например, UUID, серийный номер жесткого диска и т. Д.)

    Является ли тип Python безопасным?

    Создание 3D-графика из массива 3D numpy

    Ошибка Dateutil parse в python возвращает неверное значение

    Python - лучший язык программирования в мире.