I'm using sns.lmplot
to plot a linear regression, dividing my dataset into two groups with a categorical variable.
For both x and y, I'd like to manually set the lower bound on both plots, but leave the upper bound at the Seaborn default. Here's a simple example:
import pandas as pd
import seaborn as sns
import numpy as np
n = 200
np.random.seed(2014)
base_x = np.random.rand(n)
base_y = base_x * 2
errors = np.random.uniform(size=n)
y = base_y + errors
df = pd.DataFrame({'X': base_x, 'Y': y, 'Z': ['A','B']*(100)})
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)
This outputs the following:
But in this example, I'd like the xlim and the ylim to be (0,*) . I tried using sns.plt.ylim and sns.plt.xlim but those only affect the right-hand plot. Example:
sns.plt.ylim(0,)
sns.plt.xlim(0,)
How can I access the xlim and ylim for each plot in the FacetGrid?
The
lmplot
function returns aFacetGrid
instance. This object has a method calledset
, to which you can passkey=value
pairs and they will be set on each Axes object in the grid.Secondly, you can set only one side of an Axes limit in matplotlib by passing
None
for the value you want to remain as the default.Putting these together, we have:
Update
sharex
andsharey
are deprecate beginning inseaborn 0.11