title: Standard Deviation Python Plotting
body: <p>I need some quick help with plotting the answers I get for a code. I'm pretty new to this, nonetheless, I'm trying to compute the standard deviation of the answers of the calculation, after which I need to plot the new answers of the standard deviation calculation just performed into a graph. The problem is the plot appears before the calculation is performed just giving an empty plot, and then allowing for the running of the code. Any help would be greatly appreciated.</p>
  
  <pre><code>from numpy import zeros
  from random import choice, random
  import math
  
  def create_lattice(nx,ny):
      possibleSpins = (-1,1)
      lattice = zeros((nx,ny))
      for i in range(nx):
          for j in range(ny):
              lattice[i][j] = choice(possibleSpins)
      return lattice
  
  def magnetization(nx, ny, lattice):
      magnet = 0.0
      for i in range(nx):
          for j in range(ny):
              magnet += (lattice[i][j]/(nx*ny))
      return magnet
  
  def ising_model(nsweeps, nx, ny, Js):
      magnet = 0.0
      s_energy = 0.0
      e_energy = 0.0
      d_energy = 0.0
      spin = 0.0
      rand = 0.0
      good = 0.0
      bad = 0.0
      nostep = 0.0
      lattice = create_lattice(nx, ny)
      magnet = magnetization(nx, ny, lattice)
      energies = zeros((nx,ny))
      print(lattice)
      # Each sweep is a complete look at the lattice
      for sweeps in range(nsweeps):
          for i in range(nx):
              for j in range(ny):
                  spin = lattice[i][j]
                  s_energy = -1 * Js * spin * (lattice[(i-1)][j] + lattice[i][(j-1)] + lattice[i][(j+1)%ny] + lattice[(i+1)%nx][j])
                  lattice[i][j] = -1 * spin
                  e_energy = -1 * Js * lattice[i][j] * (lattice[(i-1)][j] + lattice[i][(j-1)] + lattice[i][(j+1)%ny] + lattice[(i+1)%nx][j])
                  d_energy = e_energy - s_energy
                  rand = random()
                  if d_energy &lt;= 0 :
                      good = good + 1
                      magnet += ((-2*spin)/(nx*ny))
                      answers.append(magnet)
                  elif d_energy &gt; 0 and rand &lt;= math.exp(-1 * d_energy):
                      bad = bad + 1
                      magnet += ((-2*spin)/(nx*ny))
                      answers.append(magnet)
                  else:
                      lattice[i][j] = spin
                      nostep = nostep + 1
                  print(magnet)    
      print(lattice)
      print(good)
      print(bad)
      print(nostep)
      # energies array is
      return energies
  
  answers = []
  stdofmag = []
  def standard_deviation():
      stdmag = statistics.stdev(answers)
      print(stdmag)
      stdofmag.append(stdmag)
  
  import matplotlib.pyplot as plt
  
  fig, ax = plt.subplots()
  ax.plot(stdofmag, 'r-', label = "Std of Magnetization")
  title_temp = "Magnetization"
  plt.title(title_temp, fontsize=12, fontweight='bold', color='green')
  ax.legend(loc='best', ncol=1, fancybox=True, shadow=True)
  plt.xlabel('Number of Iterations')
  plt.ylabel('Answer') 
  ax.grid(True)
  plt.show(block=True)
  </code></pre>
  
  <p>Disregard the x and y labels they're dummy variables.</p>