2016-10-14 2 views
0

sklearn을 사용하여 matplotlib을 사용하여 상자 플롯을 만들려고했습니다.Matplotlib의 의도하지 않은 노브 박스 플롯, 시보 인 오류

enter image description here

nps = np.array(all_s) 
npd = [dd for dd in all_d] 
plt.boxplot(nps.T, npd) 
plt.show() 
그러나이 밖으로 노치로 제공하고, 상부 또는 하부 경계는 이상한 판명. 또한 Seaborn에서 음모를 꾸미려고하면 다음과 같은 오류가 발생합니다. Buffer has wrong number of dimensions (expected 1, got 2) 무엇이 여기에 있습니까?

편집 : 추가 데이터

all_d = range(1,11)  

all_s = 

    [[0.31111111111111112, 
     0.38333333333333336, 
     0.2722222222222222, 
     0.29999999999999999, 
     0.32222222222222224, 
     0.32777777777777778, 
     0.3888888888888889, 
     0.36312849162011174, 
     0.37430167597765363, 
     0.37430167597765363], 
    [0.57222222222222219, 
     0.6333333333333333, 
     0.6166666666666667, 
     0.62777777777777777, 
     0.68333333333333335, 
     0.62777777777777777, 
     0.69444444444444442, 
     0.61452513966480449, 
     0.6033519553072626, 
     0.6033519553072626], 
    [0.73333333333333328, 
     0.82222222222222219, 
     0.68888888888888888, 
     0.7055555555555556, 
     0.77777777777777779, 
     0.73333333333333328, 
     0.81666666666666665, 
     0.73743016759776536, 
     0.72625698324022347, 
     0.72067039106145248], 
    [0.81666666666666665, 
     0.89444444444444449, 
     0.87222222222222223, 
     0.87777777777777777, 
     0.87777777777777777, 
     0.78888888888888886, 
     0.85555555555555551, 
     0.84916201117318435, 
     0.84916201117318435, 
     0.82681564245810057], 
    [0.90555555555555556, 
     0.93888888888888888, 
     0.87777777777777777, 
     0.91666666666666663, 
     0.90555555555555556, 
     0.87222222222222223, 
     0.90555555555555556, 
     0.88268156424581001, 
     0.87709497206703912, 
     0.8994413407821229], 
    [0.89444444444444449, 
     0.97222222222222221, 
     0.83888888888888891, 
     0.91666666666666663, 
     0.89444444444444449, 
     0.84444444444444444, 
     0.92777777777777781, 
     0.92737430167597767, 
     0.8938547486033519, 
     0.92178770949720668], 
    [0.90555555555555556, 
     0.96111111111111114, 
     0.93888888888888888, 
     0.91666666666666663, 
     0.91666666666666663, 
     0.90000000000000002, 
     0.93333333333333335, 
     0.95530726256983245, 
     0.8994413407821229, 
     0.92737430167597767], 
    [0.90555555555555556, 
     0.96111111111111114, 
     0.92222222222222228, 
     0.92222222222222228, 
     0.91666666666666663, 
     0.93888888888888888, 
     0.93333333333333335, 
     0.96648044692737434, 
     0.92737430167597767, 
     0.92737430167597767], 
    [0.93333333333333335, 
     0.97777777777777775, 
     0.94999999999999996, 
     0.93888888888888888, 
     0.94444444444444442, 
     0.97777777777777775, 
     0.94999999999999996, 
     0.98882681564245811, 
     0.95530726256983245, 
     0.94413407821229045], 
    [0.91666666666666663, 
     0.97777777777777775, 
     0.94999999999999996, 
     0.94444444444444442, 
     0.92777777777777781, 
     0.98333333333333328, 
     0.94999999999999996, 
     0.97765363128491622, 
     0.96089385474860334, 
     0.94413407821229045]] 
+0

당신은 데이터의 샘플을 보여줄 필요가 : 나는 다음과 같은했다. – BrenBarn

+0

전체 코드를 제공하거나 재현 가능한 코드를 제공하십시오. all_s 무엇이 all_d입니까? – plumSemPy

답변

0

나는 그것을 알아내는 것을 끝내었다! .boxplot의 두 번째 인수가 notch임을 지적한 BrenBarn에게 감사드립니다.

nps = np.array(all_s) 
npd = [dd for dd in all_d] 
box=sns.boxplot(data=nps.T) 
box.set_xticklabels(npd) 
plt.show() 

enter image description here

2

boxplot하는 두 번째 인자는 notch이다. 비어 있지 않은 목록을 전달하면 참값이 전달되므로 노치가 표시됩니다. 나는 당신의 의도가 npd을 지나가는 것이 무엇인지 모르겠습니다.

+0

npd를 "x"값 또는 x 레이블로 전달하려고했습니다. 내가 어떻게 그럴 수 있니? 나는'sns.boxplot (nps.T, names = npd)'를 만든 예제를 보았지만 그 이후로 API가 변경되었습니다. –

+0

위의 대답을 참조하십시오. boxplot의 두 번째 인수가 노치라는 점을 지적 해 주셔서 감사합니다! –

+0

@FlowNuwen이 방법으로 문제가 해결되면 녹색 확인 표시가있는 답으로 표시하여 향후 독자가 모호하지 않도록해야합니다. –