Matplotlib图例需求:移除图例手柄,仅保留带色标签
解决Matplotlib图例仅保留带颜色标签文本的问题
你可以通过两种方式移除图例手柄,只保留带对应颜色的标签文本:
方法一:使用空色块生成无手柄图例
创建完全透明的色块作为图例手柄,让图例仅显示标签文本,再设置文本对应颜色:
import matplotlib.pyplot as plt from matplotlib.patches import Patch # 假设my_data、my_labels、label2color为已定义变量 fig, axes = plt.subplots() # 绘制所有数据点 for x, y, c in my_data: axes.plot(x, y, color=c) # 创建无可见效果的色块作为手柄 handles = [Patch(facecolor="none", edgecolor="none") for _ in my_labels] # 生成图例 legend = axes.legend(handles=handles, labels=my_labels, loc="best") # 设置每个标签的对应颜色 for text in legend.get_texts(): text.set_color(label2color[text.get_text()]) plt.show()
方法二:隐藏现有图例的手柄
直接将图例默认生成的手柄设置为不可见,仅保留文本部分:
import matplotlib.pyplot as plt # 假设my_data、my_labels、label2color为已定义变量 fig, axes = plt.subplots() # 绘制所有数据点 for x, y, c in my_data: axes.plot(x, y, color=c) # 生成图例 legend = axes.legend(loc="best", labels=my_labels) # 隐藏所有手柄 for handle in legend.get_handles(): handle.set_visible(False) # 设置标签文本颜色 for text in legend.get_texts(): text.set_color(label2color[text.get_text()]) plt.show()
两种方法都能实现需求:第一种从根源避免生成可见手柄,第二种直接修改已生成的图例元素。
内容的提问来源于stack exchange,提问作者sds
相关产品推荐
相关产品推荐

