2017-07-07 79 views
1

我使用matplotlib從數據幀繪製一些階躍函數Matplotlib情節只有水平線步驟情節

df['s1'].plot(c='b', drawstyle="steps-post") 
df['s2'].plot(c='b', drawstyle="steps-post") 
... 

結果看起來像

enter image description here

我想擁有這隻繪製水平線,而不是連接跳躍點的垂直線。我無法找到似乎這樣做的情節的直接參數。有沒有辦法做到這一點?

回答

1

據我所知,沒有內置選項可以產生沒有垂直線的階梯函數。但是你可以自己輕鬆創建一個。以下使用np.nan未被繪製並切割線的事實。因此在步驟之間添加np.nan可以抑制垂直線。

import matplotlib.pyplot as plt 
import numpy as np 

def mystep(x,y, ax=None, **kwargs): 
    x = np.array(x) 
    y = np.array(y) 
    X = np.c_[x[:-1],x[1:],x[1:]] 
    Y = np.c_[y[:-1],y[:-1],np.zeros_like(x[:-1])*np.nan] 
    if not ax: ax=plt.gca() 
    return ax.plot(X.flatten(), Y.flatten(), **kwargs) 

x = [1,3,4,5,8,10,11] 
y = [5,4,2,7,6,4,4] 

mystep(x,y, color="crimson") 

plt.show() 

enter image description here