Make a series of frames of the planetary orbits that can be assembled into a movie.
    q is a Nx3B array.  t indexes time points.  3B columns are (x, y, z) for the bodies in order.

def make_frame(fig, ax, plot_x: np.ndarray, plot_y: np.ndarray, frame_num: int, 
               bodies: List[str], plot_colors: Dict[str, str], markersize_tbl: Dict[str, float],
               fname: str):
    """
    Make a series of frames of the planetary orbits that can be assembled into a movie.
    q is a Nx3B array.  t indexes time points.  3B columns are (x, y, z) for the bodies in order.
    """
    # Clear the axis
    ax.clear()

    ax.set_title(f'Inner Planetary Orbits in 2018')
    ax.set_xlabel('x in J2000.0 Frame; Astronomical Units (au)')
    ax.set_ylabel('y in J2000.0 Frame; Astronomical Units (au)')

    # Scale and tick size
    a = 2.0
    da = 1.0
    ticks = np.arange(-a, a+da, da)

    # Set limits and ticks
    ax.set_xlim(-a, a)
    ax.set_ylim(-a, a)
    ax.set_xticks(ticks)
    ax.set_yticks(ticks)

    # Plot the orbit of each body
    for k, body in enumerate(bodies[0:5]):
        ax.plot(plot_x[k], plot_y[k], label=body, color=plot_colors[body], 
                linewidth=0, markersize = markersize_tbl[body], marker='o')    
    ax.grid()

    # Save this frame
    fig.savefig(f'{fname}_{frame_num:05d}.png')