Plots the given environment (EnvironmentFile object) and phenotypes
    (2d array of binary strings) onto the same image and saves
    the image based on the name of the environment file. The environment file
    will be represented by coloring square cells, while the phenotypes are
    represented as concentric circles indicating the set of tasks the organism
    at that location can perform.

    By default, color is determined using the palettes in the EnvironmentFile
    object passed as the first parameter. The easiest way to change color
    palettes is to assign new palettes to environment.task_palette and
    environment.resource_palette before calling this function. If either the
    environment or phenotypes grids contain integers greater than 1, you should
    pass a `denom` keyword argument indicating how to normalize them. Using
    differnet denoms for the environment and phenotypes is not currently
    supported (if you need to, you should probably just divide everything by
    the appropraite denoms before passing them to this funciton).

    Inputs:
          environment - an EnvironmentFile object indicatng the distribution
                         of resources and the appropriate palettes to use.
          phenotypes  - a 2d array of binary strings representing
                        the placement of phenotypes across the environment

    kwargs:
          denom - an integer indicating how to normalize numbers in the
                  environment and phenotype grids if neccesary.

def paired_environment_phenotype_grid_circles(environment,
                                              phenotypes, **kwargs):
    """
    Plots the given environment (EnvironmentFile object) and phenotypes
    (2d array of binary strings) onto the same image and saves
    the image based on the name of the environment file. The environment file
    will be represented by coloring square cells, while the phenotypes are
    represented as concentric circles indicating the set of tasks the organism
    at that location can perform.

    By default, color is determined using the palettes in the EnvironmentFile
    object passed as the first parameter. The easiest way to change color
    palettes is to assign new palettes to environment.task_palette and
    environment.resource_palette before calling this function. If either the
    environment or phenotypes grids contain integers greater than 1, you should
    pass a `denom` keyword argument indicating how to normalize them. Using
    differnet denoms for the environment and phenotypes is not currently
    supported (if you need to, you should probably just divide everything by
    the appropraite denoms before passing them to this funciton).

    Inputs:
          environment - an EnvironmentFile object indicatng the distribution
                         of resources and the appropriate palettes to use.
          phenotypes  - a 2d array of binary strings representing
                        the placement of phenotypes across the environment

    kwargs:
          denom - an integer indicating how to normalize numbers in the
                  environment and phenotype grids if neccesary.

    """
    denom, palette = get_kwargs(environment, kwargs)

    plot_world(environment, palette=environment.resource_palette, denom=denom)
    plot_phens_circles(phenotypes, palette=environment.task_palette)

    plt.savefig("phenotype_niches_circles"+environment.name, dpi=1000)

    return plt.gcf()