2016-03-04 202 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