числа матплотлиб в легенде - PullRequest
3 голосов
/ 01 ноября 2010

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

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

т.е. вместо:

--  H
-.- Li

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

1  H
2  Li

1 Ответ

3 голосов
/ 18 января 2011

Возможно, в смесь добавили немного латекса?

#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 и сделать зарезервированное место в легенде отрицательным. Не удалось найти более удобный способ сделать это, так как я полагаю, что легенда всегда должна показывать линию (например, вы не можете установить цифры на 0).

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

...