Как построить неквадратную совместную диаграмму Seaborn или JointGrid

Я пытаюсь построить свои несимметричные данные, используя Seaborn JointGrid. Я могу заставить его использовать одинаковое соотношение сторон, но тогда у меня есть нежелательные пробелы:

Совместный график тепловых карт Seaborn 2D с дополнительными пробелами

Как убрать прокладку? Документация для jointplot и JointGrid просто скажите

размер : числовой, необязательный

Размер фигуры (она будет квадратной).

Я также пытался скормить extent kwarg как для совместного заговора, так и для JointGrid, а также ylim безуспешно.

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
x = np.random.normal(0.0, 10.0, 1000)
y = np.random.normal(0.0, 1.0, 1000)
joint = sns.jointplot(x, y)
joint.plot_marginals(sns.distplot, kde=False)
joint.ax_joint.set_aspect('equal')  # equal aspect ratio
plt.show() 

person crypdick    schedule 28.04.2015    source источник
comment
Ваша проблема с соотношением сторон фигуры или шестигранных ячеек?   -  person mwaskom    schedule 28.04.2015
comment
Привет @mwaskom, сама фигурка. Я хотел бы избавиться от заполнения и сделать его неквадратным, так как мои данные - мои координаты не квадратные.   -  person crypdick    schedule 01.05.2015
comment
Я бы предложил просто настроить фигуру самостоятельно, используя команды matplotlib.   -  person mwaskom    schedule 02.05.2015


Ответы (3)


Сам наткнулся на этот вопрос в поисках ответа. Разобравшись, я решил опубликовать решение. Поскольку код jointplot кажется весьма настаивающим на квадрате фигуры, я не знаю, считается ли это плохой практикой, но в любом случае...

Если мы просматриваем код jointplot и следуем ему в JointGrid, параметр size для jointplot (и в равной степени JointGrid) используется в следующем выражении:

f = plt.figure(figsize=(size, size))
# ... later on
self.fig = f

Итак, чтобы получить неквадратную JointGrid диаграмму, просто запустите:

grid = sns.jointplot(...)
grid.fig.set_figwidth(6)
grid.fig.set_figheight(4)
grid.savefig("filename.png", dpi=300)

для фигуры 6х4.

person karihre    schedule 17.08.2016

Для тех, кто использует Seaborn в блокноте Jupyter, я предлагаю вызывать set_figwidht() и set_figheight() сразу после команды sns.jointplot().

my_plot=sns.jointplot(x="K",y="errori",data=risultati , kind="scatter")
my_plot.fig.set_figwidth(13)

Пример Jupyter

person gmmarcilli    schedule 24.05.2018

Вам нужно будет установить параметры ylim и xlim, которые ограничат оси x и y указанными вами диапазонами кортежей:

e.g.

sns.jointplot(x="n_estimators", y="learning_rate", data=data,
              color="#172235", height=8, ratio=10, space=0,
              ylim=(0, 1.1), xlim=(-20, 310))  # <-- this

person Adam Salma    schedule 31.12.2019