seaborn 线图:图例中缺少标记符号

seaborn lineplot: marker symbols missing on legend

我有一个带有标记符号“o”的 seaborn 线图(所有系列都应使用相同的符号)。适用于图表,但图例中缺少标记符号(见屏幕截图)。我怎样才能让它出现?

代码:

import seaborn as sns
fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal", hue="event", marker="o")

输出:

评论者提供的评论都解决了我的问题,但结果略有不同。为了其他用户的利益,这些差异如下所示。

解决方案一: 这里的标记在每个系列的图例中出现两次。

代码:

import seaborn as sns
fmri = sns.load_dataset("fmri")
ax=sns.lineplot(data=fmri, x="timepoint", y="signal", hue="event", marker="o")
for h in ax.legend_.legendHandles: 
    h.set_marker('o')

输出:

解决方案 2a: 这里的标记在每个系列的图例中出现一次。每个系列的线条样式都不同。

代码:

import seaborn as sns
fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal", hue="event", style="event", markers=["o"]*2)

输出:

解决方案 2b: 与解决方案 2a ​​非常相似,但为了使所有线条都采用“实心”样式,添加了以下选项:

dashes=[""]*2

代码:

import seaborn as sns
fmri = sns.load_dataset("fmri")
sns.lineplot(data=fmri, x="timepoint", y="signal", hue="event", style="event", markers=["o"]*2, dashes=[""]*2)

输出: