0

I wrote a program that should generate a dynamic graph that shows the frequency of each face of the 6-sided dice coming up but when I run my code in the console <Figure size 432x288 with 0 Axes> shows up instead of generating a window that shows the graph and I'm using Anaconda.Thanks in advance.

from matplotlib import animation
import matplotlib.pyplot as plt
import random 
import seaborn as sns
import sys

def update(frame_number, rolls, faces, frequencies):
   """Configures bar plot contents for each animation frame."""
     # roll die and update frequenci
    for i in range(rolls):
    frequencies[random.randrange(1, 7) - 1] += 1 

# reconfigure plot for updated die frequencies
plt.cla()  # clear old contents contents of current Figure
axes = sns.barplot(faces, frequencies, palette='bright')  # new bars
axes.set_title(f'Die Frequencies for {sum(frequencies):,} Rolls')
axes.set(xlabel='Die Value', ylabel='Frequency')  
axes.set_ylim(top=max(frequencies) * 1.10)  # scale y-axis by 10%

# display frequency & percentage above each patch (bar)

for bar, frequency in zip(axes.patches, frequencies):
    text_x = bar.get_x() + bar.get_width() / 2.0  
    text_y = bar.get_height() 
    text = f'{frequency:,}\n{frequency / sum(frequencies):.3%}'
    axes.text(text_x, text_y, text, ha='center', va='bottom')
number_of_frames = 30 
rolls_per_frame = 1

sns.set_style('whitegrid')  # white background with gray grid lines
figure = plt.figure('Rolling a Six-Sided Die')  # Figure for animation
values = list(range(1, 7))  # die faces for display on x-axis
frequencies = [0] * 6  # six-element list of die frequencies

die_animation = animation.FuncAnimation(
figure, update, repeat=False, frames=number_of_frames, interval=33,
fargs=(rolls_per_frame, values, frequencies))

plt.show()  # display window`   
FlyingTeller
  • 17,638
  • 3
  • 38
  • 53
  • This code does not run at all. I get `NameError: name 'faces' is not defined` in the line `axes = sns.barplot(faces, frequencies, palette='bright') # new bars` and there is an indentation error in your `update` function. Can you [edit] and provide a code that runs? – FlyingTeller Aug 16 '22 at 07:53
  • Are you running this code in a jupyter notebook or as a script? – FlyingTeller Aug 16 '22 at 07:56
  • 1
    If you are in a notebook, try running `%matplotlib notebook` in the very first cell before executing your other code – FlyingTeller Aug 16 '22 at 08:00
  • Yeah,I was in notebook,it worked thanks a lot.Sorry for responding after ages. – jemmitbliss Sep 21 '22 at 18:43

0 Answers0