2017-06-29 3 views
0

ファイルから、より正確には最初の行からデータをプロットする際に問題があります。 firts行のデータは常にプロット内でスキップされ、このsytuationがなぜ発生するのかわかりません。誰もこの問題を解決する方法を知っていますか? Docsからファイルからすべてのポイントをプロットする方法(プロットの最初のポイントが不足しています)?

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

答えて

0

data.txtの最初の行に列名が含まれている場合は、問題の解決策が有効です。明らかにそうではないので、データファイルに列名がないと仮定します。

データファイルに列名がない場合は、names=Trueを使用しないでください。この引数を削除します。その後、列名を使用して配列のインデックスを作成することはできません。したがって、data1[columnname]の代わりに、行番号と列番号を提供する通常の方法で配列をインデックスする必要があります。

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

私は、コードを囲みnamesTrueある

場合は、フィールド名が最初skip_headerライン後の最初の有効なラインから読み込まれます。 namesがコンマで区切られた名前のシーケンスまたは単一文字列の場合、名前は構造化dtypeのフィールド名を定義するために使用されます。 namesがNoneの場合、dtypeフィールドの名前があればそれが使用されます。

私は data1 = np.genfromtxt(fname1, names=False)と考えています。

+0

これは動作しませんが、別のエラーが発生します。/このヘッダーに関する情報を確認して、最初の行に追加のテキストを入力しました。それは動作しますが、私はまだこのヘッダーが必要な理由(はい、私はそれについてもっと読む必要があることを知っている:)を混同して感じる)。ありがとうございました!よろしくご協力いただければ –

+0

答えを記入してください。 :) – akshaynagpal

関連する問題