如何使Swarmplot(Seaborn)中的点彼此重叠?

时间:2018-10-22 16:13:09

标签: python python-3.x matplotlib data-visualization seaborn

我和seaborn一起制作了一个小品,但是我似乎找不到使点彼此重叠的选项。

它们彼此重叠,但仅在侧面重叠。

我希望它们在无法容纳时在各处重叠,但现在它们仅在侧面重叠。

data = sns.load_dataset('iris')
sns.swarmplot(data=data, y="sepal_length", x="species", edgecolor="black",alpha=.5, s=15,linewidth=1.0)

enter image description here

2 个答案:

答案 0 :(得分:2)

我认为不可能让标记与swarmplot故意重叠。当然,如果需要的话,较小的标记根本不会重叠。

否则,一个容易破解的说法就是利用seaborn对特定图形尺寸的标记之间的距离进行硬编码这一事实。因此,当在一个巨大的图形上绘制时,没有重叠发生,但随后使图形变小之后, ,overlapp应该会很高。

import seaborn as sns
import matplotlib.pyplot as plt

data = sns.load_dataset('iris')
fig, ax = plt.subplots(figsize=(19,4.8))
sns.swarmplot(data=data, y="sepal_length", x="species", 
                   edgecolor="black",alpha=.5, s=15,linewidth=1.0, ax=ax)
fig.set_size_inches(6.4,4.8)

plt.show()

enter image description here

在这里,您需要为figsize找到合适的值,以便对结果感到满意。

答案 1 :(得分:1)

您也可以使用stripplot代替swarmplot。据我所知,swarmplot的全部要点类似于stripplot的输出,但要点不要重叠。

data = sns.load_dataset('iris')
sns.stripplot(data=data, y="sepal_length", x="species", edgecolor="black",alpha=.5, s=15,linewidth=1.0)

enter image description here

此外,您可以使用the jitter= keyword

控制重叠量