私は現在、交通渋滞解析に取り組んでおり、このような紙詰まりのプロットの生成をアニメーション化する方法があるかどうか疑問に思っていました。Matplotlibアニメーションスペース対時間プロット
これらのプロットは図の上端から下端にかけて成長し、各 '行'は時間インスタンスです。横軸は各車両の位置を各点で示し、一定の数値でその速度を示す道路に過ぎません。異なる色を異なる速度に適用すると、特定の道路で渋滞がどのように進化するかを示すプロットが得られます。
私の質問は、私は、このようなプロットを取得する時間に道路の各インスタンスのアニメーションを生成するために、matplotlibのをどのように使用できるか、でしょうか?
プロットは次のようなものです:
私は時間を通じて一定の速度で車と道路をシミュレートしていますので、私は交通渋滞が進化の様子を示すプロットをアニメーション化したいです...
編集:私はすでにやっている明確なものを作るためにいくつかのコードを追加し
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation, rc
plt.rcParams['animation.ffmpeg_path'] = u'/usr/bin/ffmpeg'
# model params
vmax = 5
lenroad = 50
prob = 0.4
# sim params
numiters = 10
# traffic model
def nasch():
gaps = np.full(road.shape, -1)
road_r4 = np.full(road.shape, -1)
for n,x in enumerate(road):
if x > -1:
d = 1
while road[(n+d) % len(road)] < 0:
d += 1
d -= 1
gaps[n] = d
road_r1 = np.where(road!=-1, np.minimum(road+1, vmax), -1)
road_r2 = np.where(road_r1!=-1, np.minimum(road_r1, gaps), -1)
road_r3 = np.where(road_r2!=-1, np.where(np.random.rand() < prob, np.maximum(road-1, 0), road), -1)
for n,x in enumerate(road_r3):
if x > -1:
road_r4[(n+x) % len(road_r3)] = x
return road_r4
def plot_nasch(*args):
road = nasch()
plot.set_array([road])
return plot,
# init road
road = np.random.randint(-10, vmax+1, [lenroad])
road = np.where(road>-1, road, -1)
# simulate
fig = plt.figure()
plot = plt.imshow([road], cmap='Pastel2', interpolation='nearest')
for i in range(numiters):
ani = animation.FuncAnimation(fig, plot_nasch, frames=100, interval=500, blit=True)
plt.show()
そして、私の代わりに、以前の1の下部に描かれた各道路の下の図、ただ1本の道路を取得:
はい、それはmatplotlibのに間違いなく可能です。 'FuncAnimation'を使用して、シミュレーション結果を配列に並べ、' imshow'で表示し、アニメーションします。関係するステップごとに十分な例があります。 – ImportanceOfBeingErnest
お持ちの場合具体的な問題を実装するには、明示的にこの問題について質問し、コードを[mcve]に減らし、出力が何であるかを明記し、予想されているものからどの程度ずれているかを明確に述べる必要があります。 –
...問題は、私はプロットされた道路FuncAnimationを使用するたびに、単に各ステップで「下向き」つもりはない、同じポイントで、前の道路をオーバーライドすることで、私がやろうとしたものです実際には@ImportanceOfBeingErnest – ImportanceOfBeingErnest