#python #seaborn
#python #seaborn
Вопрос:
У меня есть анализ только с 3 значениями в dataframe, которые установлены для параметра relplot «hue», но seaborn отображает некоторую легенду оттенка автодиапазона с пятью значениями. Как я могу указать точные значения?
sns.relplot(x='x', y='y',
hue = 'hue', style='style',
kind='scatter', size = 'size',
data=df2)
size style hue col y x
8 3.717546 1:1 50 715 1.930280e 06 4.932825e 06
24 7.165478 1:2 50 715 1.712680e 06 7.112875e 06
40 5.357067 2:1 50 715 1.148624e 06 2.494125e 06
56 2.758713 1:1 50 715 1.766268e 06 3.196175e 06
72 3.402869 1:2 50 715 9.385742e 05 4.046025e 06
88 3.160937 2:1 50 715 9.856859e 05 1.585155e 06
104 4.094309 1:1 250 715 8.416346e 06 7.944250e 07
120 39.287651 1:2 250 715 6.217049e 06 1.352370e 08
132 1.625882 1:1 5 715 5.055178e 04 5.062150e 04
148 35.241220 2:1 250 715 6.171461e 06 4.046025e 07
164 2.071234 1:1 250 715 6.038509e 06 2.697350e 07
180 13.498847 1:2 250 715 4.636012e 06 4.951300e 07
196 9.499857 2:1 250 715 4.012017e 06 1.322810e 07
212 4.166135 1:1 5 1545 6.218541e 05 6.244550e 05
228 4.979377 1:2 5 1545 6.864812e 05 7.316100e 05
244 4.127152 2:1 5 1545 3.558532e 05 3.565675e 05
257 2.516927 1:2 5 715 5.884268e 04 5.893525e 04
271 4.942125 1:1 5 1545 4.836641e 05 4.840450e 05
итак, есть 3 разных значения для «style», «hue» и «col», и в легенде показаны значения, которые никогда не появлялись в df2, по крайней мере, я хотел бы исправить легенду оттенка для этих значений: [5, 50, 250]
Комментарии:
1. Привет, @dvulin, я бы предложил добавить больше деталей к вашему вопросу. В настоящее время это не позволяет читателю понять вашу проблему. Попробуйте сопоставить то, что вы сделали, то, что вы получили, с тем, что вы ожидали.
2. Я получаю
[5, 50, 250]
значение оттенка при запуске кода, потому что в образце всего 3 значения.
Ответ №1:
В вашем случае seaborn
считает, что оттенок является непрерывной переменной. Вам нужно это изменить. Один из способов — изменить фрейм данных, например, преобразовав столбец оттенков в строки.
df['hue'] = df['hue'].map(lambda x: str(x))
В качестве альтернативы можно принудительно seaborn
обрабатывать «оттенок» как категориальную случайную величину напрямую (но, по моему опыту, это приводит к сбоям). Пожалуйста, вставьте в relplot
ключевые слова.
hue_order = np.unique(df['hue'])
Комментарии:
1. спасибо, (я пробовал что-то похожее на «глючный» пример, т.Е. Я жестко запрограммировал hue_order = [5, 50, 250]), но, похоже, это не работает
2. Извините за это. Вот почему я называю это глючным 🙂 Первый метод работает в любом случае.