programing

패싯 그리드의 xlim 및 ylim 설정 방법

muds 2023. 8. 19. 10:56
반응형

패싯 그리드의 xlim 및 ylim 설정 방법

사용 중sns.lmplot범주형 변수를 사용하여 데이터 집합을 두 그룹으로 나누는 선형 회귀 분석을 표시합니다.

x 및 y 모두에 대해 두 그림 모두에 대해 하한을 수동으로 설정하고 상한은 Seaborn 기본값으로 유지하려고 합니다.다음은 간단한 예입니다.

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)

그러면 다음이 출력됩니다.enter image description here

하지만 이 예에서는 xlim과 ylim을 (0,*)로 하고 싶습니다. sns.plt.ylim과 sns.plt.xlim을 사용해 보았지만 오른쪽 그림에만 영향을 미칩니다.예:

sns.plt.ylim(0,)
sns.plt.xlim(0,)

enter image description here

패싯 그리드의 각 플롯에 대한 xlim 및 ylim에 액세스하려면 어떻게 해야 합니까?

lmplot함수는 a를 반환합니다.FacetGrid사례.이 개체의 메서드는 다음과 같습니다.set당신이 통과할 수 있는.key=value쌍을 구성하면 그리드의 각 Axes 개체에 설정됩니다.

두 번째로, matplotlib에서 Axes 한계의 한 면만 설정할 수 있습니다.None기본값으로 유지할 값입니다.

이를 종합하면 다음과 같은 이점이 있습니다.

g = sns.lmplot('X', 'Y', df, col='Z', sharex=False, sharey=False)
g.set(ylim=(0, None))

enter image description here

갱신하다

  • 위치 인수,sharex그리고.sharey다음으로 시작하는 것은 바람직하지 않습니다.seaborn 0.11
g = sns.lmplot(x='X', y='Y', data=df, col='Z', facet_kws={'sharey': False, 'sharex': False})
g.set(ylim=(0, None))

당신은 도끼 자체를 잡아야 합니다.가장 깨끗한 방법은 마지막 행을 변경하는 것입니다.

lm = sns.lmplot('X','Y',df,col='Z',sharex=False,sharey=False)

그런 다음 축 개체(축 배열)를 잡을 수 있습니다.

axes = lm.axes

그런 다음 축 속성을 조정할 수 있습니다.

axes[0,0].set_ylim(0,)
axes[0,1].set_ylim(0,)

작성:

enter image description here

언급URL : https://stackoverflow.com/questions/25212986/how-to-set-the-xlim-and-ylim-of-a-facetgrid

반응형