Установить условные обозначения seaborn relplot — значения оттенков

#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. Извините за это. Вот почему я называю это глючным 🙂 Первый метод работает в любом случае.