2014-11-17 92 views
0

我將我的數據組織成多指標數據框。例如:繪製多指數熊貓數據框時的神器

Sweep Time Primary  Secondary x720nm x473nm  PMTShutter              
Sweep0001 0.00000 -87.429810 -4.882812 0.000610 0.000305 0.000000 
      0.00005 -87.445068 -4.882812 0.000610 0.001221 0.000000 
      0.00010 -87.451172 -4.272460 0.000000 0.000916 0.000000 
      ...  ...  ...  ...   ... 
Sweep0039 0.68655 -87.261963 -4.272461 0.000305 0.000916 0.000305 
      0.68660 -87.258911 -4.272461 0.000305 0.000916 0.000305 
      0.68665 -87.252808 -5.493164 0.000000 0.000916 0.000305 
      0.68670 -87.261963 -4.272461 0.000305 0.000916 0.000305 

繪製任何一次掃描工作正常,但是當我去打印多個掃描我的這些文物,基本上是直線(見下文)。

這不是特定於matplotlib,因爲它也發生在pyqtgraph中。

plt.plot(data.Time['Sweep0001'], data.Primary['Sweep0001']) 

enter image description here

問題本一次繪製多條跡線:

plt.plot(data.Time['Sweep0001':'Sweep0002'], data.Primary['Sweep0001':'Sweep0002']) 

enter image description here

plt.plot(data.Time['Sweep00-1':'Sweep0010'], data.Primary['Sweep0001':'Sweep0010']) 
繪製一條軌跡時

問題不存在

enter image description here

+0

它看起來像你的數據可能包括一些局外。您是否嘗試削減數據以確定哪些點會導致這些峯值? – BrenBarn

+0

你是指垂直尖峯?這些都是正常的(他們在所有的痕跡)。我指的是水平線(你可以在3.0標記附近看到它們存在向下的瞬態) – user3014097

+0

在你的問題中可能很好地闡明,因爲在你的圖中不容易看到。如果數據的順序不正確,那麼可能會出現這種情況,因此繪圖會跳到右側,然後回到繪製失序點。再次,您是否可以縮小問題範圍,並提供能夠重現問題的具體數據,以確保問題存在於情節中,而不是數據中? – BrenBarn

回答

1

data.Time['Sweep001':'Sweep0002']data.Time['Sweep002']串聯data.Time['Sweep001']。因此,時間值再次從0到N然後從0到N. plt.plot因此畫出一條從t=N回到t=0的線條,導致該僞影。

而是使用一個plt.plot呼籲各行:

for i in range(1, 11): 
    col = 'Sweep{:04d}'.format(i) 
    plt.plot(data.Time[col], data.Primary[col]) 
+0

我只是想添加到原來的文章 - 如果我分別繪製它們不會產生這個問題。 正在使用循環的唯一方法來做到這一點? – user3014097

+0

那麼,你可以在兩個數據集之間插入'np.nan'值,但這不是解決這個問題的標準方法。通常你只需要使用一個循環。 (嘗試'plt.plot([1,2,np.nan,1,2],[0,1,2,1,2])'看看我的意思。) – unutbu