首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何枚举margin_titles并将其添加到海运lmplot中的每个子图中?

如何枚举margin_titles并将其添加到海运lmplot中的每个子图中?
EN

Stack Overflow用户
提问于 2021-11-07 18:03:02
回答 1查看 277关注 0票数 1

我有以下附件:

首先,我想简化每个子图的标题,使之只具有语料库={语料库名称}。

我正在使用lmplot生成这些图,如

代码语言:javascript
运行
复制
g=sns.lmplot('x', 'y', data=test_plot, col='corpus', hue = 'monotonicity', row='measure', sharey=True, sharex=True, height=2.5,aspect=1.25, truncate=False, scatter_kws={"marker": "D", "s": 20})

g=(g.set_axis_labels("Max-Min (measure)", "Max-Min (comp measure)")
        .set(xlim=(0, 1), ylim=(-.1, 1))
        .fig.subplots_adjust(wspace=.02))

我希望使用facetgrid margin_title选项将度量值放在右y轴上,但获取lmplot() got an unexpected keyword argument 'margin_titles'

然后,我尝试使用facetgrid,如下所示:

代码语言:javascript
运行
复制
p = sns.FacetGrid(data = test_plot,
                           col = 'corpus',
                           hue = 'monotonicity',
                           row = 'measure',
                           margin_titles=True)
    

p.map(sns.lmplot, 'diff_', 'score_diff',  data=test_plot, he='monotonicity', truncate=False, scatter_kws={"marker": "D", "s": 20})

但是,我得到了一个关于lmplot() got an unexpected keyword argument 'color'的错误(无法弄清楚为什么要抛出这个错误)。

我的第二个问题是,我想在每个子图的标题中添加一个字母/枚举,就像在(a), ..., (i)中一样,但是对于我的一生来说,我不知道如何做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-08 00:44:56

由于您的自定义需求,请考虑在运行FacetGrid后遍历lmplot的所有轴。关于您的特定错误,seaborn.lmplot是一个FacetGrid,因此如果在第二次尝试中嵌套在另一个FacetGrid中,则会发生冲突。另外,在下面的解决方案中,不要将g重新分配给返回NoneType的轴设置。

代码语言:javascript
运行
复制
#... SAME lmplot ...

(
  g.set_axis_labels("Max-Min (measure)", "Max-Min (comp measure)")
   .set(xlim=(0, 1), ylim=(-.1, 1))
   .fig.subplots_adjust(wspace=.02)
)

alpha = list('abcdefghijklmnopqrstuvwxyz')
axes = g.axes.flatten()

# ADJUST ALL AXES TITLES
for ax, letter in zip(axes, alpha[:len(axes)]):
    ttl = ax.get_title().split("|")[1].strip()   # GET CURRENT TITLE
    ax.set_title(f"({letter}) {ttl}")            # SET NEW TITLE

# ADJUST SELECT AXES Y LABELS
for i, m in zip(range(0, len(axes), 3), test_plot["measure"].unique()):
    axes[i].set_ylabel(m)

输入(用于演示的纯粹随机数据)

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd

np.random.seed(1172021)

test_plot = pd.DataFrame({
    'measure': np.random.choice(["precision", "recall", "F1-score"], 500),
    'corpus': np.random.choice(["Fairview", "i2b2", "MiPACQ"], 500),
    'monotonicity': np.random.choice(["increasing", "non", "decreasing"], 500),
    'x': np.random.uniform(0, 1, 500),
    'y': np.random.uniform(0, 1, 500)
})

输出

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69875186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档