Python 如何使用字典键编写图例?

Python 如何使用字典键编写图例?,python,python-2.7,matplotlib,Python,Python 2.7,Matplotlib,我试图将以下数据可视化:dictMy={'apple':[[0,1],[0,2],[3,2],'pear':[[2,3],[3,5],[0,2],[peach':[2,5],[3,8],[0,0]}这是我的代码: from matplotlib.pyplot import cm import matplotlib.pyplot as plt import numpy as np dictMy = {'apple' : [[0, 1], [0, 2], [3, 2]], 'pear' : [[

我试图将以下数据可视化:
dictMy={'apple':[[0,1],[0,2],[3,2],'pear':[[2,3],[3,5],[0,2],[peach':[2,5],[3,8],[0,0]}
这是我的代码:

from matplotlib.pyplot import cm
import matplotlib.pyplot as plt
import numpy as np


dictMy = {'apple' : [[0, 1], [0, 2], [3, 2]], 'pear' : [[2, 3], [3, 5], [0, 2]], 'peach' : [[2, 5], [3, 8], [0, 0]]}

color=iter(cm.rainbow(np.linspace(0,1,len(dictMy))))

for key in dictMy:
    curLabel = key
    c=next(color)
    for item in dictMy[key]:
        x = item[0]
        y = item[1]
        plt.scatter(x,y, c = c)
    plt.legend(str(curLabel))
plt.show()
以下是我的输出:


所以,我真的不明白,为什么它以这样的方式显示传奇,以及如何修复它。我或多或少明白为什么它是所有钥匙中的最后一把,但我不明白为什么它被拆分成字母。请提供帮助。

此时,您正在为字典中的每个
键调用
图例
函数。您不需要这样做-只需使用字典键在散点图上标记每种类型的点,然后调用
legend
函数。以下工作将起作用:

from matplotlib.pyplot import cm
import matplotlib.pyplot as plt
import numpy as np


dictMy = {'apple' : [[0, 1], [0, 2], [3, 2]],
          'pear' : [[2, 3], [3, 5], [0, 2]],
          'peach' : [[2, 5], [3, 8], [0, 0]],
         }
color=iter(cm.rainbow(np.linspace(0,1,len(dictMy))))

for key, c in zip(dictMy, color):
    for idx, item in enumerate(dictMy[key]):
        x = item[0]
        y = item[1]
        if idx == 0:
            plt.scatter(x, y, c=c, label=key)
        else:
            plt.scatter(x, y, c=c)

plt.legend()
plt.show()
输出


显然,
legend
函数需要一个iterable字符串,而您需要提供一个字符串。当您对字符串进行迭代时,会得到单个字符。您可能不应该在循环中调用
legend()
。@LevLevitsky谢谢您的解释)