Построение цветных линий, соединяющих отдельные точки данных двух скоплений - PullRequest
0 голосов
/ 03 июля 2018

у меня есть:

import numpy as np
import pandas as pd
import seaborn as sb
import matplotlib.pyplot as plt

# Generate random data
set1 = np.random.randint(0, 40, 24)
set2 = np.random.randint(0, 100, 24)

# Put into dataframe and plot
df = pd.DataFrame({'set1': set1, 'set2': set2})
data = pd.melt(df)
sb.swarmplot(data=data, x='variable', y='value')

The two random distributions plotted with seaborns swarmplot function

Два случайных распределения, построенные с помощью функции Swarmplot Seaborns

Я хочу, чтобы отдельные графики обоих распределений были связаны цветной линией так, чтобы первая точка данных набора 1 в кадре данных была связана с первой точкой данных набора 2. Я понимаю, что это, вероятно, было бы относительно просто без seaborn, но я хочу сохранить особенность, что отдельные точки данных не перекрываются. Есть ли какой-нибудь способ получить доступ к отдельным координатам участка в морском рое?

1 Ответ

0 голосов
/ 03 июля 2018

Конечно, это возможно (но вы действительно не хотите).

seaborn.swarmplot возвращает экземпляр оси (здесь: ax). Вы можете схватить детей ax.get_children, чтобы получить все элементы сюжета. Вы увидите, что для каждого набора точек есть элемент типа PathCollection. Вы можете определить координаты x, y, используя метод PathCollection.get_offsets().

Я не советую вам делать это! Безумие лежит таким образом.

Я предлагаю вам взглянуть на исходный код ( найден здесь ), и получить свой собственный _PairedSwarmPlotter из _SwarmPlotter и изменить метод draw_swarmplot для своих нужд.

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