Непреднамеренный надрезанный Boxplot из Matplotlib, ошибка от Seaborn

#python #matplotlib #machine-learning #scikit-learn #seaborn

#питон #matplotlib #машинное обучение #scikit-учиться #сиборн

Вопрос:

Используя sklearn, и попытался сделать boxplot с помощью matplotlib.

 nps = np.array(all_s)
npd = [dd for dd in all_d]
plt.boxplot(nps.T, npd)
plt.show()
 

введите описание изображения здесь

Но он выходит зазубренным, и верхние или нижние границы получаются нечетными. Кроме того, когда я пытаюсь отобразить его в Сиборне, я получаю следующую ошибку: 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]]
 

Комментарии:

1. Вам нужно показать образец ваших данных.

2. Пожалуйста, предоставьте полный код или воспроизводимый, что такое all_s что такое all_d?

Ответ №1:

Второй аргумент boxplot — это notch . Передавая непустой список, вы передаете истинное значение, поэтому отображаются надрезы. Я не уверен, каковы ваши намерения при передаче npd туда.

Комментарии:

1. Я пытался передать npd в качестве значений «x» или меток x. Как бы я это сделал? Я видел пример, который это сделал sns.boxplot(nps.T,names = npd) , но с тех пор API изменился.

2. Разобрался с этим, см. Ответ выше. Спасибо, что указали на то, что вторым аргументом boxplot является notch!

3. @FlowNuwen если это решило вашу проблему, вы должны пометить ее как ответ зеленой галочкой, чтобы она была однозначной для будущих читателей.

Ответ №2:

В конце концов я все понял! Спасибо Бренбарну за указание на то, что второй аргумент .boxplot is notch . Я сделал следующее:

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

введите описание изображения здесь