猿问

如何在 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.


一只名叫tom的猫
浏览 372回答 3
3回答

三国纷争

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()结果:

摇曳的蔷薇

在您的情况下, 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()
随时随地看视频慕课网APP

相关分类

Python
我要回答