2017-02-11 89 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,但图例没有显示任何内容,它只是一个白色方块 –

相关问题