我有以下附件:

首先,我想简化每个子图的标题,使之只具有语料库={语料库名称}。
我正在使用lmplot生成这些图,如
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,如下所示:
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)中一样,但是对于我的一生来说,我不知道如何做到这一点。
发布于 2021-11-08 00:44:56
由于您的自定义需求,请考虑在运行FacetGrid后遍历lmplot的所有轴。关于您的特定错误,seaborn.lmplot是一个FacetGrid,因此如果在第二次尝试中嵌套在另一个FacetGrid中,则会发生冲突。另外,在下面的解决方案中,不要将g重新分配给返回NoneType的轴设置。
#... 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)输入(用于演示的纯粹随机数据)
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)
})输出

https://stackoverflow.com/questions/69875186
复制相似问题