I have created a graph showing me the coordinates of a random walk as histograms. I want to add an attribute to the plot function to see the histograms advancing in continuous color from light blue (first histogram in the list) to dark blue (last histogram in the list). Is there a non-convoluted way to do this?
from plotly.graph_objs import Bar, Layout
from plotly import offline
from random_walk import RandomWalk
# Make a random walk.
rw = RandomWalk(50)
rw.fill_walk()
x_values = rw.x_values
y_values = rw.y_values
# Visualize the results.
data = [Bar(x=x_values, y=y_values)]
x_axis_config = {'title': 'Horizontal Coordinate'}
y_axis_config = {'title': 'Vertical Coordinate'}
my_layout = Layout(title='Results of a 1000 Steps Random Walk',
xaxis=x_axis_config, yaxis=y_axis_config)
offline.plot({'data': data, 'layout': my_layout},
filename='rw_visual_plotly.html')
class to create the steps:
from random import choice
class RandomWalk:
"""A class to generate random walks."""
def __init__(self, num_points=5000):
"""Initialize attributes of a walk."""
self.num_points = num_points
# All walks start at (0, 0).
self.x_values = [0]
self.y_values = [0]
def fill_walk(self):
"""Calculate all the points in the walk."""
# Keep taking steps until the walk reaches the desired length.
while len(self.x_values) < self.num_points:
# Decide which direction to go and how far to go in that direction.
x_direction = choice([-1, 1])
x_distance = choice([0, 1, 2, 3, 4])
x_step = x_direction * x_distance
y_direction = choice([-1, 1])
y_distance = choice([0, 1, 2, 3, 4])
y_step = y_direction * y_distance
# Reject moves that go nowhere.
if x_step == 0 and y_step == 0:
continue
# Calculate the new position.
x = self.x_values[-1] + x_step
y = self.y_values[-1] + y_step
self.x_values.append(x)
self.y_values.append(y)
See this post in the Plotly Community Forum.
from plotly.graph_objs import Bar, Layout
from plotly import offline
# Make a random walk.
rw = RandomWalk(50)
rw.fill_walk()
x_values = rw.x_values
y_values = rw.y_values
# Visualize the results.
data = [Bar(x=x_values, y=y_values, marker={'color': x_values, 'colorscale': 'Blues'})]
x_axis_config = {'title': 'Horizontal Coordinate', 'linecolor': 'gray', 'mirror': True}
y_axis_config = {'title': 'Vertical Coordinate', 'linecolor': 'gray', 'mirror': True}
my_layout = Layout(title='Results of a 1000 Steps Random Walk', plot_bgcolor='white',
xaxis=x_axis_config, yaxis=y_axis_config)
offline.plot({'data': data, 'layout': my_layout}, filename='rw_visual_plotly.html')