def cortex_plot_colors(the_map,<EOL>color=None, cmap=None, vmin=None, vmax=None, alpha=None,<EOL>underlay='<STR_LIT>', mask=None):
<EOL>if color is None:<EOL><INDENT>color = np.full((the_map.vertex_count, <NUM_LIT:4>), <NUM_LIT:0.5>)<EOL>color[:,<NUM_LIT:3>] = <NUM_LIT:0><EOL><DEDENT>try:<EOL><INDENT>clr = matplotlib.colors.to_rgba(color)<EOL>color = np.ones((the_map.vertex_count,<NUM_LIT:4>)) * matplotlib.colors.to_rgba(clr)<EOL><DEDENT>except Exception: pass<EOL>if pimms.is_vector(color) or pimms.is_str(color):<EOL><INDENT>p = the_map.property(color)<EOL>if cmap is None:<EOL><INDENT>(cmap,(vmn,vmx)) = guess_cortex_cmap(color)<EOL>if vmin is None: vmin = vmn<EOL>if vmax is None: vmax = vmx<EOL><DEDENT>color = apply_cmap(p, cmap, vmin=vmin, vmax=vmax)<EOL><DEDENT>if not pimms.is_matrix(color):<EOL><INDENT>color = to_rgba(the_map.map(color))<EOL><DEDENT>color = np.array(color)<EOL>if color.shape[<NUM_LIT:1>] != <NUM_LIT:4>: color = np.hstack([color, np.ones([color.shape[<NUM_LIT:0>], <NUM_LIT:1>])])<EOL>if underlay is not None:<EOL><INDENT>if pimms.is_str(underlay) and underlay.lower() in ['<STR_LIT>', '<STR_LIT>']:<EOL><INDENT>underlay = apply_cmap(the_map.prop('<STR_LIT>'), cmap_curvature, vmin=-<NUM_LIT:1>, vmax=<NUM_LIT:1>)<EOL><DEDENT>else:<EOL><INDENT>try: underlay = np.ones((the_map.vertex_count, <NUM_LIT:4>)) * to_rgba(underlay)<EOL>except Exception: raise ValueError('<STR_LIT>')<EOL><DEDENT><DEDENT>if alpha is not None:<EOL><INDENT>if pimms.is_number(alpha): alpha = np.full(color.shape[<NUM_LIT:0>], alpha)<EOL>else: alpha = the_map.property(alpha)<EOL>color[:,<NUM_LIT:3>] *= alpha<EOL>neg = (alpha < <NUM_LIT:0>)<EOL>color[neg,<NUM_LIT:3>] = -alpha[neg]<EOL><DEDENT>alpha = color[:,<NUM_LIT:3>]<EOL>if mask is not None:<EOL><INDENT>ii = the_map.mask(mask, indices=True)<EOL>tmp = np.zeros(len(color))<EOL>tmp[ii] = color[ii,<NUM_LIT:3>]<EOL>color[:,<NUM_LIT:3>] = tmp<EOL><DEDENT>if underlay is not None:<EOL><INDENT>color = color_overlap(underlay, color)<EOL><DEDENT>return color<EOL>
cortex_plot_colors(mesh, opts...) yields the cortex colors as a matrix of RGBA rows for the
  given mesh and options. 

The following options are accepted:
  * color (default: None) specifies the color to plot for each vertex; this argument may take a
    number of forms:
      * None, do not plot a color over the underlay (the default)
      * a matrix of RGB or RGBA values, one per vertex
      * a property vector or a string naming a property, in which case the cmap, vmin, and vmax
        arguments are used to generate colors
      * a function that, when passed a single argument, a dict of the properties of a single
        vertex, yields an RGB or RGBA list for that vertex.
  * cmap (default: 'log_eccentricity') specifies the colormap to use in plotting if the color
    argument provided is a property.
  * vmin (default: None) specifies the minimum value for scaling the property when one is passed
    as the color option. None means to use the min value of the property.
  * vmax (default: None) specifies the maximum value for scaling the property when one is passed
    as the color option. None means to use the max value of the property.
  * underlay (default: 'curvature') specifies the default underlay color to plot for the
    cortical surface; it may be None, 'curvature', or a color.
  * alpha (default None) specifies the alpha values to use for the color plot. If None, then
    leaves the alpha values from color unchanged. If a single number, then all alpha values in
    color are multiplied by that value. If a list of values, one per vertex, then this vector
    is multiplied by the alpha values. Finally, any negative value is set instead of multiplied.
    So, for example, if there were 3 vertices with:
      * color = ((0,0,0,1), (0,0,1,0.5), (0,0,0.75,0,8))
      * alpha = (-0.5, 1, 0.5)
    then the resulting colors plotted will be ((0,0,0,0.5), (0,0,1,0.5), (0,0,0.75,0,4)).
  * mask (default: None) specifies a mask to use for the mesh; this is passed through to_mask()
    to figure out the masking. Those vertices not in the mask are not plotted (but they will be
    plotted in the underlay if it is not None).