Estoy usando lmplot de Seaborn para trazar una regresión lineal, dividiendo mi conjunto de datos en dos grupos con una variable categórica.
Tanto para x como para y, me gustaría establecer manualmente el límite inferior en ambos gráficos, pero dejar el límite superior en el valor predeterminado de Seaborn. He aquí un ejemplo sencillo:
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 da como resultado lo siguiente:
Pero en este ejemplo, me gustaría que el xlim y el ylim fueran (0, *). Intenté usar sns.plt.ylim y sns.plt.xlim pero esos solo afectan la trama de la derecha. Ejemplo:
sns.plt.ylim(0,)
sns.plt.xlim(0,)
¿Cómo puedo acceder a xlim y ylim para cada gráfico en FacetGrid?
numpy.random
módulo, puede ahorrar mucho tiempo generando datos aleatorios (¡lo que puede ser muy útil!). Por ejemplo, podría obtenerbase_x
ybase_y
conbase_x = np.random.rand(n); base_y = base_x * 2
. Lay
variable se puede generar de manera similar con operaciones vectorizadas.