Python matplotlib设置图例的颜色
我正在使用matplot lib生成一个绘图,通过执行以下操作来绘制多个点(~几千个点):Python matplotlib设置图例的颜色,python,matplotlib,plot,Python,Matplotlib,Plot,我正在使用matplot lib生成一个绘图,通过执行以下操作来绘制多个点(~几千个点): labels = [] for item in items: label = item[0] labels.append(label) plt.plot(item[1][0], item[1][1], 'ro', c = colors[item], label = str(label)) 然后通过执行以下操作生成图例: plt.legend([str(x)
labels = []
for item in items:
label = item[0]
labels.append(label)
plt.plot(item[1][0], item[1][1], 'ro', c = colors[item], label = str(label))
然后通过执行以下操作生成图例:
plt.legend([str(x)表示np中的x.unique(标签)])
但是,对于图例中的每个标签,相应的颜色是相同的(而不是绘图中的颜色)。有没有办法手动设置图例的颜色
我附上了一个样本图来说明这个问题。
--编辑--
正如一些人建议的那样,仅仅调用plt.legend()
,似乎并不能解决我的问题,它会为每个点添加一个图例条目。有关示例输出,请参见下图:
这应该可以:
labels = []
for item in items:
label = item[0]
plt.plot(item[1][0], item[1][1], 'o', c=colors[item], label=str(label))
plt.legend()
如果在创建艺术家时直接指定标签(在调用
plot
中),则只需调用plt.legend()
,而无需参数。它将遍历当前轴中的艺术家并使用他们的标签。这样,图例中的颜色将与绘图中的颜色匹配。您还可以创建假线标记,并将其用作图例条目:
markers = [plt.Line2D([0,0],[0,0], color=color[item], marker='o', linestyle='') for item in np.unique(items)]
plt.legend(markers, np.unique(labels), numpoints=1)
您可以在中看到完整的示例
请注意,我还没有对此进行测试,您可能需要根据实际数据集调整
np.unique(items)
color
被认为是一个为您的项目提供颜色的字典。只需使用plt.legend()
。它将找到您在调用plot
时设置的标签。我编辑了显示我在执行此操作时得到的响应的问题。基本上,它为每个点添加了一个图例条目哦,你不应该单独绘制每个点!这是非常低效的。对于每个集群,收集所有点并在一次调用中绘制它们,以plt.plot
?你能举个例子吗。现在项
只是一个元组列表(标签[x,y])
请编辑您的答案,并附上关于将每个簇中的所有点标绘在一起的注释,我将接受。