code: def plot_spikes(spikes, view=False, filename=None, title=None):
      
      t_values = [t for t, I, v, u, f in spikes]
      v_values = [v for t, I, v, u, f in spikes]
      u_values = [u for t, I, v, u, f in spikes]
      I_values = [I for t, I, v, u, f in spikes]
      f_values = [f for t, I, v, u, f in spikes]
  
      fig = plt.figure()
      plt.subplot(4, 1, 1)
      plt.ylabel("Potential (mv)")
      plt.xlabel("Time (in ms)")
      plt.grid()
      plt.plot(t_values, v_values, "g-")
  
      if title is None:
          plt.title("Izhikevich's spiking neuron model")
      else:
          plt.title("Izhikevich's spiking neuron model ({0!s})".format(title))
  
      plt.subplot(4, 1, 2)
      plt.ylabel("Fired")
      plt.xlabel("Time (in ms)")
      plt.grid()
      plt.plot(t_values, f_values, "r-")
  
      plt.subplot(4, 1, 3)
      plt.ylabel("Recovery (u)")
      plt.xlabel("Time (in ms)")
      plt.grid()
      plt.plot(t_values, u_values, "r-")
  
      plt.subplot(4, 1, 4)
      plt.ylabel("Current (I)")
      plt.xlabel("Time (in ms)")
      plt.grid()
      plt.plot(t_values, I_values, "r-o")
  
      if filename is not None:
          plt.savefig(filename)
  
      if view:
          plt.show()
          plt.close()
          fig = None
  
      return fig
docs: Plots the trains for a single spiking neuron.