Python Matplotlib Random Walk Example

Random walk means walk path in random direction with random distance from start point. It is a mathematics concept. Use python matplotlib module, you can implement random walk easily. This article will tell you how to implement random walk graph in python.

1. Python Matplotlib Random Walk Example

python matplotlib created random walk graph

'''
Created on Aug 23, 2018
@author: zhaosong
'''

import matplotlib.pyplot
import random

# Generate two random point steps based on the random direction and distance.    
def generate_steps(distance_truple=[1,2,3,4,5,6,7,8,9,10]):

    # Get random direction.
    direction = random.choice([-1,1])

    # Get random distance.
    distance = random.choice(distance_truple)

    step = direction*distance
    return step

    

# Generate all random point x, y value numbers.
def generate_random_walk_list(max_point_numbers):

    # Must give a initialize value 0, otherwise the code will throw index out of range error in the while loop.
    x_numbers = []
    y_numbers = []

    # get x value list size.
    x_numbers_size = len(x_numbers)

    # Loop to create max_point_numbers point coordinate.
    while(x_numbers_size < max_point_numbers):
        x_step = generate_steps()
        y_step = generate_steps()
        
        # If the new point location is same with original, then calculate next point location.
        if(x_step== and y_step==):
            continue

        # Calculate the next x and y by adding new step
        next_x = x_numbers[-1] + x_step
        next_y = y_numbers[-1] + y_step

        # Append new x, y value at the list end.
        x_numbers.append(next_x)
        y_numbers.append(next_y)

        # Recalculate the number list size.
        x_numbers_size = len(x_numbers)

    # Save the generated x, y value number list in a dictionary to return.    
    ret = {}
    ret['x_numbers'] = x_numbers
    ret['y_numbers'] = y_numbers

    return ret   

# Draw a random walk graph. Each point represent a random position that the walk pass.
def draw_randmon_walk(max_point_numbers):

    # Get all random walk points with x, y axis values list.
    random_walk_dict = generate_random_walk_list(max_point_numbers)
    x_numbers = random_walk_dict['x_numbers']
    y_numbers = random_walk_dict['y_numbers']

    # Get point color list.
    point_color = list(range(max_point_numbers))

    # Plot all the point with x, y value based on green colormap.
    matplotlib.pyplot.scatter(x_numbers, y_numbers, s=1, c=point_color, cmap=matplotlib.pyplot.cm.Greens)

    # Plot the start point as blue.
    matplotlib.pyplot.scatter(, , c='blue', edgecolors='none', s=100)

    # Plot the end point as red.
    matplotlib.pyplot.scatter(x_numbers[-1], y_numbers[-1], c='red', edgecolors='none', s=100)

    # Remove all x, y axes.
    matplotlib.pyplot.axes().get_xaxis().set_visible(False)
    matplotlib.pyplot.axes().get_yaxis().set_visible(False)

    # Display the graph.
    matplotlib.pyplot.show()

if __name__ == '__main__':
    # Plot 50000 random points graph.
    draw_randmon_walk(50000)

Reference

  1. Python 3 Matplotlib Draw Point/Line Example
  2. Random walk From Wikipedia
(Visited 253 times, 1 visits today)
READ :   Python Profile Memory Usage And Object Graph Example

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.