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

新手上路,请多包涵

我试图使用 seaborn 绘图,但标签没有显示,即使它是在轴对象中分配的。

如何在图上显示标签?

这是我的代码:

 import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

dx = 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.

原文由 BhishanPoudel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 994
2 个回答

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

如果硬要图例,建议不要用sns。相反,尝试使用 pandas 的 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()

原文由 zyxue 发布,翻译遵循 CC BY-SA 4.0 许可协议

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()

结果:

在此处输入图像描述

原文由 chryss 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题