2

このような単一のデータファイルがあります

#X    Y 
1     23.2 
2     24.01
3     67.34
4     68.90
# 

1    7.87 
2    6.90  
3    5.78   
4    7.89 

行間のギャップに注意してください。私のプロットでは、gnuplot がプロットするのと同じように、2 つの別々の行が必要です。python/matplotlib でこれを行う方法。私は現在、再び参加する1行を取得しています。

これが私が現在プロットしている方法です:

F=loadtxt('fort.30',comments='#',dtype='float64' )
t=F[:,0]
E=F[:,1]  
plt.plot(t,E) 

コメントと返信ありがとうございます

4

3 に答える 3

3

データセットのパーツ間に None または nan を追加します。

plt.plot([1,2,None,3,4],[1,0,None,2,1])
于 2012-10-04T18:59:43.487 に答える
1

F最初の列の値が前の行の値よりも小さい場合はいつでも、配列を複数のサブプロットに分割できます。

breaks = [i for i in range(len(F)) if i > 0 and F[i, 0] < F[i-1, 0]]
borders = [0] + breaks + [len(F)]
subplots = [F[borders[i]:borders[i+1]] for i in range(len(borders)-1)]

これで、個々のサブプロットをプロットできます。

for f in subplots:
    t, E = f[:, 0], f[:, 1]
    plt.plot(t, E)
plt.show()

もちろん、それは新しいサブプロットの最初の値が常に前のサブプロットの最後の値よりも低い場合に限られます。に依存して#プロットを分割する必要がある場合は、おそらく自分でファイルを解析する必要があります。

于 2012-10-04T20:43:32.593 に答える
0

これまでにコードを表示していません。この人々に基づいて、現在のコードが役立つ場合があります。

基本的に、Python でのファイル処理は自分で行う必要があります。がデータセット間の区切り文字である場合#、Python でファイルを読み取り、行ごとに解釈する関数を自分で作成します。行に空白で区切られた 2 つの数値が含まれている場合、その行のデータを現在のデータ セットに追加します。行に (番号記号) のみが含まれている場合は#、新しいデータ セットを開始します。

これを行うと、データ セットの明確な表現 (Python リストまたは numpy 配列のいずれか) が得られ、それらのプロットについて心配することができます。

于 2012-10-04T19:04:18.843 に答える