【问题标题】:Remove white border from dots in a seaborn scatterplot从 seaborn 散点图中的点中删除白色边框
【发布时间】:2020-10-24 05:13:21
【问题描述】:

seaborn 的scatterplot 产生带有小白边的圆点。如果有几个重叠的点,这是有帮助的,但是一旦有很多重叠的点,它就变得不切实际了。白边怎么去掉?

import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
ax = sns.scatterplot(x="total_bill", y="tip", data=tips)

【问题讨论】:

  • ax = sns.scatterplot(..., color='b', edgecolor='b')。你也可以试试... edgecolor='none'),但是你不会得到抗锯齿的圆圈,所以它们看起来不太平滑。 `
  • 据我了解,如果使用edgecolor参数,使用edgecolor = 'face'(如item face color)更容易,好像需要改变颜色,你不需要改变边缘颜色参数。

标签: python matplotlib layout seaborn


【解决方案1】:

linewidth = 0代替边缘颜色:

import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
ax = sns.scatterplot(x="total_bill", y="tip", data=tips, linewidth=0)

【讨论】:

  • 接受这个答案的原因是因为我喜欢彩色点在视觉上不会将它们的大小增加到边缘线的外部边界的事实。所以结束linewidth=0 留下白色填充,edgecolor=None 显然用点的颜色替换了边缘颜色。根据读者的需要,edgecolor=None 可能是有利的。
  • @fabianegli 请注意,您需要edgecolor='none' 才能忽略边缘。没有引号edgecolor=None 表示:“采用默认颜色(等于面部颜色)”。没有边缘,点看起来不太平滑,因此您可能需要选择较窄的线宽和较小的点大小来补偿视觉尺寸的略微增加。
【解决方案2】:

如果您检查 searbon documentation,它接受 matplotlib 关键字(在 seaborn 函数的文档中列出的 kwargs),因此,您可以通过 @Allan Bruno edgecolor = 'none'edgecolor = None 的建议(单数,而不是 'edgecolors '),或linewidth = 0

输出:

【讨论】:

    【解决方案3】:

    尝试将参数edgecolor='none'edgecolor=None 传递给sns.scatterplot()

    【讨论】:

    • edgecolor 对我有用,但 edgecolors 不行,很有趣