Визуализация двухмерного случайного блуждания в питоне

Я пытаюсь сделать случайную прогулку в 2d и построить 2d-прогулку. Я смог прогуляться, но сюжет не совсем то, что я хотел. Можно ли увидеть прогулку вживую на питоне? Или просто добавьте метку к каждой точке, чтобы вы знали, какая точка была первой, а какая второй и т. д.?

import numpy as np
import matplotlib.pyplot as plt
import random
def randomWalkb(length):
    steps = []
    x,y = 0,0
    walkx,walky = [x],[y]
    for i in range(length):

        new = random.randint(1,4)
        if new == 1:
            x += 1
        elif new == 2:
            y += 1
        elif new ==3 :
            x += -1
        else :
            y += -1
        walkx.append(x)
        walky.append(y)
    return [walkx,walky]

walk = randomWalkb(25)
print walk
plt.plot(walk[0],walk[1],'b+', label= 'Random walk')
plt.axis([-10,10,-10,10])
plt.show()

Изменить Я неправильно скопировал свой собственный код, теперь он компилируется, если у вас установлены правильные пакеты.


person 90intuition    schedule 26.06.2013    source источник


Ответы (3)


Для рисования можно использовать встроенный модуль turtle. путь с ощутимой скоростью.

import turtle

turtle.speed('slowest')

walk = randomWalkb(25)

for x, y in zip(*walk):
    #multiply by 10, since 1 pixel differences are hard to see
    turtle.goto(x*10,y*10)

turtle.exitonclick()

Пример результата:

введите здесь описание изображения

person Kevin    schedule 26.06.2013

Я бы визуализировал информацию о времени, используя цвет, т.е. попытался бы построить

plt.plot(walk[0],walk[1],label= 'Random walk')
plt.scatter(walk[0],walk[1],s=50,c=range(26))
person Raphael Roth    schedule 26.06.2013

См. руководство по анимации по адресу http://jakevdp.github.io/blog/2012/08/18/matplotlib-animation-tutorial/

В этом случае функция анимации должна выполнить один шаг вашей прогулки и соответствующим образом установить данные x-y. Если вам не нужно сохранять анимацию или у вас не установлен кодек, просто игнорируйте вызов anim.save.

person Rob Falck    schedule 26.06.2013