【发布时间】:2022-01-23 06:09:00
【问题描述】:
我有一个包含多列的数据框。我试图在另外两个因素的散点图中添加一个关于性的图例(无色调)。我试图将图例参数传递给 sns.scatterplot() 并由 ax.legend(handles,labels) 手动设置。但是,第一种方法未能显示图例,第二种方法引发 ValueError。
这是我当前的代码
bar=sns.barplot(x=df.loc[:,'Sex'],y=df.loc[:,'Salary'],ax=ax[0])
bar.set(ylim=(10000,30000))
sca=sns.scatterplot(data=df,x=df.loc[:,'yearsinrank'],y=df.loc[:,'Salary'],ax=ax[1])
sca.legend(handles=df.loc[:,'Sex'],labels=['male','female'])
sca.set(ylim=(10000,40000),xlim=(-5,30))
plt.show()
非常感谢!
【问题讨论】:
-
你使用的是 ax.legend 还是 ax[1].legend?为了澄清这种歧义,也许您可以在代码中添加代码(作为注释行)。
-
@SimonHawe 是的。但还是一样的 ValueError:一个系列的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
-
但是图例应该显示什么?您的代码生成一种类型的标记,但您有两个条目。这张地图如何?您的示例输出也与您的代码所暗示的不同。
-
@Mr.T 我已经在 ax[0] 上实现了第一个子图。对于第二个散点图,我有一个包含许多列的数据库。散点图显示了薪水和年限的关系,点和图例的颜色应该代表每个点的性别
-
那么,this answer 建议使用
hue关键字究竟有什么问题。使用随机数据集按预期工作。我建议还显示在散点图中生成两种类型标记的代码。当前代码没有。
标签: python pandas matplotlib seaborn