Seaborn lineplot:如何将误差带边缘线型与主线线型相匹配

Seaborn lineplot: how to match error band edge linestyle to main line linestyle

我正在使用 Seaborn 制作带有误差带的线图,指示测量值的完整分布并使用 Style 分组变量。由于绘制的组重叠,误差带属于哪条主线并不完全清楚

我想通过将错误带边缘的线型与主线的线型相匹配来使这一点更清楚,但找不到解决方法。

plot demonstrating grouping variables (see plot here) on Seaborns Lineplot instructional page也说明了这个问题。通过输入两个不同的线型关键字 err_kws={'linestyle': [(0,(1,1)),'solid']} 全等分组变量特定的主线线型定义 dashes={'cue':(), 'stim':(1,1)} (在下面的代码块中)我试图调整误差带边缘线型,但第一个列出的线型调整随后应用于所有误差带边缘,而第二个列出的误差带线型规范保持未使用。

fmri = sns.load_dataset("fmri")
sns.relplot(data=fmri, x="timepoint", y="signal", size="region", style="event",
         dashes={'cue':(), 'stim':(1,1)}, err_kws={'linestyle': [(0,(1,1)),'solid']},
         kind="line")

我想要 the groups with solid main line with solid error band edge (see plot here), while the groups with dotted main line should have a dotted error band edge (see plot here).

我还尝试调用主线样式变量 kws["dashes"],它是在 Seaborns 代码中为关系图定义的(relational.py,行513-518),通过传递 err_kws={'linestyle': 'kws["dashes"]',但这也不起作用。

if "style" in sub_vars:
            attributes = self._style_map(sub_vars["style"])
            if "dashes" in attributes:
                kws["dashes"] = attributes["dashes"]
            if "marker" in attributes:
                kws["marker"] = attributes["marker"]

是否可以在 Seaborn 线图中将误差带线型基于主线线型?

我终于设法绘制出我希望数字与代码的关系

ax = plt.gca()
for poly, line in zip(ax.collections, ax.lines):
    plt.setp(
        poly,
        linewidth=line._linewidth,
        linestyle=(
            0.0,
            (
                None
                if line._dashSeq is None
                else (np.array(line._dashSeq) / (line._linewidth)).tolist()
            ),
        ),
    )

这是最后的情节