РЕДАКТИРОВАТЬ:
Я почему-то упустил тот факт, что mydata
это массив Numpy, а не список списков ... Чтобы ваш код работал с массивом Numpy, выследует использовать транспонирование mydata следующим образом:
###
plt.boxplot(mydata.T, labels=labels)
###
Порядковый пост, указанный ниже
Где-то каким-то образом ваше сообщение об ошибке не соответствует вашему коду.Если я запускаю следующий код, я определенно получаю коробочный график.
import numpy as np
from matplotlib import pyplot as plt
mydata = [
[ 83, 93, 103, 113, 122, 129, 135, 139, 143,
147, 151, 155, 159, 163, 167, 171, 175, 178,
181, 184, 187, 189, 191, 193, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205,
206, 207, 208],
[ 83, 93, 103, 113, 122, 129, 135, 139, 143,
147, 151, 155, 159, 163, 167, 171, 175, 178,
181, 184, 187, 189, 191, 193, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205,
206, 207, 208],
[ 33, 43, 53, 63, 72, 79, 85, 89, 93, 97, 101,
105, 109, 113, 117, 121, 125, 128, 131, 134,
137, 139, 141, 143, 144, 145, 146, 147, 148,
149, 150, 151, 152, 153, 154, 155, 156, 157,
158],
[150, 170, 170, 170, 190, 190, 190, 210, 210,
230, 230, 230, 230, 240, 240, 240, 240, 250,
250, 250, 250, 260, 260, 260, 260, 260, 260,
260, 260, 260, 260, 260, 260, 260, 260, 260,
260, 260, 260],
[150, 170, 170, 170, 190, 190, 190, 210, 210,
230, 230, 230, 230, 240, 240, 240, 240, 250,
250, 250, 250, 260, 260, 260, 260, 260, 260,
260, 260, 260, 260, 260, 260, 260, 260, 260,
260, 260, 260]
]
labels = np.array(["Adult Card(Bus)", "Adult Card(MRT)", "Adult Card(Before 7.45am MRT)", "Single Trip", "Adult Cash"])
fig = plt.figure(figsize=(20, 10))
ax1 = fig.add_subplot(111)
ax1.set_xticklabels(labels, rotation='vertical')
plt.title('title')
plt.xlabel('Distance(Km)')
plt.ylabel('Fares')
plt.legend(loc='upper left');
print(mydata)
plt.boxplot(mydata, labels=labels)
plt.show()
Есть некоторые другие вещи, которые происходят неправильно, например, я получаю предупреждение о том, что "не найдено никаких ручек с метками, которые можно поставитьв легенде. ", но, возможно, это лучше задать в другом вопросе.