以下程序执行正常,但只显示一个图例。我怎样才能把四个传说都显示出来?请看所附图片。
import matplotlib.pyplot as plt
dct = {'list_1' : [1,2,4,3,1],'list_2' : [2,4,5,1,2],'list_3' : [1,1,3,4,6],'list_4' : [1,1,2,2,1]}
xs = [0,1,2,3,4]
for i in [1,2,3,4]:
plt.plot(xs,dct['list_%s' %i])
plt.legend(['%s data' %i])
plt.show()
2条答案
按热度按时间eoxn13cs1#
您遇到了
legend
的工作方式,每次调用它都会破坏当前的图例并用新的图例替换它。如果你只给予legend
一个字符串列表,它会遍历axes
中的艺术家(代表要绘制的数据的对象),直到它用完标签(这就是为什么你的第一条曲线被标记为第四条)。如果在plot
命令中包含kwarg
label
,当不带任何参数调用legend
时,它将遍历艺术家 * 并为带标签的艺术家生成图例条目。[*]有一些例外的艺术家,它会拿起
7fhtutme2#
AFAIK,您需要调用一次legend,并使用所有参数。
注意,我在这里包含了label作为plot函数的参数之一,以便稍后我们可以调用get_label()。
如果您有单独的轴(如twinx),并且所有图例信息都将通过一个图例,这也将起作用。顺便说一句,我似乎记得%表示法是旧的,应该更喜欢str.format(),但恐怕我记不起为什么了。