以下程序执行正常,但只显示一个图例。如何显示所有四个图例?请查看所附图片。
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()
最佳答案
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], label='%s data' % i)
plt.legend()
plt.show()
您遇到了 legend
的工作方式,每次调用它都会破坏当前图例并用新图例替换它。如果您只给 legend
一个字符串列表,它会遍历 axes
中的艺术家(表示要绘制的数据的对象),直到用完标签(因此为什么你的第一条曲线被标记为第四条)。如果您在 plot
命令中包含 kwarg
label
,当您调用 legend
时不带任何参数,它将遍历艺术家*并为带有标签的艺术家生成图例条目。
[*] 它会选择哪些艺术家有一些异常(exception)情况
关于python - for循环中matplotlib中的多个图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14826119/