【问题标题】:Seaborn pairplot: how to change legend label textSeaborn pairplot:如何更改图例标签文本
【发布时间】:2017-03-19 14:33:50
【问题描述】:

我正在用 Python 中的 Seaborn 制作一个简单的配对图,它通过 Pandas DataFrame 中变量的绘图元素的颜色来显示分类变量的不同级别。虽然情节完全符合我的要求,但分类变量是二元的,这使得图例对于不熟悉数据的观众来说毫无意义(类别自然标记为 0 和 1)。

我的代码示例:

g = sns.pairplot(df, hue='categorical_var', palette='Set3')

有没有办法用pairplot改变图例标签文本?或者我应该使用 PairGrid,如果是,我将如何处理?

【问题讨论】:

标签: python python-3.x seaborn


【解决方案1】:

找到了!在这里得到了回答:Edit seaborn legend

g = sns.pairplot(df, hue='categorical_var', palette='Set3')
g._legend.set_title(new_title)

【讨论】:

  • 此代码更改图例标题,而不是图例标签。但是链接的问题确实与标签有关,因此感谢您的链接。
【解决方案2】:

由于您没有提供完整的代码示例,也没有提供模拟数据,所以我将使用我自己的代码来回答。

第一个解决方案

最简单的方法是保留二进制标签以供分析,并创建具有正确名称的列以供绘图。这是我的一个示例代码,你应该抓住这个想法:

def transconum(morph):
    if (morph == 'S'):
        return 1.0
    else:
        return 0.0

CompactGroups['MorphNum'] = CompactGroups['MorphGal'].apply(transconum)

第二种解决方案

另一种方法是覆盖航班上的标签。这是我的一个完美运行的示例代码:

grid = sns.jointplot(x="MorphNum", y="PropS", data=CompactGroups, kind="reg")
grid.set_axis_labels("Central type", "Spiral proportion among satellites")
grid.ax_joint.set_xticks([0, 1, 1])
plt.xticks(range(2), ('$Red$', '$S$')) 

【讨论】:

  • 只是对您的第一个解决方案的评论:可以简化为列表理解CompactGroups['MorphNum'] = [1 if i == True else 0 for i in CompactGroups['MorphGal'] == 'S']
猜你喜欢
  • 2021-06-25
  • 1970-01-01
  • 2023-03-08
  • 2016-10-15
  • 2021-12-09
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多