The ui.Chart.image
module contains a set of functions for rendering charts
from the results of spatiotemporal reduction of images within an ImageCollection
. The choice of function dictates the arrangement of data in
the chart, i.e., what defines x- and y-axis values and what defines the series.
Use the following function descriptions and examples to determine the best
function for your purpose.
Chart functions
Use the following plot diagrams as a visual guide to understand how each
function arranges spatiotemporal image collection reduction results in a chart;
i.e., what elements define x values, y values, and series. Note that ui.Chart.image.doySeries*
functions take two reducers: one for region
reduction ( regionReducer
) and another for intra-annual coincident day-of-year
reduction ( yearReducer
). Examples in the following sections use ee.Reducer.mean()
as the argument for both of these parameters.
Image date is plotted along the x-axis according to the system:time_start
property. Series are defined by image bands. Y-axis values
are the reduction of images, by date, for a single region.
Image date is plotted along the x-axis according to the system:time_start
property. Series are defined by regions. Y-axis values
are the reduction of images, by date, for a single image band.
Image day-of-year is plotted along the x-axis according to the system:time_start
property. Series are defined by image bands. Y-axis values
are the reduction of image pixels in a given region, grouped by day-of-year.
ui.Chart.image.doySeriesByYear
Image day-of-year is plotted along the x-axis according to the system:time_start
property. Series are defined by years present in the ImageCollection
. Y-axis values are the reduction of image pixels in a given
region, grouped by day-of-year, for a selected image band.
ui.Chart.image.doySeriesByRegion
Image day-of-year is plotted along the x-axis according to the system:time_start
property. Series are defined by regions. Y-axis values are
the reduction of image pixels in a given region, grouped by day-of-year, for a
selected image band.
Example data
The following examples rely on an ImageCollection
that is a time series of
MODIS-based NDVI and EVI. Region reduction is performed on ecoregions defined by
features in a FeatureCollection
designed for demonstration purposes
( learn how it was made
).
ui.Chart.image.series
Use ui.Chart.image.series
to display an image time series for a given region;
each image band is presented as a unique series. It is useful for comparing the
time series of individual image bands. Here, a MODIS
image collection with bands representing NDVI and EVI vegetation indices
are plotted. The date of every image observation is included along the
x-axis, while the mean reduction of pixels intersecting a forest ecoregion
defines the y-axis.
Code Editor (JavaScript)
// Import the example feature collection and subset the forest feature. var forest = ee . FeatureCollection ( 'projects/google/charts_feature_example' ) . filter ( ee . Filter . eq ( 'label' , 'Forest' )); // Load MODIS vegetation indices data and subset a decade of images. var vegIndices = ee . ImageCollection ( 'MODIS/061/MOD13A1' ) . filter ( ee . Filter . date ( '2010-01-01' , '2020-01-01' )) . select ([ 'NDVI' , 'EVI' ]); // Define the chart and print it to the console. var chart = ui . Chart . image . series ({ imageCollection : vegIndices , region : forest , reducer : ee . Reducer . mean (), scale : 500 , xProperty : 'system:time_start' }) . setSeriesNames ([ 'EVI' , 'NDVI' ]) . setOptions ({ title : 'Average Vegetation Index Value by Date for Forest' , hAxis : { title : 'Date' , titleTextStyle : { italic : false , bold : true }}, vAxis : { title : 'Vegetation index (x1e4)' , titleTextStyle : { italic : false , bold : true } }, lineWidth : 5 , colors : [ 'e37d05' , '1d6b99' ], curveType : 'function' }); print ( chart );
ui.Chart.image.seriesByRegion
Use ui.Chart.image.seriesByRegion
to display a single image band time
series for multiple regions; each region is presented as a unique series. It is
useful for comparing the time series of a single band among several regions.
Here, a MODIS image collection representing an NDVI time series
is plotted for three ecoregions. The date of every image observation is
included along the x-axis, while mean reduction of pixels intersecting
forest, desert, and grasslands ecoregions define y-axis series.
Code Editor (JavaScript)
// Import the example feature collection. var ecoregions = ee . FeatureCollection ( 'projects/google/charts_feature_example' ); // Load MODIS vegetation indices data and subset a decade of images. var vegIndices = ee . ImageCollection ( 'MODIS/061/MOD13A1' ) . filter ( ee . Filter . date ( '2010-01-01' , '2020-01-01' )) . select ([ 'NDVI' , 'EVI' ]); // Define the chart and print it to the console. var chart = ui . Chart . image . seriesByRegion ({ imageCollection : vegIndices , band : 'NDVI' , regions : ecoregions , reducer : ee . Reducer . mean (), scale : 500 , seriesProperty : 'label' , xProperty : 'system:time_start' }) . setOptions ({ title : 'Average NDVI Value by Date' , hAxis : { title : 'Date' , titleTextStyle : { italic : false , bold : true }}, vAxis : { title : 'NDVI (x1e4)' , titleTextStyle : { italic : false , bold : true } }, lineWidth : 5 , colors : [ 'f0af07' , '0f8755' , '76b349' ], }); print ( chart );
ui.Chart.image.doySeries
Use ui.Chart.image.doySeries
to display a day-of-year time series for a
given region; each image band is presented as a unique series. It is useful for
reducing observations occurring on the same day-of-year, across multiple
years, to compare e.g. average annual NDVI and EVI profiles from MODIS, as in
this example.
Code Editor (JavaScript)
// Import the example feature collection and subset the grassland feature. var grassland = ee . FeatureCollection ( 'projects/google/charts_feature_example' ) . filter ( ee . Filter . eq ( 'label' , 'Grassland' )); // Load MODIS vegetation indices data and subset a decade of images. var vegIndices = ee . ImageCollection ( 'MODIS/061/MOD13A1' ) . filter ( ee . Filter . date ( '2010-01-01' , '2020-01-01' )) . select ([ 'NDVI' , 'EVI' ]); // Define the chart and print it to the console. var chart = ui . Chart . image . doySeries ({ imageCollection : vegIndices , region : grassland , regionReducer : ee . Reducer . mean (), scale : 500 , yearReducer : ee . Reducer . mean (), startDay : 1 , endDay : 365 }) . setSeriesNames ([ 'EVI' , 'NDVI' ]) . setOptions ({ title : 'Average Vegetation Index Value by Day of Year for Grassland' , hAxis : { title : 'Day of year' , titleTextStyle : { italic : false , bold : true } }, vAxis : { title : 'Vegetation index (x1e4)' , titleTextStyle : { italic : false , bold : true } }, lineWidth : 5 , colors : [ 'e37d05' , '1d6b99' ], }); print ( chart );
ui.Chart.image.doySeriesByYear
Use ui.Chart.image.doySeriesByYear
to display a day-of-year time series for a
given region and image band, where each distinct year in the image collection is
presented as a unique series. It is useful for comparing annual time series
among years. For instance, in this example, annual MODIS-derived NDVI profiles
for a grassland ecoregion are plotted for years 2012 and 2019, providing
convenient year-over-year interpretation.
Code Editor (JavaScript)
// Import the example feature collection and subset the grassland feature. var grassland = ee . FeatureCollection ( 'projects/google/charts_feature_example' ) . filter ( ee . Filter . eq ( 'label' , 'Grassland' )); // Load MODIS vegetation indices data and subset years 2012 and 2019. var vegIndices = ee . ImageCollection ( 'MODIS/061/MOD13A1' ) . filter ( ee . Filter . or ( ee . Filter . date ( '2012-01-01' , '2013-01-01' ), ee . Filter . date ( '2019-01-01' , '2020-01-01' ))) . select ([ 'NDVI' , 'EVI' ]); // Define the chart and print it to the console. var chart = ui . Chart . image . doySeriesByYear ({ imageCollection : vegIndices , bandName : 'NDVI' , region : grassland , regionReducer : ee . Reducer . mean (), scale : 500 , sameDayReducer : ee . Reducer . mean (), startDay : 1 , endDay : 365 }) . setOptions ({ title : 'Average NDVI Value by Day of Year for Grassland' , hAxis : { title : 'Day of year' , titleTextStyle : { italic : false , bold : true } }, vAxis : { title : 'NDVI (x1e4)' , titleTextStyle : { italic : false , bold : true } }, lineWidth : 5 , colors : [ '39a8a7' , '9c4f97' ], }); print ( chart );
ui.Chart.image.doySeriesByRegion
Use ui.Chart.image.doySeriesByRegion
to display a single image band
day-of-year time series for multiple regions, where each distinct region is
presented as a unique series. It is useful for comparing annual single-band time
series among regions. For instance, in this example, annual MODIS-derived NDVI
profiles for forest, desert, and grassland ecoregions are plotted, providing a
convenient comparison of NDVI response by region. Note that intra-annual
observations occurring on the same day-of-year are reduced by their mean.
Code Editor (JavaScript)
// Import the example feature collection. var ecoregions = ee . FeatureCollection ( 'projects/google/charts_feature_example' ); // Load MODIS vegetation indices data and subset a decade of images. var vegIndices = ee . ImageCollection ( 'MODIS/061/MOD13A1' ) . filter ( ee . Filter . date ( '2010-01-01' , '2020-01-01' )) . select ([ 'NDVI' , 'EVI' ]); // Define the chart and print it to the console. var chart = ui . Chart . image . doySeriesByRegion ({ imageCollection : vegIndices , bandName : 'NDVI' , regions : ecoregions , regionReducer : ee . Reducer . mean (), scale : 500 , yearReducer : ee . Reducer . mean (), seriesProperty : 'label' , startDay : 1 , endDay : 365 }) . setOptions ({ title : 'Average NDVI Value by Day of Year' , hAxis : { title : 'Day of year' , titleTextStyle : { italic : false , bold : true } }, vAxis : { title : 'NDVI (x1e4)' , titleTextStyle : { italic : false , bold : true } }, lineWidth : 5 , colors : [ 'f0af07' , '0f8755' , '76b349' ], }); print ( chart );