下午好。
我现在已经挣扎了一段时间,虽然我可以在网上找到类似的问题,但我发现的任何东西都无法真正帮助我解决它。
从包含三列(x,y和y的错误)的标准数据文件(.csv或.txt)开始,我想读入数据并生成包含误差线的线图。
我可以毫无问题地绘制x和y值,但如果我想使用matplotlib.pyplot errorbar实用程序添加错误栏,我会收到以下错误消息:
ValueError: yerr must be a scalar, the same dimensions as y, or 2xN.
如果我使用一些任意数组(numpy或plain python),下面的代码可以工作,但不能从文件中读取数据。我尝试使用asarray将我从输入代码中获取的元组转换为numpy数组,但无济于事。
import numpy as np
import matplotlib.pyplot as plt
row = []
with open("data.csv") as data:
for line in data:
row.append(line.split(','))
column = zip(*row)
x = column[0]
y = column[1]
yer = column[2]
plt.figure()
plt.errorbar(x,y,yerr = yer)
fig = plt.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('example.png', dpi=300)
一定是我忽略了什么。我对此事的任何想法都非常感激。
答案 0 :(得分:0)
yerr
应该是y
值中的加/减错误。在您的情况下,添加的等于减去的等于第三列的一半。
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('data.csv', delimiter=',')
plt.figure()
yerr_ = np.tile(data[:, 2]/2, (2, 1))
plt.errorbar(data[:, 0], data[:, 1], yerr=yerr_)
plt.xlim([-1, 3])
plt.show()
data.csv
0,2,0.3
1,4,0.4
2,3,0.15