我正在使用下面的代碼在pyplot中生成一個散點圖,我希望9個類中的每一個都以不同的顏色繪製。每個班級有多個點。Pyplot scatterplot圖例不適用於較小的樣本尺寸
我不明白爲什麼圖例不適用於較小的樣本量。
def plot_scatter_test(x, y, c, title):
data = pd.DataFrame({'x': x, 'y': y, 'c': c})
classes = len(np.unique(c))
colors = cm.rainbow(np.linspace(0, 1, classes))
ax = plt.subplot(111)
for s in range(0,classes):
ss = data[data['c']==s]
plt.scatter(x=ss['x'], y=ss['y'],c=colors[s], label=s)
ax.legend(loc='lower left',scatterpoints=1, ncol=3, fontsize=8, bbox_to_anchor=(0, -.4), title='Legend')
plt.show()
我的數據是這樣的
當我通過調用
plot_scatter_test(test['x'], test['y'],test['group'])
我得到的圖表中不同的顏色繪製這一點,但傳說是單一顏色
所以爲了確保我的數據正常,我使用相同類型的數據創建了一個隨機數據幀。現在我得到了不同的顏色,但由於它們不是連續的,所以還是有些問題。
test2 = pd.DataFrame({
'y': np.random.uniform(0,1400,36),
'x': np.random.uniform(-250,-220,36),
'group': np.random.randint(0,9,36)
})
plot_scatter_test(test2['x'], test2['y'],test2['group'])
最後,我創建的360個數據點的更大的陰謀,一切看起來我希望它的方式。我究竟做錯了什麼?
test3 = pd.DataFrame({
'y': np.random.uniform(0,1400,360),
'x': np.random.uniform(-250,-220,360),
'group': np.random.randint(0,9,360)
})
plot_scatter_test(test3['x'], test3['y'],test3['group'])
您嘗試分配顏色的方式對我來說沒有意義。你能非常精確地知道顏色應該代表什麼? – ImportanceOfBeingErnest
顏色只是每個組的任意視覺差異。我一直在仔細查看併發布它作爲答案,所以我碰巧找到了一個修復程序。 – ElPresidente
這不是一個修復,請參閱我的答案。 – ImportanceOfBeingErnest