pairplot python pandas seaborn

python - pairplot



Cómo establecer algunos xlim y ylim en Seaborn lmplot facetgrid (2)

La función lmplot devuelve una instancia de FacetGrid . Este objeto tiene un método llamado set , al que puede pasar pares key=value y se establecerán en cada objeto Axes en la cuadrícula.

En segundo lugar, puede establecer solo un lado de un límite de Ejes en matplotlib pasando None para el valor que desea que permanezca como predeterminado.

Juntando esto, tenemos:

g = sns.lmplot(''X'', ''Y'', df, col=''Z'', sharex=False, sharey=False) g.set(ylim=(0, None))

Estoy usando lmplot de Seaborn para trazar una regresión lineal, dividiendo mi conjunto de datos en dos grupos con una variable categórica.

Para ambos, xey, me gustaría establecer manualmente el límite inferior en ambas parcelas, pero dejo el límite superior en el valor predeterminado de Seaborn. Aquí hay un ejemplo simple:

import pandas as pd import seaborn as sns import random n = 200 random.seed(2014) base_x = [random.random() for i in range(n)] base_y = [2*i for i in base_x] errors = [random.uniform(0,1) for i in range(n)] y = [i+j for i,j in zip(base_y,errors)] df = pd.DataFrame({''X'': base_x, ''Y'': y, ''Z'': [''A'',''B'']*(n/2)}) mask_for_b = df.Z == ''B'' df.loc[mask_for_b,[''X'',''Y'']] = df.loc[mask_for_b,] *2 sns.lmplot(''X'',''Y'',df,col=''Z'',sharex=False,sharey=False)

Esto produce lo siguiente:

Pero en este ejemplo, me gustaría que el xlim y el ylim sean (0, *). Intenté usar sns.plt.ylim y sns.plt.xlim, pero eso solo afecta a la gráfica de la derecha. Ejemplo:

sns.plt.ylim(0,) sns.plt.xlim(0,)

¿Cómo puedo acceder al xlim y al ylim para cada diagrama en FacetGrid?


Necesitas agarrar los ejes ellos mismos. Probablemente la forma más limpia es cambiar tu última fila:

lm = sns.lmplot(''X'',''Y'',df,col=''Z'',sharex=False,sharey=False)

Entonces puedes agarrarte de los objetos de los ejes (una matriz de ejes):

axes = lm.axes

Después de eso puedes ajustar las propiedades de los ejes

axes[0,0].set_ylim(0,) axes[0,1].set_ylim(0,)

Crea: