Ziv*_*iva 4 python plot matplotlib
我创建了一个图例,其中包含两行,如下所示:
是否可以为每行添加标签/标题,当我显示情节时,图例显示为:
Title1: One One One
Title2: Two Two Two
Run Code Online (Sandbox Code Playgroud)
非常感谢您的任何建议!
没有内置选项可在图例中设置行标题。
作为解决方法,您可以在图例前添加第一列,该图例没有句柄,只有标签。
import matplotlib.pyplot as plt
import numpy as np
y = np.exp(-np.arange(5))
markers=["s", "o", ""]
labels =["one", "two"]
fig, ax = plt.subplots()
for i in range(6):
ax.plot(y*i+i/2., marker=markers[i//2], label=labels[i%2])
h, l = ax.get_legend_handles_labels()
ph = [plt.plot([],marker="", ls="")[0]]*2
handles = ph + h
labels = ["Title 1:", "Title 2:"] + l
plt.legend(handles, labels, ncol=4)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这里的主要缺点是,行标题的句柄所在的位置有很多空白。
设置markerfirst=False将使这种情况不那么明显:
如果所有这些都不是一个选择,那么您需要更深入地了解传说。图例由Packer对象组成。然后可以从第一列中识别出这两个打包机,它们占用了空间并将其宽度设置为零
leg = plt.legend(handles, labels, ncol=4)
for vpack in leg._legend_handle_box.get_children()[:1]:
for hpack in vpack.get_children():
hpack.get_children()[0].set_width(0)
Run Code Online (Sandbox Code Playgroud)
现在这应该可以提供所需的行标题