Как мне установить координату X в Swarmplot в Seaborn? - PullRequest
0 голосов
/ 19 марта 2019

Попытка сделать Swarmplot с 3 различными векторами в Seaborn. Я бы хотел, чтобы каждый вектор имел разные координаты х и разные цвета.

К сожалению, во всех уроках есть данные в каком-то формате, для которого я не могу найти объяснение / руководство ... Вот что я получил до сих пор:

#!/usr/bin/env python3
import numpy as np
import matplotlib.pyplot as plt
import seaborn
import pandas as pd

# Create figure
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_ylabel('Evaluations')

colors = [
    'tab:orange',
    'tab:green',
    'tab:red',
]

labels = [
    'Method 2',
    'Method 3',
    'Method 4',
]

data = [
    [1, 2.1, 3.2, 4.5, 3.6, 2.7, 1.4],
    [2.2, 4.7, 5.1, 4.4, 3.8, 5, 3.4],
    [8.4, 7.2, 6.1, 5.4, 8.1, 7.4, 6.8],
]
data = np.array(data).T

df = pd.DataFrame(data, columns=labels)

seaborn.swarmplot(data=df, y='Method 2', color=colors[0])
seaborn.swarmplot(data=df, y='Method 3', color=colors[1])
seaborn.swarmplot(data=df, y='Method 4', color=colors[2])

plt.show()

Это почти работает, но строит все на одной оси:

enter image description here

Кроме того, метка должна быть на оси x, а не на оси y. Уверен, мне здесь не хватает чего-то очень простого. Кто-нибудь? * * 1013

1 Ответ

1 голос
/ 19 марта 2019

попробовать:

df2 = df.melt()

colors = ["orange", "green", "red"]
sns.swarmplot(data=df2, x = 'variable', y='value', palette =colors)
plt.show()
...