2017-05-24 13 views
2

저는 python으로 새로운데, 질문을 묻는 그래픽 인터페이스를 만들었습니다. 그러면 그래픽이 다른 창에 표시됩니다.파이썬, tkinter, 같은 하위 플롯에 3 개의 그룹화 된 히스토그램을 그렸습니다.

팬더 라이브러리를 사용하여 큰 csv 파일 작업을하고 있습니다.

내 그래픽 창에서 동일한 서브 플로트에 3 개의 누적 히스토그램을 그릴 때 문제가 있습니다.

세 가지 값, 경고 값 (VA, VI 및 VR), 연도 값 및 위치 값 (PK (유형 : 부동))이 있습니다.

캔버스의 서브 플로트에서 각 위치 및 각 경고 값에 대해 3 개의 누적 막대 그래프를 (연도별로) 플롯해야합니다.

위치별로 정렬 된 세 가지 경고 값을 플롯하기 위해 matplotlib를 사용하려고했지만 그래프에서 몇 년 동안의 표시 방법을 알 수 없습니다. 그래서 다른 방법을 시도했지만 완전히 작동하지 않습니다.

일부 df.groupby.plot을 만들려고했는데, 하나의 누적 막대 그래프를 그렸지만 그 중 3 개를 표시하려는 경우에는 작동하지 않았습니다. 3 가지 히스토그램을 플로팅하는 데는 성공하지만 3 가지 값이있는 위치 만 보여주고 서로 옆에 있지 않고 서로 겹치고 있습니다. 그건 내가 원하는 것이 아니야.

때로는 VI 또는 VR이 없기 때문에 try/except를 넣어 스크립트를 중단하지 않습니다.

알아낼 수 있습니까?

g3m['pk']=[1,1,1,2,2,2,4,4,5,5,5,5,5,5,6,6,10,10,10,12,12,12,12,12,12,12,12] 
g3m['annee']=[2010,2011,2012,2010,2012,2013,2011,2014,2010,2011,2012,2012,2012,2016,2016,2017,2010,2010,2014,2010,2010,2010,2010,2012,2013,2014,2014] 
g3m['class_seuil']=['VA','VA','VA','VA','VA','VA','VA','VA','VA','VA','VA','VI','VR','VI','VI','VA','VI','VI','VR','VA','VA','VI','VI','VA','VI','VR','VA'] 
g3m['type_mesure']=['MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC','MAC'] 

그것은 팬더 DataFrame입니다 : 여기

내가 플롯 할 DF의 exemple입니다. 내 그림의 선언 여기

됩니다 :
지금 여기에 부가 적 줄거리에 플로팅 내 코드입니다

f = Figure(figsize=(15,8), dpi=100) 
f.subplots_adjust(top=0.97,hspace=0.41,left=0.05,bottom=0.08,right=0.91) 
a = f.add_subplot(311) 
c = f.add_subplot(312) 
b = f.add_subplot(313) 

을하고 여기에 줄거리 내 코드입니다 : 당신은

try: 
    g3mVa=pa.DataFrame() 
    g3mVa['pk']=g3m[g3m['class_seuil']=='VA']['pk_decimal_km_m'] 
    g3mVa['annee']=g3m[g3m['class_seuil']=='VA']['annee'] 
    g3mVa['type_mesure']=g3m[g3m['class_seuil']=='VA']['type_mesure'] 

    g3mVa.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,colormap='Greens',y='type_mesure',grid=True,ax=c,rot='horizontal') 
    c.hold(True) 
except: 
    pass 
try: 

    g3mVi=pa.DataFrame() 
    g3mVi['pk']=g3m[g3m['class_seuil']=='VI']['pk_decimal_km'] 
    g3mVi['annee']=g3m[g3m['class_seuil']=='VI']['annee']  
    g3mVi['type_mesure']=g3m[g3m['class_seuil']=='VI']['type_mesure'] 
    g3mVi.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,colormap='Oranges',y='type_mesure',grid=True,ax=c,rot='horizontal') 
    c.hold(True)  
except: 
    pass 
try: 
    g3mVr=pa.DataFrame() 
    g3mVr['pk']=g3m[g3m['class_seuil']=='VR']['pk_decimal_km_p'] 
    g3mVr['annee']=g3m[g3m['class_seuil']=='VR']['annee']  
    g3mVr['type_mesure']=g3m[g3m['class_seuil']=='VR']['type_mesure'] 
    g3mVr.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,y='type_mesure',colormap='Reds',grid=True,ax=c,rot='horizontal') 
    c.hold(True) 
except: 
    pass 

수 도와주세요?

원하는대로 플롯 할 수 있습니까?

+0

코드가 실행되지 않습니다. ''pk_decimal_km_m ''이란 무엇입니까? – ImportanceOfBeingErnest

답변

1

죄송합니다. g3m['pk_decimal_km_m'], g3m['pk_decimal_km']g3m['pk_decimal_km_p']은 (으)로보고합니다 (g3m['pk']).

이 오류는 내가 한 모든 시도로 인한 것입니다.

여기 내 코드가 수정되었습니다.

try: 
    g3mVa=pa.DataFrame() 
    g3mVa['pk']=g3m[g3m['class_seuil']=='VA']['pk'] 
    g3mVa['annee']=g3m[g3m['class_seuil']=='VA']['annee'] 
    g3mVa['type_mesure']=g3m[g3m['class_seuil']=='VA']['type_mesure'] 

    g3mVa.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,colormap='Greens',y='type_mesure',grid=True,ax=c,rot='horizontal') 
    c.hold(True) 
except: 
    pass 
try: 

    g3mVi=pa.DataFrame() 
    g3mVi['pk']=g3m[g3m['class_seuil']=='VI']['pk'] 
    g3mVi['annee']=g3m[g3m['class_seuil']=='VI']['annee']  
    g3mVi['type_mesure']=g3m[g3m['class_seuil']=='VI']['type_mesure'] 
    g3mVi.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,colormap='Oranges',y='type_mesure',grid=True,ax=c,rot='horizontal') 
    c.hold(True)  
except: 
    pass 
try: 
    g3mVr=pa.DataFrame() 
    g3mVr['pk']=g3m[g3m['class_seuil']=='VR']['pk'] 
    g3mVr['annee']=g3m[g3m['class_seuil']=='VR']['annee']  
    g3mVr['type_mesure']=g3m[g3m['class_seuil']=='VR']['type_mesure'] 
    g3mVr.groupby(['pk','annee']).count().unstack().plot(kind='bar',stacked=True,y='type_mesure',colormap='Reds',grid=True,ax=c,rot='horizontal') 
    c.hold(True) 
except: 
    pass