更改matplotlib中图例中的标记

时间:2018-01-22 22:16:54

标签: python matplotlib

假设您绘制了一组数据:

plt.plot(x,y, marker='.', label='something')
plt.legend()

在显示屏上,您将获得. something,但是如何将其更改为- something,以便图例中显示的标记是一行而不是一个点?

1 个答案:

答案 0 :(得分:2)

解决方案肯定取决于您想要转换标记的标准。手动完成此操作非常简单:

import matplotlib.pyplot as plt

line, = plt.plot([1,3,2], marker='o', label='something')
plt.legend(handles = [plt.plot([],ls="-", color=line.get_color())[0]],
           labels=[line.get_label()])

plt.show()

enter image description here

以自动方式执行相同的操作,即绘图中的每一行都会获得相应的图例句柄,该句柄是相同颜色的行,但没有标记:

import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerLine2D

plt.plot([1,3,2], marker='o', label='something')
plt.plot([2,3,3], marker='o', label='something else')

def update_prop(handle, orig):
    handle.update_from(orig)
    handle.set_marker("")

plt.legend(handler_map={plt.Line2D:HandlerLine2D(update_func=update_prop)})

plt.show()

enter image description here