-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrw_plotly.py
91 lines (79 loc) · 2.18 KB
/
rw_plotly.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
from plotly.graph_objs import Bar, Layout
from random_walk import RandomWalk
from plotly import offline
steps = 50_000
rw = RandomWalk(steps)
rw.fill_walk()
# Get step data
right_steps = 0
left_steps = 0
up_steps = 0
down_steps = 0
step_size0 = 0
step_size1 = 0
step_size2 = 0
step_size3 = 0
step_size4 = 0
step_data = []
x_values = rw.x_values
y_values = rw.y_values
for i in range(len(x_values) - 1):
step = x_values[i + 1] - x_values[i]
step_size = abs(step)
if step_size > 0:
if abs(step) == 1:
step_size1 += 1
elif step_size == 2:
step_size2 += 1
elif step_size == 3:
step_size3 += 1
else:
step_size4 += 1
else:
step_size0 += 1
if step > 0:
right_steps += 1
elif step != 0:
left_steps += 1
for i in range(len(y_values) - 1):
step = y_values[i + 1] - y_values[i]
step_size = abs(step)
if step_size > 0:
if abs(step) == 1:
step_size1 += 1
elif step_size == 2:
step_size2 += 1
elif step_size == 3:
step_size3 += 1
else:
step_size4 += 1
else:
step_size0 += 1
if step > 0:
up_steps += 1
elif step != 0:
down_steps += 1
step_data.append(right_steps)
step_data.append(left_steps)
step_data.append(up_steps)
step_data.append(down_steps)
step_data.append(step_size0)
step_data.append(step_size1)
step_data.append(step_size2)
step_data.append(step_size3)
step_data.append(step_size4)
x_axis = ['Right Steps', 'Left Steps', 'Up Steps', 'Down Steps', '0', '1 Step', '2 Steps', '3 Steps', '4 Steps']
# Visualise the results
data = [Bar(x=x_axis, y=step_data)]
x_axis_config = {'title': 'Result', 'dtick': 1}
y_axis_config = {'title': 'Frequency of Result'}
my_layout = Layout(title=f'Total steps in each direction({steps} movements between 1-4 steps)', xaxis=x_axis_config, yaxis=y_axis_config)
offline.plot({'data': data, 'layout': my_layout}, filename='rw.html')
print(x_values)
print(y_values)
# print(up_steps)
# print(down_steps)
# print(right_steps)
# print(left_steps)
# for i in range(die_3.num_sides * 3 - 2):
# print(f"{i + 3} = frequency = {frequencies[i]}")