#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. Предоставление запроса с образцами данных было бы полезно для воссоздания проблемы. Тогда решение будет проще предоставить.