Мой код генерирует значения и соответствующие им стандартные отклонения в наборах по 3, то есть в массивах 3x1. Я хочу построить их все вместе как категорический график ошибок. Для указания yerr, поскольку он принимает только скаляр или или (N,) или N x 2, я использовал np.ravel для преобразования всех массивов 3x1 в один массив N x 1. Но я все еще получаю ошибку ValueError: err должен быть [scalar | N, Nx1 или 2xN в виде массива]
Вот код:
import numpy as np
import matplotlib.pyplot as plt
names_p=['p1','p1','p1','p2','p2','p2','p3','p3','p3','p4','p4','p4','p5','p5','p5','p6','p6','p6'] #### The names are repeated three times because for each variable I have three values
y=(p1sdm2N_ratem,p2sdm2N_ratem,p3sdm2N_ratem,p4sdm2N_ratem,p5sdm2N_ratem,p6sdm2N_ratem) #### each of these 6 elements is 3 x 1 E.g. p1sdm2N_ratem=(0.04,0.02,0.03)
c=np.ravel((p1sdm2N_ratestd,p2sdm2N_ratestd,p3sdm2N_ratestd,p4sdm2N_ratestd,p5sdm2N_ratestd,p6sdm2N_ratestd)) ### each of these 6 elements is 3x1 e.g. p1sdm2N_ratestd=(0.001,0.003,0.001)
plt. errorbar(names_p,y,yerr=c)
Это дает ошибку, о которой я упоминал ранее, хотя c - это массив 18x1. (Это не массив массивов, я проверил.)
Обратите внимание, с тем, как я настроил мои переменные,
plt.scatter(names_p,y)
и
plt. errorbar(names_p,y,yerr=None)
работает, но без панелей ошибок, конечно.
Буду признателен за любую помощь!