<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def plot_moc(moc, order=None, antialias=0, filename=None, projection='cart', color='blue', title='', coord_sys='C', graticule=True, **kwargs):
 """Plot a MOC using Healpy. This generates a plot of the MOC at the specified order, or the MOC's current order if this is not specified. The MOC is flattened at an order of `order + antialias` to generate intermediate color levels. :param order: HEALPix order at which to generate the plot. :param antialias: number of additional HEALPix orders to use for intermediate color levels. (There can be `4 ** antialias` levels.) :param filename: file in which to save plot. If not specified then the plot is shown with `plt.show()`. :param projection: map projection to be used --- can be shortened to 4 characters. One of: * `'cart[esian]'` (uses `healpy.visufunc.cartview`) * `'moll[weide]'` (uses `healpy.visufunc.mollview`) * `'gnom[onic]'` (uses `healpy.visufunc.gnomview`) :param color: color scheme. One of: * `'blue'` * `'green'` * `'red'` * `'black'` :param title: title of the plot. :param coord_sys: Healpy coordinate system code for the desired plot coordinates. One of: * `'C'` --- Celestial (equatorial) * `'G'` --- Galactic * `'E'` --- Ecliptic :param graticule: whether or not to draw a graticule. :param \*\*kwargs: passed to the selected Healpy plotting function. """


    # Process arguments.
    plotargs = {'xsize': 3200, 'cbar': False, 'notext': True}

    if order is None:
        order = moc.order

    if projection.startswith('cart'):
        plotter = healpy.visufunc.cartview
    elif projection.startswith('moll'):
        plotter = healpy.visufunc.mollview
    elif projection.startswith('gnom'):
        plotter = healpy.visufunc.gnomview
    else:
        raise ValueError('Unknown projection: {0}'.format(projection))

    if color == 'blue':
        plotargs['cmap'] = LinearSegmentedColormap.from_list(
            'white-blue', ['#FFFFFF', '#0000AA'])
    elif color == 'green':
        plotargs['cmap'] = LinearSegmentedColormap.from_list(
            'white-green', ['#FFFFFF', '#008800'])
    elif color == 'red':
        plotargs['cmap'] = LinearSegmentedColormap.from_list(
            'white-red', ['#FFFFFF', '#FF0000'])
    elif color == 'black':
        plotargs['cmap'] = LinearSegmentedColormap.from_list(
            'white-black', ['#FFFFFF', '#000000'])
    else:
        raise ValueError('Unknown color: {0}'.format(color))

    if coord_sys == 'C':
        pass
    elif coord_sys == 'G':
        plotargs['coord'] = ('C', 'G')
    elif coord_sys == 'E':
        plotargs['coord'] = ('C', 'E')
    else:
        raise ValueError('Unknown coordinate system: {0}'.format(coord_sys))

    # Any other arguments are passed the Healpy plotter directly.
    plotargs.update(kwargs)

    # Create a Numpy array which is zero for points outside the MOC and one
    # for points inside the MOC.
    map = np.zeros(12 * 4 ** order)
    antialias_shift = 2 * antialias

    for cell in moc.flattened(order + antialias):
        map[cell >> antialias_shift] += 1.0

    # Plot the Numpy array using Healpy.
    plotter(map, nest=True, title=title, **plotargs)

    if graticule:
        healpy.visufunc.graticule()

    if filename is not None:
        plt.savefig(filename)
    else:
        plt.show()