2017-02-02 1 views
0

사실 모든 것이 잘 작동합니다. 하나의 차트에서 설문 조사의 다른 그룹을 비교하려고합니다. 따라서 나는그룹화 된 상자 그림이 너무 좁아서 읽을 수 없습니다.

for value in values: 
    catpool=getcat() 
    py.offline.init_notebook_mode() 
    data = [] 
    for cata in catpool: 
     for con in constraints: 
      data.append( go.Box(y=getdf(value,cata,con[0])['Y'+value],x=con[1], name=cata, showlegend=False, boxmean='sd', 
          #boxpoints='all', 
          jitter=0.3, 
          pointpos=0)) 
    layout=go.Layout(title="categorie: "+getclearname(value)+" - local space syntax measurements on placements<br>",yaxis=dict(title='percentage of range between flat extremes'),boxmode='group',showlegend=True) 
    fig = go.Figure(data=data, layout=layout) 
    py.offline.iplot(fig, filename='pandas-box-plot') 

기능 'getdf은'

은 불행히도이 a diagram with to narrow box plots 같은 읽을도 결과 데이터베이스에서 열을 조회하는 것이 가능하다 파이썬 (Jupyter - 노트북)에 다음과 같은 코드를 작성 그룹에 간격을 줄여서 그룹의 상자 그림을 더 많이 만들 수 있습니까? 아니면 그것을 더 읽기 쉽게 만들 수있는 다른 것?

+0

질문에 들여 쓰기를 수정할 수 있습니까? – titipata

+0

@titipata done ... thx – beetrood

+0

또한 답변 : :) 미안, 도청 죄송합니다! – titipata

답변

0

주셔서 감사합니다 나는 내 자신에 그 문제를 해결 : 이상한 행동 때문에 for cata in catpool 루프의, 발생 - 데이터 상자 그림 그룹은 데이터 프레임에 그룹 값을 포함한다 : 그래서 난 그냥 didn를 이 위치에서 루프를 돌리지 만 SQL 문을 연결하면 반복됩니다. 동일한 쿼리가 수행되었지만 다음과 같이 "UNION"에 의해 함께 결합되었습니다.

def formstmtelse (val, category, ext, constraint, nine=True): 
    stmt="" 
    if nine: 
     matrix=['11','12','13','21','22','23','31','32','33'] 
    else: 
     matrix=['11'] 
    j=0 
    for cin in category: 
     j=j+1 
     if j>1: 
      stmt=stmt+" UNION " 
     m=0 
     for cell in matrix: 
      m=m+1 
      if m>1: 
       stmt=stmt+"""UNION 
       """ 
      stmt=stmt+"""SELECT '"""+cin+"""' AS cata, 
      """ 
      if ext: 
       stmt=stmt+"""((("""+val+"""-MIN"""+val+""")/(MAX"""+val+"""-MIN"""+val+"""))*100) AS Y"""+val 
      else: 
       stmt=stmt+"""((("""+val+""")/(MAX"""+val+"""))*100) AS Y"""+val 
      stmt=stmt+""" 
      FROM `stests` 
      JOIN ssubject 
      ON ssubject.ssubjectID=stests.ssubjectID 
      JOIN scountries 
      ON CountryGrownUpIn=scountriesID 
      JOIN scontinents 
      ON Continent=scontinentsID 
      JOIN gridpoint 
      ON stests.FlatID=gridpoint.GFlatID AND G"""+cin+cell+"""=GIntID 
      JOIN 
      (
       SELECT GFlatID AS GSUBFlatID""" 
      stmt=stmt+""", 
      MAX("""+val+""") AS MAX"""+val+""",MIN("""+val+""") AS MIN"""+val 
      stmt=stmt+""" 
       FROM gridpoint 
       GROUP BY GSUBFlatID 
      ) 
      AS virtualtable 
      ON FlatID=virtualtable.GSUBFlatID 
      """+constraint+" " 
    return stmt 

이 문제를 해결합니다. 상자 호출의 'x'속성은 문자열이 항상 동일하더라도 단일 문자열뿐만 아니라 목록 또는 데이터 프레임이어야합니다. 이것은 자동화 된 스케일링을 불가능하게하는 '보이지 않는'x 값을 유발하는 것입니다. 즉, 새로운 제약 조건이있는 각 쿼리에 대한 범례의 새로운 포인트이며 각 카테고리에 대해 모든 제약 조건에 대해 하나의 데이터 프레임 만 필요합니다. 이 변경하면 - 괜찮아요 조정 boxgroupgap 또는 groupgab 속성을 추가하여 만들 수 있습니다 ... 내 영어 실례 바랍니다

관련 문제