Проблема с упорядочением категорий Seaborn PointPlot

#python #seaborn

#python #seaborn

Вопрос:

Я пытался использовать pointplot в Seaborn, и в целом он делает то, что мне нужно, и я очень впечатлен функциональностью.

Мой вариант использования довольно стандартный:

 sns.pointplot(x="Category_1", y="Parameter", hue="Category 2", data=df);
  

Моя проблема в том, что категория, которую я использую для оттенка, содержит строки в форме:

 "1 string1", "2 string2", "3 string3", etc....
  

Это сделано специально, чтобы я мог получить определенный порядок при сортировке. Однако, когда я запускаю функцию Seaborn, порядок отличается.

По какой логике Seaborn упорядочивает это, и есть ли способ принудительно установить желаемый порядок. Если я сделаю:

 A = df.Category2.unique()
A.sort()
  

Я получаю тот порядок списка, который я хочу.

Ben

Ответ №1:

Как объясняется в руководстве, функции категориального построения графика следуют набору правил для определения порядка элементов графика:

  • Если в order параметр передается последовательность категорий, используется этот порядок.
  • Если переменной является pandas Categorical с присвоенным порядком категорий, используется этот порядок.
  • Если переменная числовая, значения отображаются в отсортированном порядке
  • В противном случае значения отображаются в том порядке, в котором они отображаются во фрейме данных.