Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib设置图例的颜色_Python_Matplotlib_Plot - Fatal编程技术网

Python matplotlib设置图例的颜色

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)

我正在使用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)表示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])
请编辑您的答案,并附上关于将每个簇中的所有点标绘在一起的注释,我将接受。