使用np.拉威尔在errorbar p中指定yerr

2024-09-28 05:29:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码在3个数组中生成值和相应的标准差,即3x1数组。我想把它们一起画成一个绝对的误差条图。对于指定yerr,因为它只接受标量或(N,)或nx2,所以我使用np.拉威尔将所有3x1数组转换为一个N x 1数组。但是我仍然得到了error值error:err必须是[scalar | N,Nx1或2xN array like]

代码如下:

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) 

工作,当然没有误差条。你知道吗

我很感激任何帮助!你知道吗


Tags: namesnpplt数组eachp2p3p5

热门问题