Как сделать так, чтобы точки в Swarmplot (Seaborn) пересекались друг с другом? - PullRequest
0 голосов
/ 22 октября 2018

Я сделал Swarmplot с 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 голосов
/ 22 октября 2018

Вы также можете использовать 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

Кроме того, вы можете контролировать степень перекрытия, используя ключевое слово jitter=

0 голосов
/ 22 октября 2018

Я не думаю, что возможно позволить преднамеренно перекрывать маркеры с помощью Swarmplot.Конечно, более мелкие маркеры вообще не будут перекрываться, если это желательно.

Еще один хакерский словарь заключается в использовании факта, что Seaborn жестко кодирует расстояние между маркерами для определенного размера фигуры.Следовательно, при построении графика на огромной фигуре, где не происходит перекрытия, но затем уменьшая фигуру после , перекрытие должно быть довольно высоким.

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, чтобы вы были довольны результатом.

...