python - for循环中matplotlib中的多个图例

标签 python matplotlib legend

以下程序执行正常,但只显示一个图例。如何显示所有四个图例?请查看所附图片。

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()

enter image description here

最佳答案

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/

相关文章:

python - 是否有必要使用 SWIG 在接口(interface)文件中提及包装的 .c 文件的所有函数?

python - 在 matplotlib 中分层轮廓图和表面图

python - 在 python 箱线图中调整 X 轴上的间距

软件;带有 2+/拆分图例的饼图 R2017b

python - 通过 rpy2 将符号值的 Python 列表传递给 R Legend 调用

python - Django - 服务器效率的缓存与 QuerySet 过滤器?

Python如何为列表中的元素之一添加引号?

python - 计数器似乎没有正确添加

python - 楔形贴片位置未更新

php - JpGraph 图例顺序