传说中的matplotlib数字

时间:2010-11-01 03:26:39

标签: matplotlib legend

我有几行,我想展示一个传奇。问题是,我不能使用不同的样式(--:-.)因为它们太少而且我不能使用标记({{1} },+等)因为我需要它们在线上显示一些点。

所以我想出的最好的想法是使用数字。但我无法想象如何用数字创建传说。我甚至可以在线条附近绘制数字(将它们放在最佳位置),但我怎样才能用数字绘制图例?

即。而不是:

*

我想要像:

--  H
-.- Li

1 个答案:

答案 0 :(得分:3)

也许有点乳胶投入混合物?

#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)。

你当然也可以在你的情节中的正确位置添加一些文字,而不是使用传奇。