Гистограмма Сиборна использует странные ограничения по оси y?

#python #plot #seaborn

Вопрос:

Я перебираю все столбцы моего df, чтобы построить их плотности, чтобы увидеть, нужно ли и как мне преобразовать/нормализовать мои данные. Я использую Seaborn и этот код:

 fig, axes = plt.subplots(nrows=n_rows, ncols=n_cols, figsize=(16,40))
fig.tight_layout() #othwerwise the plots overlapped each other and I couldn't see the column names

for i, column in enumerate(df.columns):
    sns.histplot(df[column],ax=axes[i//n_cols,i%n_cols], kde=True, legend=True, fmt='g')
 

Это приводит к в основном нормальному графику, однако масштабирование оси y в некоторых случаях слишком велико:

введите описание изображения здесь

Города 3 и 4 просто прекрасны, однако самый высокий Count показатель для города 4 составляет около 200, однако график масштабируется до 10 000, что затрудняет интерпретацию данных. Ось x также выходит далеко за рамки того, где она должна быть, так как самая высокая стоимость составляет около 1000000, но график продолжается до 25000000. Когда я строю City 4 отдельно и заставляю ylim 200 и xlim 1000000, я получаю гораздо более понятный сюжет:

введите описание изображения здесь

Почему ось y (и на самом деле ось x также) масштабируется так странно, и как я могу изменить свой код, чтобы уменьшить его, чтобы я не получал ylim намного больше, чем фактически отображаемые данные?

Спасибо!

Ответ №1:

Установите shared_yaxis в False положение .

Это позволит построить подзаголовки в соответствующих максимальных точках соответствующих данных.

Пример:

 fig, axes = plt.subplots(nrows=n_rows, ncols=n_cols, figsize=(16,40), sharey=False)
 

Комментарии:

1. Я изменил свой код, на fig, axes = plt.subplots(nrows=n_rows, ncols=n_cols, figsize=(16,40), sharey=False, sharex=False) который это никак не повлияло… Что я здесь упускаю?

2. Предоставление запроса с образцами данных было бы полезно для воссоздания проблемы. Тогда решение будет проще предоставить.