Ann*_*hen 4 python matplotlib python-2.7
我正在尝试可视化以下数据: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()
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
所以,我真的不明白,为什么它以这种方式显示图例以及如何解决这个问题。我或多或少明白为什么它是所有键中的最后一个,但我不明白为什么它被分成字母。请帮忙。
目前,您正在legend
为key
字典中的每个调用函数。您不需要这样做 - 只需使用字典键在散点图上标记每种类型的点,然后再调用该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()
Run Code Online (Sandbox Code Playgroud)
输出
归档时间: |
|
查看次数: |
4272 次 |
最近记录: |