#python #numpy #matplotlib
#python #numpy #matplotlib
Вопрос:
Итак, у меня есть три набора данных:
min_data = np.array([ 0.317, 0.312, 0.305, 0.296, 0.281, 0.264, 0.255,
0.237, 0.222, 0.203, 0.186, 0.17, 0.155, 0.113, 0.08])
avg_data = np.array([ 0.3325, 0.3235, 0.3135, 0.30216667, 0.2905, 0.27433333,
0.26116667, 0.24416667, 0.22833333, 0.20966667, 0.19366667, 0.177,
0.16316667, 0.14016667, 0.097])
max_data = np.array([ 0.346, 0.331, 0.32, 0.31, 0.299, 0.282, 0.266, 0.25,
0.234, 0.218, 0.204, 0.187, 0.175, 0.162, 0.115])
Мне нужно отобразить эти данные с помощью полос ошибок.
Я попытался:
x = np.linspace(0, 100, 15)
err = [min_data, max_data]
plt.errorbar(x, avg_data, 'bo', yerr=err)
TypeError: errorbar() got multiple values for argument 'yerr'
Окончательный график должен выглядеть следующим образом:
plt.plot(x[::-1], avg_data, 'ro')
plt.plot(x[::-1], min_data, 'bo')
plt.plot(x[::-1], max_data, 'bo')
Где синие точки обозначают, где должны быть расположены полосы ошибок.
Вся документация, которую я смог найти, допускает только асимметричные ошибки, равные в направлениях и — y.
Спасибо
Ответ №1:
Ваш код терпит неудачу, потому что он считает, что 'bo'
это yerr
аргумент, поскольку третий аргумент в plt.errorbar
is yerr
. Если вы хотите передать спецификатор формата, вам следует использовать fmt
ключевое слово.
plt.errorbar(x, avg_data, fmt='bo', yerr=err)
Комментарии:
1. Ах, не ожидал этого.. Спасибо!
2. @KyleHunter Нет проблем. P.S. Я построил ваши данные, и вам нужно будет вычесть среднее значение из max и min, чтобы получить тип полос ошибок, которые вы ищете.
3. Да, я это видел, легко изменить 🙂