from random import choice
"""
*This file is about to generate (num_points) points in one figure randomly.
*three attribute:
1.variable: the number of points
2.lists: x- and y-coordinate values of each point
"""
class RandomWalk:
"""generate random walks."""
def __init__(self, num_points):
self.num_points = num_points
self.x_value = [0] # start from (0,0)
self.y_value = [0]
def fill_walk(self):
"""calculate all the points."""
while len(self.x_value) < self.num_points:
# decide where to go
x_direction = choice([1, -1]) # choice([min,max])
x_distance = choice([0, 1, 2, 3, 4, 5])
x_step = x_direction * x_distance
y_direction = choice([1, -1])
y_distance = choice([0, 1, 2, 3, 4, 5]) # choice([all the options])
y_step = y_direction * y_distance
# keep moving
if x_step == 0 and y_step == 0:
continue
# calculate the next coordinate
x_next = self.x_value[-1] + x_step
y_next = self.y_value[-1] + y_step
# renew
self.x_value.append(x_next)
self.y_value.append(y_next)
import matplotlib.pyplot as plt_walk
while True:
rw = RandomWalk(5000)
rw.fill_walk()
# the size of the plotting window #
plt_walk.figure(figsize=(10, 6))
# plot the figure #
# plt_walk.scatter(rw.x_value, rw.y_value, s=5)
point_numbers = list(range(rw.num_points)) # (num of list) = (num of points)
plt_walk.scatter(rw.x_value, rw.y_value, c=point_numbers, cmap=plt_walk.cm.Reds, s=1)
# emphasize the fist and the last #
plt_walk.scatter(0, 0, c='blue', edgecolors='none', s=40)
plt_walk.scatter(rw.x_value[-1], rw.y_value[-1], c='green', edgecolors='none', s=40) # drawn first
# remove the axes #
plt_walk.axes().get_xaxis().set_visible(False)
plt_walk.axes().get_yaxis().set_visible(False)
plt_walk.show()
flag = input("Make another?") # endless figures:close the old and get the new
if flag == 'no':
break