2016-11-23 84 views
0

我使用this answer中描述的方法來動態更新條形圖。然而,我想要的條形圖應該顯示來自零點而不是圖底部的值。這是我的酒吧初始化代碼:Matplotlib - 使用正值和負值更新條形圖

oxBar = aBar.bar(0, 200, bottom=-100, width=1) 

而且我希望能夠從零點積極和消極地更新我的圖形。然而,使用上面鏈接中的方法,我只能將它從圖的底部移到高度,而不是零點。例如,輸入-50應該從0到-50繪製小節,但是反而是將小節從-100繪製爲-50。

+0

爲什麼不使用'底部= 0'? 'plt.bar(0,-50,bottom = 0,width = 1)'? – furas

+0

我可以,但是我想從圖的中點開始繪製圖形的原點,並且使用此方法始終從底部開始,所以這不能解決問題。 –

+0

但它從0到-50 - 即。 'plt.bar([0,1,2],[-100,-50,100],bottom = 0,width = 1)'從0到-100,從0到100,0在中間。可能您需要其他屬性來設置繪圖大小。 – furas

回答

1

Matplotlib作爲默認自動調整繪圖,但您可以將ylim設置爲具有恆定大小/高度,然後0可始終處於中間。

import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
import random 

def animate(frameno): 
    x = random.randint(-200, 200) 
    n = [x, -x] 

    for rect, h in zip(rects, n): 
     rect.set_height(h) 

    return rects 

# --- init --- 

fig, ax = plt.subplots() 
rects = plt.bar([0,1], [0,0], width=1) 
plt.ylim([-200, 200]) 

ani = animation.FuncAnimation(fig, animate, blit=True, 
           interval=100, frames=100, repeat=False) 
plt.show() 

enter image description here