Я використовую lmplot Seaborn для побудови лінійної регресії, розділяючи свій набір даних на дві групи з категоріальною змінною.
І для x, і для y я хотів би вручну встановити нижню межу для обох графіків, але залишити верхню межу за замовчуванням Seaborn. Ось простий приклад:
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)
Це виводить наступне:
Але в цьому прикладі я хотів би, щоб xlim та ylim мали бути (0, *). Я спробував використовувати sns.plt.ylim і sns.plt.xlim, але вони впливають лише на правий графік. Приклад:
sns.plt.ylim(0,)
sns.plt.xlim(0,)
Як я можу отримати доступ до xlim та ylim для кожної ділянки у FacetGrid?
numpy.random
модулем, ви зможете заощадити багато часу на створення випадкових даних (що може бути дуже корисно зробити!). Наприклад, ви могли б отриматиbase_x
іbase_y
зbase_x = np.random.rand(n); base_y = base_x * 2
. Потімy
змінну можна генерувати аналогічним чином за допомогою векторизованих операцій.