Estou usando o lmplot do Seaborn para traçar uma regressão linear, dividindo meu conjunto de dados em dois grupos com uma variável categórica.
Para xey, gostaria de definir manualmente o limite inferior em ambos os gráficos, mas deixar o limite superior no padrão Seaborn. Aqui está um exemplo simples:
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)
Isso resulta no seguinte:
Mas, neste exemplo, gostaria que xlim e ylim fossem (0, *). Tentei usar sns.plt.ylim e sns.plt.xlim, mas eles afetam apenas o gráfico à direita. Exemplo:
sns.plt.ylim(0,)
sns.plt.xlim(0,)
Como posso acessar xlim e ylim para cada gráfico no FacetGrid?
numpy.random
módulo, poderá economizar muito tempo gerando dados aleatórios (o que pode ser uma coisa muito útil de se fazer!). Por exemplo, você pode obterbase_x
ebase_y
combase_x = np.random.rand(n); base_y = base_x * 2
. Ay
variável pode então ser gerada de forma semelhante com operações vetorizadas.