2

エポック以降の日付を浮動小数点数 ( time.time() から) としてソースしており、次のように変換してプロットしようとしています (line[0]):

x,y = [],[]
csv_reader = csv.reader(open(csvFile))
for line in csv_reader:
    x.append(float(line[1]))
    y.append(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(float(line[0]))))


fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y,'o-')
fig.autofmt_xdate()

plt.show()

しかし、matplotlib は次のようにエラーを出し続けます:

ValueError: float() の無効なリテラル: 2013-07-08 15:04:50

適切にフォーマットする方法について何か考えはありますか?

乾杯

4

2 に答える 2

3

日付間の間隔が均一ではなく、ランダムに分布している可能性がある別の例を次に示します。

import numpy as np
import matplotlib.pyplot as plt
import time

time_data = np.array([1373316370.877059, 
                      1373316373.95448, 
                      1373316378.018756, 
                      1373316381.960965, 
                      1373316383.586567, 
                      1373316387.111703, 
                      1373316387.611037, 
                      1373316391.923015, 
                      1373316393.80545, 
                      1373316398.294916])

ydata = np.random.rand(len(time_data))
time_formatted = []
for element in time_data:
    time_formatted.append(time.strftime('%Y-%m-%d %H:%M:%S',
                                        time.localtime(element)))

isort = np.argsort(time_data) #Sorting time_data
plt.xticks(time_data[isort],
           np.array(time_formatted)[isort],
           size='small',
           rotation=35)
plt.plot(time_data[isort],ydata[isort],'k-')
plt.show()

ここに画像の説明を入力

于 2013-07-08T21:06:59.623 に答える
3

ValueErrorその形式は に対して無効であるため、が得られfloat()ます。値にフォーマットする代わりに、フォーマットされたfloat文字列をリストに追加して、yticks()次のように関数を使用してみてください。

>>> yAxis = ['2013-07-08 15:04:50', '2013-07-08 15:03:50', '2013-07-08 5:04:50']
>>> from random import randint
>>> xAxis = [randint(0, 10) for _ in range(3)]
>>> import pylab as plt
>>> plt.plot(xAxis, range(len(xAxis)))
>>> plt.yticks(range(len(yAxis)), yAxis, size='small')
>>> plt.show()

これにより、次のようなプロットが得られます。うまくいけば、それがあなたが探していたものでした:

ここに画像の説明を入力

PS - X 軸の日付が必要でしたか?

于 2013-07-08T20:13:29.627 に答える