2017-03-19 23 views
0

私はnoobです。最新のCSVをとり、matplotlibでグラフをプロットするスクリプトを作成しました。しかし、私の日付は、時間、分、秒を表示していると私はミリ秒と思います。しかし、CSVでは、私は年、月、日、時、分、秒を持っています。 CSVのように日付を表​​示するには、どのようにしてコードを簡単に調整するのですか?CSVデータのようにmatplotlibの日付マーカーを作成するにはどうすればよいですか?

Pythonスクリプト:

from matplotlib import pyplot, dates 
from csv import reader 
from dateutil import parser 
import os 
import time 
import pylab 
import datetime 
from datetime import datetime 
os.chdir('/home/pi/csvdata') 

def plotloop(): 
    for plotinsideloop in range(24): 
     dated_files = [(os.path.getmtime(fn), os.path.basename(fn)) 
      for fn in os.listdir("/home/pi/csvdata") if fn.lower().endswith('.csv')] 
     dated_files.sort() 
     dated_files.reverse() 
     newest = dated_files[0][1] 
     with open(newest) as f: 
      data = list(reader(f)) 
     humidity = [i[1] for i in data] 
     dates1 = [i[0] for i in data] 
     dates = [datetime.strptime(i, '%X %x') for i in dates1] 
     pyplot.ylim(50,1000) 
     pyplot.xticks(rotation=15) 
     pyplot.plot(dates, humidity) 
     pyplot.savefig("test.png", dpi=72) 
     pyplot.savefig("test.pdf") 
     print ("Done") 
     print(newest) 
     time.sleep(5) 
plotloop() 

私のCSVデータ:

3/19/2017 12:01 593 
3/19/2017 12:01 593 
3/19/2017 12:01 594 
3/19/2017 12:01 593 
3/19/2017 12:01 593 

マイグラフ:Excelで

enter image description here

CSVのスクリーンショット:

enter image description here

答えて

0

最も簡単な方法は、おそらく日付形式を直接設定することです。あなたはまた、必要とされること

from matplotlib import pyplot 
import matplotlib.dates 

from matplotlib import pyplot, dates 

からあなたの輸入ビットを変更する必要があります

pyplot.gca().xaxis.set_major_formatter(matplotlib.dates.DateFormatter("%x %H:%M")) 

:そのためにあなたは自分のplotコマンドの前に、以下を追加する必要がありますmatplotlibからすでに日付をインポートしていたにもかかわらず、後でdateというリストも定義しているためです。

説明のために、関数gca()はAxesオブジェクトにアクセスします。これであなたはたくさんのことをすることができます。 http://matplotlib.org/2.0.0/api/axes_api.html#matplotlib.axes.Axes

+1

を参照してください。誰かがいつでもそれを必要とするなら、これは私の作業コードですhttp://pastebin.com/NfWmyffQ – GamerDude

関連する問題