【发布时间】:2021-02-28 00:46:56
【问题描述】:
使用 Seaborn 散点图,如何将标记设置为空心圆而不是实心圆?
这是一个简单的例子:
import pandas as pd
import seaborn as sns
df = pd.DataFrame(
{'x': [3,2,5,1,1,0],
'y': [1,1,2,3,0,2],
'cat': ['a','a','a','b','b','b']}
)
sns.scatterplot(data=df, x='x', y='y', hue='cat')
我尝试了以下但没有成功;其中大多数不会引发错误,而是会产生与上面相同的图。我认为这些不起作用,因为颜色是使用 hue 参数设置的,但我不确定修复方法是什么。
sns.scatterplot(data=df, x='x', y='y', hue='cat', facecolors = 'none') sns.scatterplot(data=df, x='x', y='y', hue='cat', facecolors = None)sns.scatterplot(data=df, x='x', y='y', hue='cat', markerfacecolor = 'none')sns.scatterplot(data=df, x='x', y='y', hue='cat', markerfacecolor = None)
with sns.plotting_context(rc={"markerfacecolor": None}):
sns.scatterplot(data=df, x='x', y='y', hue='cat')
【问题讨论】:
-
看看这个链接:stackoverflow.com/questions/62778123/… - 在 matplotlib 中实现这一点的标准方法是将 facecolor 设置为 none
-
@MichelGokan 我试过了,但它不适用于 Seaborn:
'PathCollection' object has no property 'markerfacecolor'并且仅使用facecolor='none'或facecolor=None会产生与 OP 中显示的相同的图 -
我认为当
facecolor为“无”时,seaborn 将色调变量映射到边缘颜色是合理的。这需要一些深思熟虑,并且可能比一开始看起来更复杂,但如果你在 github 上提出问题,我会支持它。
标签: python seaborn scatter-plot