4

を使用して、Python でファイルからデータをプロットしようとしていますmatplotlib

ファイルには2列が含まれています。最初の列にはhour:minute:seconds. 2 番目の列にはdegree:arc minutes:arc seconds.

hour:minute:secondsを使用してdatetime.strptime('%H:%M:%S.%f')います。degree:arc minutes:arc secondsPython または Matplotlib に 同様の関数はありますか?

データ ファイルの例を次に示します。

  00:06:04.8        -70:00:00.0
  00:07:01.7        -66:00:00.0
  00:14:17.7        -59:00:00.0
  00:23:00.0        -52:00:00.0
  00:23:50.3        -49:00:00.0
  00:23:54.4        -29:00:00.0
  00:23:59.4        -28:00:00.0
  00:24:03.7        -26:00:00.0
  00:24:03.8        -14:00:00.0
  00:24:03.9        +25:00:00.0 
  00:30:30.10       +30:00:00.0 
4

1 に答える 1

3

を使用matplotlib.dates.datestr2numすると、最初の列をプロット可能な数値に簡単に変換できますが、2 番目の列の関数が見つかりませんでした。ただし、それを処理する関数を構築できます。

import numpy as np

def calc_hour( str ):
    hour, min, sec = [float(i) for i in str.split(':')]
    min += sec/60.
    hour += min/60.
    return hour

calc_hour = np.vectorize( calc_hour )

def calc_deg( str ):
    deg, min, sec = [float(i) for i in str.split(':')]
    min += sec/60.
    deg += min/60.
    return deg

calc_deg = np.vectorize( calc_deg )

次に、想定される「tmp.txt」ファイルからデータを読み取ります。

values = np.loadtxt('tmp.txt', dtype=str)
hours= calc_hour( values[:,0] )
degs =  calc_deg( values[:,1] )

次のようなものを取得します。

hours = array([ 0.10133333,  0.11713889,  0.23825   ,  0.38333333,  0.39730556,
                0.39844444,  0.39983333,  0.40102778,  0.40105556,  0.40108333,
                0.50836111])    

degs = array([-70., -66., -59., -52., -49., -29., -28., -26., -14.,  25.,  30.])

それはプロットすることができます:

import matplotlib.pyplot as plt
plt.plot(hours,degs)

あなたの場合、次を与えます:

ここに画像の説明を入力

于 2013-05-28T17:45:09.727 に答える