如何打印文件中的所有点(打印中缺少第一个点)?

2024-09-27 07:19:59 发布

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

我无法从文件中打印数据,更准确地说,是从第一行打印数据。第一行的数据在绘图中总是被跳过,我不知道为什么会发生这种情况。有人知道如何解决这个问题吗

我附上代码:

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()`

enter image description here


Tags: 数据代码importnumpytrue绘图namesas
2条回答

如果data.txt的第一行包含列名,那么问题的解决方案应该有效。因为显然没有,所以我假设数据文件中没有列名

如果数据文件中没有列名,请不要使用names=True。删除此参数。很明显,不能使用列名来索引数组。因此,您不需要data1[columnname],而需要使用提供行和列编号的常用方法对数组进行索引

plt.errorbar(data1[:,0], data1[:,1], yerr=[data1[:,2],data1[:,3]] )

Docs

如果namesTrue,则从第一个skip\u头行之后的第一个有效行读取字段名。如果名称是一个序列或由逗号分隔的名称组成的单个字符串,则这些名称将用于定义结构化数据类型中的字段名称。如果names为None,则将使用数据类型字段的名称(如果有)

我想 data1 = np.genfromtxt(fname1, names=False)将解决这个问题

相关问题 更多 >

    热门问题