Le module ui.Chart.image
contient un ensemble de fonctions permettant de réduire les objets Image
par région et d'afficher des graphiques à partir des résultats. Le choix de la fonction détermine la disposition des données dans le graphique, c'est-à-dire ce qui définit les valeurs des axes X et Y, et ce qui définit la série. Utilisez les descriptions et exemples de fonctions suivantes pour déterminer la fonction et le type de graphique les plus adaptés à votre objectif.
Fonctions de graphique
Utilisez les diagrammes de tracé suivants comme guide visuel pour comprendre comment chaque fonction organise les résultats de réduction de la région de l'image dans un graphique, c'est-à-dire quels éléments définissent les valeurs X, les valeurs Y et les séries.
Les régions de réduction sont représentées sur l'axe X, avec les valeurs d'une propriété d'élément sélectionnée comme libellé. Les séries sont définies par des noms de bandes dont les résultats de réduction de la région sont représentés sur l'axe des ordonnées.
Les bandes sont représentées sur l'axe X. Les séries sont libellées en fonction des valeurs d'une propriété d'élément géographique. La réduction de la région définie par la géométrie des éléments de série respectifs est représentée sur l'axe Y.
Les bandes de données sont représentées sur l'axe X. Les séries sont représentées par des valeurs uniques dans une bande de classe. La position de l'axe Y est définie par les résultats de réduction de la région pour les pixels composant chaque série.
Histogramme de fréquence pour les valeurs des bandes sélectionnées.
- Axe X: buckets d'histogramme pour les valeurs des bandes sélectionnées
- Axe Y: fréquence des pixels éligibles pour chaque bucket de l'histogramme
Exemple de données
Les exemples suivants reposent sur un FeatureCollection
composé de trois éléments d'écorégion qui définissent des régions permettant de réduire les données d'image. Les données Image
sont des normales climatiques PRISM, où les bandes décrivent les variables climatiques par mois, par exemple : Précipitations de juillet ou température moyenne de janvier.
Découvrez comment cet asset a été créé.
ui.Chart.image.byRegion
Graphique à colonnes
Dans cet exemple, les bandes d'images représentant la température moyenne mensuelle sont réduites à la moyenne parmi les pixels qui croisent chacune des trois écorégions. Les résultats sont représentés sous forme de colonnes par mois par écorégion, où la hauteur de la colonne indique la température moyenne mensuelle correspondante.
Éditeur de code (JavaScript)
// Import the example feature collection. var ecoregions = ee.FeatureCollection('projects/google/charts_feature_example'); // Load PRISM climate normals image collection; convert images to bands. var normClim = ee.ImageCollection('OREGONSTATE/PRISM/Norm81m').toBands(); // Define the chart and print it to the console. var chart = ui.Chart.image .byRegion({ image: normClim.select('[0-9][0-9]_tmean'), regions: ecoregions, reducer: ee.Reducer.mean(), scale: 500, xProperty: 'label' }) .setSeriesNames([ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]) .setChartType('ColumnChart') .setOptions({ title: 'Average Monthly Temperature by Ecoregion', hAxis: {title: 'Ecoregion', titleTextStyle: {italic: false, bold: true}}, vAxis: { title: 'Temperature (°C)', titleTextStyle: {italic: false, bold: true} }, colors: [ '604791', '1d6b99', '39a8a7', '0f8755', '76b349', 'f0af07', 'e37d05', 'cf513e', '96356f', '724173', '9c4f97', '696969' ] }); print(chart);
Graphique à barres
Le graphique à colonnes précédent peut être affiché sous forme de graphique à barres en remplaçant 'ColumnChart'
par 'BarChart'
dans l'entrée .setChartType()
.
var chart = ui.Chart.image .byRegion({ image: normClim.select('[0-9][0-9]_tmean'), regions: ecoregions, reducer: ee.Reducer.mean(), scale: 500, xProperty: 'label' }) .setSeriesNames([ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]) .setChartType('BarChart') .setOptions({ title: 'Average Monthly Temperature by Ecoregion', hAxis: { title: 'Temperature (°C)', titleTextStyle: {italic: false, bold: true} }, vAxis: {title: 'Ecoregion', titleTextStyle: {italic: false, bold: true}}, colors: [ '604791', '1d6b99', '39a8a7', '0f8755', '76b349', 'f0af07', 'e37d05', 'cf513e', '96356f', '724173', '9c4f97', '696969' ] });
Histogramme empilé
L'option de graphique isStacked
indique si les colonnes du graphique sont empilées ou non.
Plusieurs options sont disponibles pour l'empilement. Les exemples suivants illustrent l'utilisation des options 'absolute'
et 'relative'
.
Absolue
Un graphique à barres empilées absolu met en relation le total d'une variable numérique par incréments d'une série de variables catégorielles contribuant. Par exemple, dans cet exemple, les précipitations totales sont représentées sous la forme de l'accumulation des précipitations mensuelles sur une année, par écorégion. Les totaux mensuels de précipitations sont dérivés de bandes d'images, où chaque bande représente une grille du total moyen des précipitations pour un mois donné, réduit à la moyenne des pixels qui croisent chacune des trois écorégions. L'option de graphique isStacked
est définie sur 'absolute'
pour mettre en forme les résultats en valeurs absolues.
Éditeur de code (JavaScript)
// Import the example feature collection. var ecoregions = ee.FeatureCollection('projects/google/charts_feature_example'); // Load PRISM climate normals image collection; convert images to bands. var normClim = ee.ImageCollection('OREGONSTATE/PRISM/Norm81m').toBands(); // Define the chart and print it to the console. var chart = ui.Chart.image .byRegion({ image: normClim.select('[0-9][0-9]_ppt'), regions: ecoregions, reducer: ee.Reducer.mean(), scale: 500, xProperty: 'label' }) .setSeriesNames([ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]) .setChartType('ColumnChart') .setOptions({ title: 'Average Monthly Precipitation by Ecoregion', hAxis: {title: 'Ecoregion', titleTextStyle: {italic: false, bold: true}}, vAxis: { title: 'Precipitation (mm)', titleTextStyle: {italic: false, bold: true} }, colors: [ '604791', '1d6b99', '39a8a7', '0f8755', '76b349', 'f0af07', 'e37d05', 'cf513e', '96356f', '724173', '9c4f97', '696969' ], isStacked: 'absolute' }); print(chart);
Relative
Convertissez le graphique à barres empilées absolu précédent en graphique à barres empilées relatif en modifiant l'option de graphique isStacked
de 'absolute'
en 'relative'
. Un graphique à barres empilées relatif met en relation la proportion de séries de variables catégorielles contribuant au total d'une variable numérique.
Par exemple, dans cet exemple, les précipitations mensuelles sont représentées en proportion du total annuel, par écorégion.
var chart = ui.Chart.image .byRegion({ image: normClim.select('[0-9][0-9]_ppt'), regions: ecoregions, reducer: ee.Reducer.mean(), scale: 500, xProperty: 'label' }) .setSeriesNames([ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]) .setChartType('ColumnChart') .setOptions({ title: 'Average Monthly Precipitation by Ecoregion', hAxis: {title: 'Ecoregion', titleTextStyle: {italic: false, bold: true}}, vAxis: { title: 'Precipitation (mm)', titleTextStyle: {italic: false, bold: true} }, colors: [ '604791', '1d6b99', '39a8a7', '0f8755', '76b349', 'f0af07', 'e37d05', 'cf513e', '96356f', '724173', '9c4f97', '696969' ], isStacked: 'relative' });
Graphique à nuage de points
Les températures moyennes de janvier et de juillet pour un échantillon aléatoire de lieux dans l'État du Colorado sont représentées en fonction de l'altitude. Un DEM est échantillonné à l'aide de la fonction sample
, qui renvoie un FeatureCollection
avec une géométrie et une propriété d'élévation. Le FeatureCollection
obtenu est ensuite utilisé comme argument du paramètre regions
de la fonction ui.Chart.image.byRegion
.
Les séries sont définies par des bandes sélectionnées de l'image des normales climatiques d'entrée.
Éditeur de code (JavaScript)
// Load SRTM elevation data. var elev = ee.Image('CGIAR/SRTM90_V4').select('elevation'); // Subset Colorado from the TIGER States feature collection. var colorado = ee.FeatureCollection('TIGER/2018/States') .filter(ee.Filter.eq('NAME', 'Colorado')); // Draw a random sample of elevation points from within Colorado. var samp = elev.sample( {region: colorado, scale: 30, numPixels: 500, geometries: true}); // Load PRISM climate normals image collection; convert images to bands. var normClim = ee.ImageCollection('OREGONSTATE/PRISM/Norm81m').toBands(); // Define the chart and print it to the console. var chart = ui.Chart.image .byRegion({ image: normClim.select(['01_tmean', '07_tmean']), regions: samp, reducer: ee.Reducer.mean(), scale: 500, xProperty: 'elevation' }) .setSeriesNames(['Jan', 'Jul']) .setChartType('ScatterChart') .setOptions({ title: 'Average Monthly Colorado Temperature by Elevation', hAxis: { title: 'Elevation (m)', titleTextStyle: {italic: false, bold: true} }, vAxis: { title: 'Temperature (°C)', titleTextStyle: {italic: false, bold: true} }, pointSize: 4, dataOpacity: 0.6, colors: ['1d6b99', 'cf513e'], }); print(chart);
Graphique combiné
Pour trois écorégions d'une ee.FeatureCollection
, la température et les précipitations moyennes respectives pour le mois de juin sont représentées. Les résultats sont dérivés de la réduction de la région d'une image, où chaque bande est une grille de normales climatiques décrivant les précipitations et la température mensuelles. Les bandes représentant la température et les précipitations de juin sont un sous-ensemble. Étant donné que les précipitations et la température sont exprimées dans des unités différentes, deux axes Y sont utilisés en définissant les options series
et vAxes
. Notez l'utilisation de l'option series.targetAxisIndex
pour définir la variable à tracer sur les axes Y de droite et de gauche. Des symboles spécifiques à la série (points et colonnes) sont utilisés pour distinguer plus facilement les deux variables comme ayant des unités différentes.
Éditeur de code (JavaScript)
// Import the example feature collection. var ecoregions = ee.FeatureCollection('projects/google/charts_feature_example'); // Load PRISM climate normals image collection; convert images to bands. var normClim = ee.ImageCollection('OREGONSTATE/PRISM/Norm81m').toBands(); // Define the chart and print it to the console. var chart = ui.Chart.image .byRegion({ image: normClim.select(['06_tmean', '06_ppt']), regions: ecoregions, reducer: ee.Reducer.mean(), scale: 500, xProperty: 'label' }) .setSeriesNames(['Precipitation', 'Temperature']) .setChartType('ColumnChart') .setOptions({ title: 'Average June Temperature and Precipitation by Ecoregion', series: { 0: {targetAxisIndex: 1, type: 'bar', color: '1d6b99'}, 1: { targetAxisIndex: 0, type: 'line', lineWidth: 0, pointSize: 10, color: 'e37d05' } }, hAxis: {title: 'Ecoregion', titleTextStyle: {italic: false, bold: true}}, vAxes: { 0: { title: 'Temperature (°C)', baseline: 0, titleTextStyle: {italic: false, bold: true, color: 'e37d05'} }, 1: { title: 'Precipitation (mm)', titleTextStyle: {italic: false, bold: true, color: '1d6b99'} }, }, bar: {groupWidth: '40%'}, }); print(chart);
ui.Chart.image.regions
Exemples de configuration
La fonction ui.Chart.image.regions
accepte une liste qui vous permet de contrôler le libellé et l'ordre des noms de bandes le long de l'axe X en leur attribuant des valeurs numériques. Les graphiques suivants utilisent cette option pour définir les noms de bandes comme libellés de mois et les trier par ordre chronologique en fonction des précipitations moyennes mensuelles.
Graphique à colonnes
Ce graphique indique les précipitations moyennes totales par mois pour trois écorégions.
Les résultats sont dérivés de la réduction de la région d'une image, où chaque bande est une grille de précipitations totales moyennes pour un mois donné. Les bandes sont tracées le long de l'axe X, et les régions définissent la série. Notez les opérations côté client utilisées pour définir les entrées des options de graphique xLabels
et ticks
pour la disposition personnalisée de l'axe X. Les opérations côté client sont requises, car les options fournies à la fonction setOptions
doivent être des objets côté client (voir Client par rapport au serveur pour comprendre la distinction). Pour convertir en graphique à barres, utilisez 'BarChart'
comme entrée .setChartType()
.
Éditeur de code (JavaScript)
// Import the example feature collection. var ecoregions = ee.FeatureCollection('projects/google/charts_feature_example'); // Load PRISM climate normals image collection, convert images to bands, and // subset precipitation bands. var precip = ee.ImageCollection('OREGONSTATE/PRISM/Norm81m') .toBands() .select('[0-9][0-9]_ppt'); // Define a dictionary that associates band names with values and labels. var precipInfo = { '01_ppt': {v: 1, f: 'Jan'}, '02_ppt': {v: 2, f: 'Feb'}, '03_ppt': {v: 3, f: 'Mar'}, '04_ppt': {v: 4, f: 'Apr'}, '05_ppt': {v: 5, f: 'May'}, '06_ppt': {v: 6, f: 'Jun'}, '07_ppt': {v: 7, f: 'Jul'}, '08_ppt': {v: 8, f: 'Aug'}, '09_ppt': {v: 9, f: 'Sep'}, '10_ppt': {v: 10, f: 'Oct'}, '11_ppt': {v: 11, f: 'Nov'}, '12_ppt': {v: 12, f: 'Dec'} }; // Organize precipitation information into objects for defining x values and // their tick labels. Note that chart options provided to the .setOptions() // function must be client-side objects, which is why a client-side for // loop is used to iteratively populate lists from the above dictionary. var xPropVals = []; // List to codify x-axis band names as values. var xPropLabels = []; // Holds dictionaries that label codified x-axis values. for (var key in precipInfo) { xPropVals.push(precipInfo[key].v); xPropLabels.push(precipInfo[key]); } // Define the chart and print it to the console. var chart = ui.Chart.image .regions({ image: precip, regions: ecoregions, reducer: ee.Reducer.mean(), scale: 5e3, seriesProperty: 'label', xLabels: xPropVals }) .setChartType('ColumnChart') .setOptions({ title: 'Average Ecoregion Precipitation by Month', hAxis: { title: 'Month', titleTextStyle: {italic: false, bold: true}, ticks: xPropLabels }, vAxis: { title: 'Precipitation (mm)', titleTextStyle: {italic: false, bold: true} }, colors: ['f0af07', '0f8755', '76b349'], }); print(chart);
Graphique en courbes
Le graphique à colonnes précédent peut être affiché sous forme de graphique en courbes en remplaçant la valeur 'ColumnChart'
par 'LineChart'
dans l'entrée .setChartType()
.
var chart = ui.Chart.image .regions({ image: precip, regions: ecoregions, reducer: ee.Reducer.mean(), scale: 500, seriesProperty: 'label', xLabels: xPropVals }) .setChartType('LineChart') .setOptions({ title: 'Average Ecoregion Precipitation by Month', hAxis: { title: 'Month', titleTextStyle: {italic: false, bold: true}, ticks: xPropLabels }, vAxis: { title: 'Precipitation (mm)', titleTextStyle: {italic: false, bold: true} }, colors: ['f0af07', '0f8755', '76b349'], lineSize: 5 });
Graphique en aires
Le graphique à colonnes précédent peut être affiché sous forme de graphique en aires en remplaçant 'ColumnChart'
par 'AreaChart'
dans l'entrée .setChartType()
.
var chart = ui.Chart.image .regions({ image: precip, regions: ecoregions, reducer: ee.Reducer.mean(), scale: 500, seriesProperty: 'label', xLabels: xPropVals }) .setChartType('AreaChart') .setOptions({ title: 'Average Ecoregion Precipitation by Month', hAxis: { title: 'Month', titleTextStyle: {italic: false, bold: true}, ticks: xPropLabels }, vAxis: { title: 'Precipitation (mm)', titleTextStyle: {italic: false, bold: true} }, colors: ['f0af07', '0f8755', '76b349'], lineSize: 5 });
Graphique à secteurs
Les précipitations mensuelles moyennes sont affichées en proportion du total moyen des précipitations annuelles pour une écorégion forestière. Les bandes d'images représentant les précipitations mensuelles sont extraites d'un ensemble de données sur les normales climatiques et réduites à la moyenne des pixels qui croisent l'écorégion.
Éditeur de code (JavaScript)
// Import the example feature collection, subset the forest ecoregion. var forest = ee.FeatureCollection('projects/google/charts_feature_example') .filter(ee.Filter.eq('label', 'Forest')); // Load PRISM climate normals image collection, convert images to bands. var normClim = ee.ImageCollection('OREGONSTATE/PRISM/Norm81m').toBands(); // Define x-axis labels to replace default band names. var monthNames = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]; // Define the chart and print it to the console. var chart = ui.Chart.image .regions({ image: normClim.select('[0-9][0-9]_ppt'), regions: forest, reducer: ee.Reducer.mean(), scale: 5e3, seriesProperty: 'label', xLabels: monthNames }) .setChartType('PieChart') .setOptions({ title: 'Average Monthly Precipitation for Forest Ecoregion', colors: [ '604791', '1d6b99', '39a8a7', '0f8755', '76b349', 'f0af07', 'e37d05', 'cf513e', '96356f', '724173', '9c4f97', '696969' ] }); print(chart);
Graphique en anneau
Convertissez l'exemple de graphique à secteurs en graphique en anneau en définissant l'option de graphique pieHole
. Essayez 0,4 et 0,6 comme valeurs initiales.
var chart = ui.Chart.image .regions({ image: normClim.select('[0-9][0-9]_ppt'), regions: forest, reducer: ee.Reducer.mean(), scale: 5e3, seriesProperty: 'label', xLabels: monthNames }) .setChartType('PieChart') .setOptions({ title: 'Average Monthly Precipitation for Forest Ecoregion', colors: [ '604791', '1d6b99', '39a8a7', '0f8755', '76b349', 'f0af07', 'e37d05', 'cf513e', '96356f', '724173', '9c4f97', '696969' ], pieHole: 0.4 });
ui.Chart.image.byClass
Graphique en courbes
La fonction ui.Chart.image.byClass
représente les statistiques sur les valeurs de bande pour les pixels dans les régions classées d'une "bande de classe". Dans cet exemple, il est utilisé pour afficher le profil spectral de trois écorégions. Les éléments d'une écorégion sont rastérisés et ajoutés en tant que bande à une image de réflectance de surface (SR) MODIS. Pour chaque classe d'écorégion et bande de réflectance, la moyenne des pixels respectifs est calculée et représentée sur l'axe Y. Les longueurs d'onde centrales des bandes SR MODIS définissent les repères et les libellés de l'axe X. Notez que l'option de graphique en courbes curveType
est définie sur 'function'
pour lisser les lignes.
Éditeur de code (JavaScript)
// Import the example feature collection. var ecoregions = ee.FeatureCollection('projects/google/charts_feature_example'); // Convert ecoregion feature collection to a classified image. var regionsBand = ecoregions .reduceToImage({properties: ['value'], reducer: ee.Reducer.first()}) .rename('class'); // Define a MODIS surface reflectance composite. var modisSr = ee.ImageCollection('MODIS/006/MOD09A1') .filter(ee.Filter.date('2018-06-01', '2018-09-01')) .select('sur_refl_b0[0-7]') .mean(); // Reorder reflectance bands by ascending wavelength and // add the classified ecoregions image as a band to the SR collection and var modisSrClass = modisSr.select([2, 3, 0, 1, 4, 5, 6]).addBands(regionsBand); // Define a list of MODIS SR wavelengths for x-axis labels. var wavelengths = [469, 555, 655, 858, 1240, 1640, 2130]; // Define the chart and print it to the console. var chart = ui.Chart.image .byClass({ image: modisSrClass, classBand: 'class', region: ecoregions, reducer: ee.Reducer.mean(), scale: 500, classLabels: ['Desert', 'Forest', 'Grassland'], xLabels: wavelengths }) .setChartType('ScatterChart') .setOptions({ title: 'Ecoregion Spectral Signatures', hAxis: { title: 'Wavelength (nm)', titleTextStyle: {italic: false, bold: true}, viewWindow: {min: wavelengths[0], max: wavelengths[6]} }, vAxis: { title: 'Reflectance (x1e4)', titleTextStyle: {italic: false, bold: true} }, colors: ['f0af07', '0f8755', '76b349'], pointSize: 0, lineSize: 5, curveType: 'function' }); print(chart);
ui.Chart.image.histogram
Un histogramme des valeurs de pixel dans une région entourant Salt Lake City (Utah, États-Unis) est affiché pour trois bandes de réflectance de surface MODIS.
Éditeur de code (JavaScript)
// Define a MODIS surface reflectance composite. var modisSr = ee.ImageCollection('MODIS/006/MOD09A1') .filter(ee.Filter.date('2018-06-01', '2018-09-01')) .select(['sur_refl_b01', 'sur_refl_b02', 'sur_refl_b06']) .mean(); // Define a region to calculate histogram for. var histRegion = ee.Geometry.Rectangle([-112.60, 40.60, -111.18, 41.22]); // Define the chart and print it to the console. var chart = ui.Chart.image.histogram({image: modisSr, region: histRegion, scale: 500}) .setSeriesNames(['Red', 'NIR', 'SWIR']) .setOptions({ title: 'MODIS SR Reflectance Histogram', hAxis: { title: 'Reflectance (x1e4)', titleTextStyle: {italic: false, bold: true}, }, vAxis: {title: 'Count', titleTextStyle: {italic: false, bold: true}}, colors: ['cf513e', '1d6b99', 'f0af07'] }); print(chart);