2017-02-11 80 views
1

我有一個x和y值列表以及每個點(「綠色」,「藍色」,「紅色」等)的顏色分配列表。我發現的所有例子都基於單獨的plt.scatter()命令產生了一個圖例,隨後一個簡單的plt.legend()就足夠了。 making matplotlib scatter plots from dataframes in Python's pandas。我的分散對每個彩色組都沒有單獨的散點圖。那麼我如何生成一個顯示每個組的顏色的圖例?如何將圖例添加到具有顏色分配的散點圖

import matplotlib.pyplot as plt 

colors = ["red", "orange", "green", "blue", "purple", "gray"] 
regions = ["Hanoi", "Nha Trang", "Vung Tau", "Phu Quoc", "Quang Ngai", "Saigon"] 
region_colors=dict(zip(regions,colors)) 

grp_color=[] 
for i in data['Region']: 
    grp_color.append(region_colors[i]) 

x_long=data[' Longitude'] 
y_lat=data[" Latitude"] 
plt.scatter(x_long,y_lat,c=grp_color) 
plt.legend(grp_color,regions,loc='right') 
+0

邏輯在這裏逆轉。通常,爲不同顏色的散點圖創建圖例的最簡單方法是分割數據,繪製不同的散點圖(或正常圖)並使用'plt.legend()'。 – ImportanceOfBeingErnest

+0

所以我應該回到數據框並分解它,這樣我可以分別繪製每個組? –

+0

這當然是一種選擇。您也可以在下面使用我的答案。 – ImportanceOfBeingErnest

回答

0

假設你已經顏色 colors = ["blue", "red", "green"]名單和地區的名單regions = ["Africa", "America", "Australia"] 您可以創建傳奇句柄的列表,並使用它來創建的傳說:

handlelist = [plt.plot([], marker="o", ls="", color=color)[0] for color in colors] 
plt.legend(handlelist,regions,loc='right') 
+0

感謝您的快速建議,我收到此錯誤消息與您的代碼:「ValueError:to_rgba:無效的rgba arg」羣島「 to_rgb:無效的rgb arg」羣島「 無法將字符串轉換爲float:'islands'' –

+0

我的代碼中沒有「Islands」! – ImportanceOfBeingErnest

+0

ok,它是因爲我的region_colors是一個字典,所以我用region_colors.values()替換了region_colors,但圖例沒有顯示任何內容,它只是一個白色方塊 –

相關問題