2016-03-04 151 views
2

可以在Matplolib中一次设置所有标签吗?散点图标签在一行中 - Matplotlib

例如,我有这样一段代码绘制散点图:

cmap = plt.get_cmap('Set1') 
colors = [cmap(i) for i in numpy.linspace(0, 1, simulations+1)] 

plt.figure(figsize=(7, 7)) 
plt.scatter(coords[:, 0], coords[:, 1], marker='o', c=colors, s=50, edgecolor='None') 
plt.legend(loc='lower left',) 

simulations = 7哪里和coords是具有形状的numpy.array(7,2)。

这给了我这样一个情节:

enter image description here

如果我改变的最后一个行:

plt.scatter(coords[:, 0], coords[:, 1], marker='o', c=colors, s=50, edgecolor='None', label=range(simulations)) 
plt.legend(loc='lower left') 

我得到:

enter image description here

我我想知道我是否需要做一个循环来做t他分散和设置每个标签,如果有一种方法可以一次完成。

谢谢。

回答

2

我不知道如何用散点图来做到这一点。但如果您需要不同的标签,我不确定是否有优势使用scatter而不是plot

这个怎么样?

import numpy as np 
import matplotlib.pyplot as plt 

n = 10 
coords = np.random.random((n,2)) 

cmap = plt.get_cmap('Set1') 

for i, (x, y) in enumerate(coords): 
    plt.plot(x, y, 'o', color=cmap(i/float(n)), label='%i'%i, ms=9, mec='none') 

plt.axis((-0.5, 1.5, -0.5, 1.5)) 
plt.legend(loc='lower left', numpoints=1, frameon=False) 
plt.show() 

enter image description here