更改主图标图例标签文本

N.K*_*.K. 32 python label matplotlib legend pandas

到目前为止,我已经能够很好地标记子图,但我遇到了主要问题.

这是我的代码的相关部分:

data_BS_P = data[channels[0]]
data_BS_R = data[channels[1]]
data_BS_Y = data[channels[2]]
plot_BS_P = data_BS_P.plot() #data_BS_P is a pandas dataframe
axBS = plot_BS_P.gca()
axBS.plot(data_BS_R, label='Roll')
axBS.plot(data_BS_Y, label='Yaw')
axBS.set_ylabel('Amplitude (urad)')
axBS.legend(loc='upper center', bbox_to_anchor=(0.5, 1.05), ncol=3,
            fancybox=True, shadow=True)
ml1 = MultipleLocator(10)
ml2 = MultipleLocator(3600)
axBS.yaxis.set_minor_locator(ml1)
axBS.xaxis.set_minor_locator(ml2)
plot_BS_P.save('L1-SUS-BS_M1_DAMP_PRY_INMON.jpg')
Run Code Online (Sandbox Code Playgroud)

这就是我到目前为止所拥有的: 在此输入图像描述 注意蓝线的冗长标签.我希望将其标记为"Pitch"而不是文件名.我可以在哪一行?

ksi*_*ndi 59

其他方式:

ax.legend(labels=mylabels)
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止,这是我用例中最简单的方法.谢谢. (7认同)
  • 当在用 seaborn 制作的箱线图上使用时,这打破了图例补丁颜色。 (6认同)
  • 同样,如果未明确定义斧头,则当然为plt.legend(labels = my_labels),其中my_labels是列表。 (2认同)

CT *_*Zhu 54

您需要获取legend()对象的访问权并使用set_text()更改文本值,这是一个简单的示例:

plt.plot(range(10), label='Some very long label')
plt.plot(range(1,11), label='Short label')
L=plt.legend()
L.get_texts()[0].set_text('make it short')
plt.savefig('temp.png')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在您的情况下,您正在更改图例中的第一项,我非常确定0索引L.get_texts()[0]也适用于您的问题.


ang*_*nio 7

为了避免在使用seaborn绘图时弄乱图例键的颜色和标记大小:

handles, previous_labels = ax.get_legend_handles_labels()
ax.legend(handles=handles, labels=new_labels)
Run Code Online (Sandbox Code Playgroud)