我在绘制文件中的数据方面存在问题,更确切地说是从第一行绘制数据。来自第一行的数据总是在情节中滑落,我不知道为什么会出现这种情况。有人知道如何解决这个问题吗?
我附上代码:
import numpy as np
import matplotlib.pyplot as plt
fname1 = 'data.txt'
data1 = np.genfromtxt(fname1, names=True)
cols1 = data1.dtype.names
ax1 = plt.subplot(111)
ax1.grid(False)
plt.errorbar(data1[cols1[0]], data1[cols1[1]], yerr=[data1[cols1[2]],
data1[cols1[3]]], fmt='o', markersize=5, color='blue')
plt.setp(ax1.get_xticklabels(), visible=True)
plt.ylabel("PI")
plt.xlabel("MJD")
plt.savefig("test.png")
#plt.subplots_adjust(wspace=0, hspace=0)
plt.show()`
答案 0 :(得分:2)
来自Docs:
如果names
为True
,则从第一个skip_header行之后的第一个有效行读取字段名称。如果names是序列或逗号分隔名称的单字符串,则名称将用于定义结构化dtype中的字段名称。如果names为None,则将使用dtype字段的名称(如果有)。
我想
data1 = np.genfromtxt(fname1, names=False)
将解决问题。
答案 1 :(得分:0)
如果data.txt
的第一行包含列名,则问题的解决方案应该有效。由于它显然没有,我假设你的数据文件中没有列名。
如果您的数据文件中没有列名,请不要使用names=True
。删除此参数。然后很明显,您不能使用列名来索引数组。因此,您需要将数组索引为提供行号和列号的常用方法,而不是data1[columnname]
。
plt.errorbar(data1[:,0], data1[:,1], yerr=[data1[:,2],data1[:,3]] )