2016-03-23 12 views
1

私は、python matplotlibを使ってpandas DataFrameをプロットしようとしています。 DataFrameには「時間」列と「val」列があります。 「時間」列はインデックスとして設定され、マイクロ秒までの分解能を持ちます。プロットすると、x軸の値は完全にオフになります(データの時間範囲外の値)。何が間違っていますか?どんな助けもありがとうございます。マイクロ秒の解像度でパンダのデータフレームをプロットする

以下

はコードです: '/tmp/a.csv' で

import pandas as pd 
import matplotlib.pyplot as plt 
import matplotlib.dates 

df = pd.read_csv("/tmp/a.csv") 
df = df.set_index('time') 

def plot1(df): 
    ax = df.plot(y='val') 
    ax.get_yaxis().get_major_formatter().set_useOffset(False) 
    ax.get_xaxis().set_major_formatter(matplotlib.dates.DateFormatter("%H%M%S.%f")) 
    plt.show() 
    return ax 

plot1(df) 

データ:

time,val 
143642.229348,12 
143642.250195,53 
143642.252341,17 
143642.254349,56 
143642.311674,31 
143642.313758,36 
143642.320217,24 
143642.339777,86 

答えて

0

あなたはCSVからそれを読んだ後datetimeにごtime列を変換する必要がありますファイル:

df['time'] = pd.to_datetime(df['time'], format="%H%M%S.%f") 

代わりに、あなたのCを解析するときにそれを行うことができますSVファイル:

tm_parser = lambda x: pd.to_datetime(x, format="%H%M%S.%f") 

df = pd.read_csv('/tmp/a.csv', 
       sep=',', 
       parse_dates=['time'], 
       date_parser=tm_parser, 
       index_col='time') 

あなたがmatplotlib.dates.DateFormatterを必要としないことの後には:

In [147]: df.plot() 
Out[147]: <matplotlib.axes._subplots.AxesSubplot at 0x8201f60> 

Plot

+0

グレート、それは完璧に動作します。あなたの助けをありがとう! – freedo

+0

@freedo、私は助けることができてうれしいです。それがあなたに役立った場合は、(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)回答を受け入れてください。質問に答えられたことを示します – MaxU

関連する問題