我用3种不同的颜色制作了散点图,我想匹配符号的颜色和图例中的文本。
一个很好的solution存在于线图的情况:
leg = ax.legend()
# change the font colors to match the line colors:
for line,text in zip(leg.get_lines(), leg.get_texts()):
text.set_color(line.get_color())
然而,散点图颜色不能通过get_lines()
访问。对于3种颜色的情况,我想我可以手动设置文本颜色一个接一个地使用例如。text.set_color('r')
.但我很好奇它是否可以自动作为行完成。谢谢!
2条答案
按热度按时间ztyzrc3y1#
散点图有面色和边色。散点的图例处理程序是
PathCollection
。因此,您可以在图例手柄上循环并将文本颜色设置为图例手柄的facecolor
完整代码:
5anewei62#
这看起来很复杂,但确实给予了你想要的东西。欢迎提出建议。我使用
ax.get_legend_handles_labels()
获取标记,使用tuple(handle.get_facecolor()[0])
获取matplotlib颜色元组。用一个非常简单的散点图做了一个例子,像这样:编辑:
正如重要性欧内斯特在他的回答中指出的:
leg.legendHandles
将返回图例句柄;1.列表,而不是tuple,可以用来分配matplotlib颜色。
代码简化为:
我得到的是: