Tôi đang sử dụng lmplot của Seaborn để vẽ một hồi quy tuyến tính, chia tập dữ liệu của tôi thành hai nhóm với một biến phân loại.
Đối với cả x và y, tôi muốn đặt giới hạn dưới theo cách thủ công trên cả hai lô, nhưng để giới hạn trên ở mặc định Seaborn. Đây là một ví dụ đơn giản:
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)
Điều này xuất hiện như sau:
Nhưng trong ví dụ này, tôi muốn xlim và ylim là (0, *). Tôi đã thử sử dụng sns.plt.ylim và sns.plt.xlim nhưng những thứ đó chỉ ảnh hưởng đến cốt truyện bên phải. Thí dụ:
sns.plt.ylim(0,)
sns.plt.xlim(0,)
Làm cách nào tôi có thể truy cập xlim và ylim cho từng ô trong FacetGrid?
numpy.random
mô-đun, bạn có thể tiết kiệm cho mình rất nhiều thời gian tạo ra dữ liệu ngẫu nhiên (đây có thể là một việc rất hữu ích để làm!). Ví dụ, bạn có thể lấybase_x
vàbase_y
vớibase_x = np.random.rand(n); base_y = base_x * 2
. Sau đó,y
biến có thể được tạo tương tự với các hoạt động được vector hóa.