Панели ошибок Pyplot с разными x- и y-ошибками - PullRequest
1 голос
/ 20 января 2020

Я пытаюсь создать график ошибок с разными x- и y-ошибками. Допустим, у меня есть следующие данные:

x = [[item%20 for item in reversed(range(50,55))] for _ in range(13)]
y = [[item%20 for item in reversed(range(20,25))] for _ in range(13)]


fig, ax = plt.subplots()
ax.set_xscale('log')
for i in range(len(x)):
    plt.errorbar(x=[x[0][i]], y=[y[0][i]], xerr=x[i][1:3], yerr=y[i][1:3], ls='None', label='B{}D{}'.format(x[i][3],y[i][4]))
plt.legend(prop={'size': 6})

Теперь это создаст ошибку:

ValueError: err должно быть [scalar | N, Nx1 или 2xN в виде массива]

Однако я не понимаю эту ошибку, так как моя ошибка имеет форму (2, N = 1), так же как данные ma равны N = 1. Когда я транспонирую свои данные и строю их на графике, все работает нормально, но я хочу нанести на каждую точку данных другой маркер и цвет метки. Для меня было бы также хорошо построить все панели ошибок одновременно и изменить цвета, маркеры и назначить метку впоследствии, однако я не знаю, как это сделать. Тем не менее, я считаю, что я делаю простую ошибку, которая делает такой подход ненужным.

Любая помощь очень ценится:)

1 Ответ

1 голос
/ 20 января 2020

если вы строите одну точку за раз, ваши ошибки должны иметь форму (2,1), а не (2,), как в вашем коде.

Кроме того, я думаю, что у вас произошла ошибка так, как вы получали ваши значения x, y.

x = [[item for item in reversed(range(50,55))] for _ in range(13)]
y = [[item for item in reversed(range(20,25))] for _ in range(13)]


fig, ax = plt.subplots()
ax.set_xscale('log')
for i in range(len(x)):
    X = x[i][0]
    Y = y[i][0]
    dx = np.array(x[i][1:3]).reshape((2,1))
    dy = np.array(y[i][1:3]).reshape((2,1))
    print(X,Y,dx,dy)
    plt.errorbar(x=X, y=Y, xerr=dx, yerr=dy, ls='None', label='B{}D{}'.format(x[i][3],y[i][4]))
plt.legend(prop={'size': 6})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...