2

我正在尝试创建一个图例,其中包含它对应的线条颜色和标签。我当前的代码正在绘制图例,但只绘制标签的第一个字母(D 而不是 DL11)。我想知道如何让我的情节停止截断标签。我希望将来能够添加更多线条和相应的颜色/标签。任何帮助将不胜感激。谢谢

from numpy import *
import matplotlib.pyplot as plt
import pylab


data = loadtxt("/home/***")
d, tno1, qno1 = data[:,1], data[:,2], data[:,3]                         
d, tno1, qno1 = loadtxt("/home/***", usecols = (1,2,3), unpack=True)


plt.plot(tno1, qno1, label='DL11')
plt.legend( ('DL11') )
plt.show()
4

2 回答 2

3

您遇到了一个有趣的拆包问题。

任何一个

 plt.legend()

或者

 plt.legend(('DL11',)) # <- note the comma

会得到想要的结果。

要了解它为什么这样做,请参阅https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/axes/_axes.py#L422上的代码

调用plt.legend(('DL11'))等效于plt.legend('DL11')属于这种len(args) == 1情况的调用,然后它将您的字符串压缩到行列表中 - >生成“D”标签,因为您只有一行。

不要认为这是一个错误,但它很微妙。

于 2013-07-31T20:16:17.723 回答
1

我相信 pyplot 需要一个传奇列表。对于像您这样的单项列表,只需

pyplot.legend(['DL11'])

我的猜测是 pyplot.legend('DL11') 获取列表的第一项,即'D'。

希望能帮助到你

于 2014-08-08T21:26:24.677 回答