2017-04-17 7 views
0

と時間をプロットするときに私は、CSVファイル内の次の時系列持つ%のFの文字を削除します。matplotlibの

20:01:20,4254215 
20:01:36,5216326 
20:02:45,6363636 
20:02:48,2553266 
... 

に最初の列は、フォーマットアワーの時間です:分:秒。もう一つは別のデータです。私はそれを次のようにプロットしています:

import matplotlib.pyplot as plt 
import csv 
from datetime import datetime 

... 

with open('mydata.dat', 'r') as csvfile: 
    myfile = csv.reader(csvfile, delimiter=',') 
    for row in myfile: 
     a = datetime.strptime((row[0]),'%H:%M:%S') 
     x.append((a)) 
     y.append(row[1]) 

... 

plt.gcf().autofmt_xdate() 
plt.plot(x, y) 
plt.show() 

問題は、生成されたグラフにx軸に%fがあることです。これを避け、時間:分:秒のみを表示する方法はありますか?

私は私の問題を示すために、現在の結果を添付:

Graph generated

+0

コンマは表示されません。 –

+0

あなたは正しく、更新されました –

答えて

2

次のコード

import matplotlib.pyplot as plt 
import csv 
from datetime import datetime 

x = [];y=[] 

with open('data/mydata.dat', 'r') as csvfile: 
    myfile = csv.reader(csvfile, delimiter=',') 
    for row in myfile: 
     a = datetime.strptime((row[0]),'%H:%M:%S') 
     x.append((a)) 
     y.append(row[1]) 


plt.plot(x, y) 
plt.gcf().autofmt_xdate() 

plt.show() 

はticklabelsのいずれかの"%f"存在せず、このイメージを生成します。

enter image description here

別のイメージが表示される場合は、古いバージョンのmatplotlibを使用している可能性があります。あなたはまた(またはそれに加えて)plot.plot_date()の代わりplt.plot()を使用しようとするかもしれたDateFormatter明示的に

import matplotlib.dates 
fmt = matplotlib.dates.DateFormatter('%H:%M:%S') 
plt.gca().xaxis.set_major_formatter(fmt) 

を設定しようとするかもしれません。

+0

'Microsecond'についてはどうですか? – Surajano

+0

私の悪い、初期のデータファイルは、 "、"区切りを持つCSVファイルに以前に変換されます。しかし、あなたが示したコードを試してみましたが、まだグラフの%f文字が生成されています –

+0

私は2つの提案で答えを更新しました。 – ImportanceOfBeingErnest