Не удалось установить порядок строк в seaborn.relplot - PullRequest
0 голосов
/ 21 февраля 2020

Я новичок в python и Seaborn, я использую набор данных из kaggle , теперь я хочу визуализировать данные, это мой код

def add_if_zero(x):
    if (x['stays_in_weekend_nights']+x['stays_in_week_nights'])==0:
        return 1
    else:
        return (x['stays_in_weekend_nights']+x['stays_in_week_nights'])

_data['total_days_of_stay']=_data.apply(lambda x:add_if_zero(x),axis=1)
x_order=['January','February','March','April','May','May','May','August','September','October','November','December']

sns.relplot(x='arrival_date_month',
            y='total_days_of_stay',hue='hotel',
            kind='line',data=_data,height=10,aspect=.9,row_order=x_order)

я получить график, и я хочу, чтобы порядок был от jan-de c, но я получаю случайную переменную по оси x

я попытался передать порядок атрибуту row_order в массиве, а также в формат строки, но кажется, что ничего не работает

в соответствии с документацией

row_order, col_orderlists из строк, необязательный Order для организации строк и / или столбцов в сетке, в противном случае заказы выводятся из объектов данных.

ОБНОВЛЕНИЕ 1:

enter image description here

1 Ответ

0 голосов
/ 24 февраля 2020

Вы можете использовать lineplot(), который возвращает объект matplotlib Axes, который легко настроить. Основная идея c заключается в том, чтобы сначала построить числовой порядок int, а затем добавить метки. Пожалуйста, рассмотрите следующий пример, в котором используется образец набора данных из морского происхождения.

import calendar
import seaborn as sns
import matplotlib.pyplot as plt

# sample dataset
df = sns.load_dataset('flights')

# map month name with numerical order
d = dict((v,k) for k,v in enumerate(calendar.month_name[1:], start=1))
df['month_num'] = df.month.map(d)

# plot
fig, ax = plt.subplots(figsize=(10, 5))
sns.lineplot(x='month_num', y='passengers', data=df, hue='year', ax=ax)
# set xticks position and labels
ax.set_xticks(range(1, len(d)+1))
ax.set_xticklabels(d.keys(), rotation=30)

enter image description here

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