为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Seaborn 图中显示标签(没有找到带有标签的句柄放在图例中。)?

如何在 Seaborn 图中显示标签(没有找到带有标签的句柄放在图例中。)?

一只名叫tom的猫 2021-09-24 15:58:21
我试图使用 seaborn 进行绘图,但标签没有显示出来,即使它被分配在轴对象中。如何在情节上显示标签?这是我的代码:import numpy as npimport pandas as pdimport matplotlib.pyplot as pltdx = pd.DataFrame({'c0':range(5), 'c1':range(5,10)})dx.index = list('abcde')ax = sns.pointplot(x=dx.index,                y="c0",                data=dx, color="r",                scale=0.5, dodge=True,                capsize=.2, label="child")ax = sns.pointplot(x=dx.index,                y="c1",                data=dx, color="g",                scale=0.5, dodge=True,                capsize=.2, label="teen")ax.legend()plt.show()图例给出了错误: No handles with labels found to put in legend.
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

sns.pointplot()不仅仅用于在同一图中绘制多个数据框属性,而是用于可视化它们之间的关系,在这种情况下,它将生成自己的标签。您可以通过将labels参数传递给ax.legend()(请参阅将图例添加到 Seaborn 点图)来覆盖它们,但是一旦您对图进行了更改,很可能会出现一些混乱。


要使用 seaborn 美学生成您的图,我会这样做:


sns.set_style("white")

fig, ax = plt.subplots()

plt.plot(dx.index, dx.c0, "o-", ms=3,

            color="r", label='child')

plt.plot(dx.index, dx.c1, "o-", ms=3,

            color="g", label='teen')

ax.legend()

结果:

//img1.sycdn.imooc.com//614d858300019d6103620249.jpg

查看完整回答
反对 回复 2021-09-24
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

在您的情况下, ylabel 已设置为c0,因此不需要图例。


如果你坚持传奇,我建议不要使用sns。相反,尝试使用熊猫的 matplotlib 接口


dx = pd.DataFrame({'c0':range(5), 'c1':range(5,10)})

dx.set_index('c0').plot(marker='o', )

或者直接使用 matplotlib 的 API 更灵活


plt.plot(dx.c0, dx.c1, marker='o', label='child')

plt.legend()


查看完整回答
反对 回复 2021-09-24
  • 3 回答
  • 0 关注
  • 371 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信