Seaborn Swarmplot сгруппированных данных - PullRequest
0 голосов
/ 10 декабря 2018

Когда у меня есть датафрейм, мне нравится вот это:

import pandas as pd
import seaborn as sns
import random

random.seed(0)

df = pd.DataFrame({"Data":[random.random() for i in range(100)], "Cluster":[random.randint(0,10) for i in range(100)]})

Я могу легко построить кластеры с морским рождением в виде коробок:

sns.boxplot(df["Data"], groupby=df["Cluster"])

Что дает мне что-то вроде этого: enter image description here

К сожалению, у seaborn swarmplot нет ключевого слова groupby.Итак, как я могу убедительно представить этот кадр данных как сгруппированные swarmplots?Я хочу такую ​​же цифру, как показано только для Swarmplots вместо Boxplots.Я играл с самим объектом groupby:

df.groupby(by="Cluster")

До сих пор я не мог убедить Морского Рога принять его.

1 Ответ

0 голосов
/ 10 декабря 2018

Я не думаю, что вам нужно groupby - вы просто хотите указать кластер как значение x, а данные как y:

sns.swarmplot(data=df, x="Cluster", y="Data")

Дает вам:

swarm plot in seaborn

Однако, если у вас есть еще одна категория, которую вы хотите закрасить, например,

df = pd.DataFrame({"Data":[random.random() for _ in range(100)],
                   "Cluster":[random.randint(0,10) for _ in range(100)],
                   "Category": [random.choice(("A", "B")) for _ in range(100)]})

Затем вы можете использовать аргумент hueвот так:

sns.swarmplot(data=df, x="Cluster", y="Data", hue="Category")

и получим:

swarm plot with categories

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...