2016-11-29 99 views
-2

嘿可能是一個簡單的問題,但無法找到答案。我正在用一個時間戳監視一系列位。我可以將它們的狀態繪製得很好,但在圖中0-> 1和1-> 0之間存在一條傾斜的線,其中切換時應該有一條直線。如何避免這種歪斜的線?它使得它看起來像我在兩者之間有價值。Python matplotlib。試圖繪製二進制信號,獲取插值

enter image description here

編輯:如下面所指出的那樣,使用步驟代替情節解決該問題。謝謝:)

+0

'matplotlib'簡單地將數據點與由一個缺省線路連接。另一種選擇是簡單地將點繪製爲「標記」。將腳本更改爲plt.plot(...,linestyle =「none」,marker =「o」),這將爲您提供數據位置處的圓形標記。對於其他標記,看看這裏:http://matplotlib.org/api/markers_api.html –

+0

你可以提供你的代碼? – abukaj

+1

在一條線圖中,兩個點將與一條線相連,如果這兩個點沒有相同的x維,則線將傾斜(垂直)。就是這樣。如果你想避免這種情況,你可以(a)只用點來繪製散點圖,或者(b)縮小很多來欺騙你的眼睛或者(c)覆蓋線或者做一個自定義的擬合函數[(Heaviside?)]( https://de.wikipedia.org/wiki/Heaviside-Funktion)。 – nostradamus

回答

3

可以使用plt.step功能,而不是情節,

import numpy as np 
import matplotlib.pyplot as plt 

def heaviside(x): 
    return .5*(np.sign(x)+1.) 

x = np.linspace(0,100,10) 
y = heaviside(np.random.random(10)-.5) 

plt.step(x,y) 
plt.ylim(-1.5,1.5) 
plt.show() 

賦予,

enter image description here

1

您可以使用stemplot

plt.stem(x, y) 

step plot

plt.step(x, y) 
+0

不錯,甚至不知道'plt.step'。 –