Вопрос

У меня есть пара строк, и я хочу показать легенду. Проблема в том, что я не могу использовать разные стили (--, :, -.) Потому что их слишком мало, и я не могу использовать маркеры (+, *, и т. Д.) Потому что им нужно, чтобы они показать некоторые очки на линии.

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

То есть вместо:

--  H
-.- Li

Я бы хотел что-то вроде:

1  H
2  Li
Это было полезно?

Решение

Возможно, небольшой латекс, брошенный в смесь?

#In which we make a legend; not with lines, but numbers!

import pylab as pl
pl.rc('text', usetex=True)

pl.figure(1)
pl.clf()
ax = pl.subplot(111)
pl.plot(range(0,10), 'k', label = r'\makebox[25]{1\hfill}Bla')
pl.plot(range(1,11), 'k', label = r'\makebox[25]{12\hfill}Bla12')
lgd = pl.legend(handlelength = -0.4)
for k in lgd.get_lines():
k.set_linewidth(0)
pl.draw()
pl.show()

Числа / этикетки выровнены с помощью Makebox с определенной шириной и Hfill, чтобы занять место, не используемое вашим метками. Числа не автоматически, но если вы используете цикл, чтобы нарисовать свои строки, вы можете добавить счетчик для отслеживания номеров.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top