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

  1. Поскольку вы назначаете только имя example анонимной функции. Вы не создаете фактическую функцию example.
  2. Ваша функция fn хранит функцию, которая имеет свое имя как example

var fn = function example() {
 console.error('Hello');
}

var fn2 = function () {
 console.error('Hello 2');
}

function example2() {
  console.error('Hello 3');
}

console.log(fn.name);
console.log(fn2.name);
console.log(example2.name);
console.log("");
console.log(window['example']);
console.log(window['fn']);
console.log(window['fn2']);
console.log(window['example2']);

1
задан Dax Feliz 19 January 2019 в 22:58
поделиться

1 ответ

Вот один из способов сделать это для нескольких вертикальных легенд. Я выбрал очень простые данные, чтобы обеспечить рабочее решение. Вы можете расширить концепцию до фактических данных

from matplotlib import lines

fig, ax = plt.subplots()

plt.plot([0, 5], [1, 1], label='y=1')
plt.plot([0, 5], [2, 2], label='y=2')
plt.plot([0, 5], [3, 3], label='y=3')

handles, _  = ax.get_legend_handles_labels()

vertical_pos = [5, 7, 10]
colors = ['r', 'g', 'b']

for x, c in zip(vertical_pos, colors):
    plt.plot([x, x], [0, 3], color=c, label='Vertical x=%s' %x)

_, labels = ax.get_legend_handles_labels()

for c in colors:
    vertical_line = lines.Line2D([], [],  marker='|', linestyle='None', color=c,
                          markersize=10, markeredgewidth=1.5)
    handles.append(vertical_line)

plt.legend(handles, labels)

РЕДАКТИРОВАТЬ (используя axvline вместо plot)

for x, c in zip(vertical_pos, colors):
    ax_ = plt.axvline( x=x, linestyle='-', color=c, label='Vertical x=%s' %x)

_, labels = ax.get_legend_handles_labels()

for c in colors:
    vertical_line = lines.Line2D([], [],  marker='|', linestyle='None', color=c,
                          markersize=10, markeredgewidth=1.5)
    handles.append(vertical_line)

plt.legend(handles, labels)

[115 ] enter image description here

0
ответ дан Sheldore 19 January 2019 в 22:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: