2016-03-23 32 views
1

Bir panda DataFrame çizmek için python matplotlib kullanmaya çalışıyorum. DataFrame'de bir 'zaman' sütunu ve bir 'val' sütunu vardır. 'Zaman' sütunu indeks olarak ayarlanmış ve mikro saniyelere kadar çözünürlüğe sahiptir. Ben onu çizmeye gittiğimde, x ekseni üzerindeki değerler tamamen kapalıdır (verilerin zaman aralığı dışında). Ne yanlış olabilir? Herhangi bir yardım takdir edilir.Çizim pandaları microfconds çözünürlüğü ile veri çerçevesi

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) 

Veri '/tmp/a.csv' in: Aşağıda

kodudur

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 

cevap

0

Sen CSV bunu okuduktan sonra datetime için time sütunu dönüştürmek gerekir file:

Alternatif olarak, C'yi ayrıştırırken bunu anında yapabilirsiniz. SV dosyası:

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') 

Eğer matplotlib.dates.DateFormatter gerekmez bundan sonra:

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

Plot

+0

Harika, mükemmel çalışıyor. Yardımın için çok teşekkürler! – freedo

+0

@freedo, Yardım edebileceğime sevindim. Lütfen [kabul et] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) cevabınız size yardımcı olduysa - bu sorunun cevabını verdiğini gösterir – MaxU

İlgili konular