2016-09-06 1 views
2

나는 Seaborn을 사용하여 Factor Plot을 만들고 있습니다.Seaborn Factor Plot (Python)의 모든 * 플롯에 x 축 라벨을 추가 할 수 있습니까?

총 4 가지 서브 플롯이 있습니다. (col_wrap =2을 사용하므로 2 개의 서브 플롯이 포함되어 있습니다.) 그리드 하단의 2 개의 서브 그래프에만 x 축 레이블이 있습니다 (기본값이라고 생각합니다).

4 개 플롯 각각에 x 축 레이블이 있도록 팩터 플롯을 구성 할 수 있습니까?

UPDATE (I에 유래 문서 또는이 옵션을 찾을 수 없습니다) :

dataframe : 여기

의 (a 요인 그리드에 4 시계열 그래프를 생성) 코드입니다 (df)는 다음과 같습니다 :

Company  Date  Value 
ABC   08/21/16 500 
ABC   08/22/16 600 
ABC   08/23/16 650 
DEF   08/21/16 625 
DEF   08/22/16 675 
DEF   08/23/16 680 
GHI   08/21/16 500 
GHI   08/22/16 600 
GHI   08/23/16 650 
JKL   08/21/16 625 
JKL   08/22/16 675 
JKL   08/23/16 680 


import matplotlib.pyplot as plt 
import pandas as pd 
import seaborn as sns 

df = pd.read_csv(the_file_name.csv) 

g = sns.factorplot(data=df, 
        x='Date', 
        y='Value', 
        col='Company', 
        col_wrap=2, 
        sharey=False) 
g.set_xlabels('') 
g.set_ylabels('product count') 
g.set_xticklabels(rotation=45) 
plt.show() 

x 축 날짜가 아래쪽 2 개의 플롯에 표시됩니다. X 축 날짜가 상위 2 개의 플롯에도 표시되도록하고 싶습니다.

감사합니다.

+1

당신은 [MCVE] (// stackoverflow.com/help/mcve)을 제공 할 수 있습니까? – tom

+0

재현 가능한 코드를 추가했습니다. 보시고 미리 감사드립니다. – equanimity

+0

'g.fig.get_children()'을 사용하여 개별적으로 수정할 수있는 서브 플로트 목록을 얻으려고 시도하면'jointplot '에서 작동합니다. 예 : 'dir (g.fig.get_children() [0])'을 사용하여 첫 번째 서브 도표의 모든 메소드리스트를 얻으십시오. – Khris

답변

4

seaborn에서이 작업을 수행 할 방법이 확실하지 않지만 matplotlib Axes 인스턴스로 재생할 수 있습니다.

예를 들어 여기서 setp을 사용하여 xticklabelsFacetGrid (g)의 모든 축에 표시하도록 설정합니다. 시보른은 상단 행의 ticklabels을 회전시키지 않으므로 회전도 여기에 설정합니다.

마지막으로 subplots_adjust을 사용하여 진드기 레이블의 공간을 허용하기 위해 서브 플로트 사이의 공간을 늘려 왔습니다.

import matplotlib.pyplot as plt 
import pandas as pd 
import seaborn as sns 
from io import StringIO 

the_file_name = StringIO(u""" 
Company,Date,Value 
ABC,08/21/16,500 
ABC,08/22/16,600 
ABC,08/23/16,650 
DEF,08/21/16,625 
DEF,08/22/16,675 
DEF,08/23/16,680 
GHI,08/21/16,500 
GHI,08/22/16,600 
GHI,08/23/16,650 
JKL,08/21/16,625 
JKL,08/22/16,675 
JKL,08/23/16,680 
""") 

df = pd.read_csv(the_file_name) 

g = sns.factorplot(data=df, 
        x='Date', 
        y='Value', 
        col='Company', 
        col_wrap=2, 
        sharey=False) 
g.set_xlabels('') 
g.set_ylabels('product count') 

for ax in g.axes: 
    plt.setp(ax.get_xticklabels(), visible=True, rotation=45) 

plt.subplots_adjust(hspace=0.3) 

plt.show() 

enter image description here

관련 문제