我正在使用Seaborn的lmplot绘制线性回归,将我的数据集分为两个类别变量。
对于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,)
如何在FacetGrid中为每个图访问xlim和ylim?
numpy.random
模块,则可以节省大量时间来生成随机数据(这可能是非常有用的事情!)。例如,你可以得到base_x
和base_y
使用base_x = np.random.rand(n); base_y = base_x * 2
。所述y
变量可以然后用矢量操作来类似地产生。