code: def update(frame_number):
      # Get an index which we can use to re-spawn the oldest raindrop.
      current_index = frame_number % n_drops
  
      # Make all colors more transparent as time progresses.
      rain_drops["color"][:, 3] -= 1.0 / len(rain_drops)
      rain_drops["color"][:, 3] = np.clip(
          rain_drops["color"][:, 3], 0, 1
      )
  
      # Make all circles bigger.
      rain_drops["size"] += rain_drops["growth"]
  
      # Pick a new position for oldest rain drop, resetting its size,
      # color and growth factor.
      rain_drops["position"][current_index] = np.random.uniform(0, 1, 2)
      rain_drops["size"][current_index] = 5
      rain_drops["color"][current_index] = (0, 0, 0, 1)
      rain_drops["growth"][current_index] = np.random.uniform(50, 200)
  
      # Update the scatter collection, with the new colors, sizes and positions.
      scat.set_edgecolors(rain_drops["color"])
      scat.set_sizes(rain_drops["size"])
      scat.set_offsets(rain_drops["position"])
  
imports: import matplotlib.pyplot
  import numpy
  from matplotlib.animation import FuncAnimation
label_desc: Use image node_id 1 for calling a global function with example usage: update(frame_number) without return types