у меня есть этот панд DataFrame:Seaborn категоричен участок с оттенком от DataFrame строк
>>> print(df)
Channel 0 1 2 3 4 5 6 7
Sample
7d 3.82 4.10 3.86 3.86 3.95 3.65 3.43 3.63
12d 2.97 4.32 3.50 3.58 3.22 3.37 3.58 3.78
17d 4.01 4.04 4.10 3.43 3.76 3.26 3.35 3.48
DO 3.07 3.58 3.14 3.22 3.11 3.09 3.16 3.16
я хочу сделать сюжет, похожий на этот (код sns.swarmplot(df)
):
Но цвета должны быть установлены не для каждого канала (например, для столбца DataFrame), а для каждого образца (например, строки DataFrame). Поэтому каждая «категория» на оси х будет иметь 4 цвета, соответствующие строкам 7d, 12d, 17d и DO.
Есть ли простой способ сделать это в морском море?
EDIT: Я хотел бы добавить, что я попытался с помощью ключевого слова hue
, но он говорит, что требует использование также x
и y
ключевого слова. Согласно this example кажется, что мне нужно создать новый DataFrame со всеми численными значениями в одном столбце и двумя другими столбцами с информацией о семпла и канале. Затем я могу назвать сюжет как sns.swarmplot(x='Channel', y='values', hue='Sample')
. Есть ли более прямой способ, который не связан с созданием дополнительного ad-hoc DataFrame?
EDIT2: После @BrenBarn предложение, я в конечном итоге создание нового "кругленькую" DataFrame с:
dd = []
for sa in df.index:
print(sa)
d = pd.DataFrame(df.loc[sa]).reset_index()
d.columns = ['Channel', 'Leakage']
d['Sample'] = sa
dd.append(d)
ddf = pd.concat(dd)
А потом черчения данные с:
sns.swarmplot(x='Channel', y='Leakage', hue='Sample', data=ddf)
который дает сюжет Я ожидал:
Я надеялся, что существует сказать, чтобы использовать оригинальный формат «2-D table», чтобы сделать график , который является гораздо более компактным и естественным для данных такого типа. Если это возможно, я бы принял ответ;).
Почему бы не перенести ваши данные? Затем вы можете сделать столбец «Channel» и установить его как переменную X. – BrenBarn
Можете ли вы рассказать о том, как создать колонку «Channel» и задать ее как переменную X? – user2304916
Ваше правление подсказывает вам, как это сделать. В общем, чтобы эффективно использовать морские участки, вам нужны ваши данные в «аккуратном» формате, где каждая строка представляет собой одно наблюдение. Вы должны попытаться получить данные в этом формате. Вместо того, чтобы думать об этом как о «дополнительном ad hoc DataFrame», вам следует подумать о том, чтобы сделать этот формат вашим основным, универсальным форматом. – BrenBarn