Масштабирование граней в соответствии с данными и использование максимально доступного пространства с помощью FacetGrid в Seaborn
Я работаю с FacetGrid
пример, представленный здесь, где FacetGrid
Объект инициализируется с помощью фрагмента кода ниже, что приводит к следующему графику.
# Initialize the FacetGrid object
g = sns.FacetGrid(df, row="g", hue="g", height=2, aspect=10, palette=sns.color_palette("Blues", 1))
# Draw the densities in a few steps
g.map(sns.kdeplot, "x", clip_on=False, shade=True, alpha=1, lw=1.5, bw=.2)
g.map(sns.kdeplot, "x", clip_on=False, color="w", lw=2, bw=.2)
g.map(plt.axhline, y=0, lw=2, clip_on=False)
Я добавил метки значений ко всем фасетам, и я хотел бы изменить их еще больше, чтобы масштабировать каждый из фасетов, поскольку у меня есть много случаев, когда значения выходят за пределы максимального пространства фасета, и в некоторых случаях, когда это невозможно чтобы увидеть данные, из-за недостаточно плотных значений. Первая группа наблюдений представлена ниже, и вы можете увидеть, как метки выходят за пределы следующего аспекта, снижая четкость графика.
То, чего я хотел бы добиться, - это отдельное масштабирование каждого фасета с отмеченными значениями и максимальным значением, размещенным в верхней части доступного пространства фасетов.
1 ответ
Я решил это, прокомментировав строку ниже, грани больше не пересекаются:
# Set the subplots to overlap
g.fig.subplots_adjust(hspace=-.25)
Кроме того, следуя предложениям в комментариях, я установил значение в положительное число, чтобы приблизить грани друг к другу, но не вводя перекрытия между метками соседних фасетов. Я нашел значение 0.2
хорошо удовлетворить потребности:
g.fig.subplots_adjust(hspace=.2)
затем sharey=False
аргумент в FacetGrid
конструктор работает. Это выглядит намного чище, но значения не полностью заполняют все доступное пространство, но это, возможно, и предназначено.
g = sns.FacetGrid(df, row="g", hue="g", height=2, aspect=10, sharey=False, palette=sns.color_palette("Blues", 1))