2016-11-23 30 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

関連する問題