Das ui.Chart.image
-Modul enthält eine Reihe von Funktionen zum Reduzieren von Image
-Objekten nach Region(en) und zum Rendern von Diagrammen aus den Ergebnissen. Die Auswahl der Funktion bestimmt die Anordnung der Daten im Diagramm, d.h., was die Werte der X‑ und Y‑Achse und was die Reihe definiert. Anhand der folgenden Funktionsbeschreibungen und ‑beispiele können Sie die für Ihren Zweck am besten geeignete Funktion und den am besten geeigneten Diagrammtyp ermitteln.
Diagrammfunktionen
Anhand der folgenden Plotdiagramme können Sie sich ein Bild davon machen, wie die einzelnen Funktionen die Ergebnisse der Bildregionenreduktion in einem Diagramm anordnen, d.h., welche Elemente X-Werte, Y-Werte und Reihen definieren.
Reduzierungsregionen werden entlang der X-Achse dargestellt und mit Werten einer ausgewählten Feature-Eigenschaft beschriftet. Die Reihen werden durch Bandnamen definiert, deren Ergebnisse der regionalen Reduzierung entlang der y-Achse dargestellt werden.
Die Bänder werden entlang der X-Achse dargestellt. Die Reihen sind mit Werten einer Featureeigenschaft gekennzeichnet. Die Verringerung der durch die Geometrie der jeweiligen Reihenmerkmale definierten Region wird entlang der y-Achse dargestellt.
Datenbänder werden entlang der x-Achse dargestellt. Reihen werden durch eindeutige Werte in einem Klassenband dargestellt. Die Position der Y-Achse wird durch die Ergebnisse der Regionsreduktion für die Pixel der einzelnen Reihen bestimmt.
Häufigkeitshistogramm für Werte der ausgewählten Bänder.
- X-Achse: Histogramm-Buckets für Werte der ausgewählten Bänder
- Y-Achse: Häufigkeit der Pixel, die für jeden Histogramm-Bucket infrage kommen
Beispieldaten
In den folgenden Beispielen wird ein FeatureCollection
verwendet, das aus drei Ökoregion-Elementen besteht, die Regionen definieren, in denen Bilddaten reduziert werden sollen. Die Image
-Daten sind PRISM-Klimanormalwerte, bei denen Bänder die Klimavariablen pro Monat beschreiben, z.B. Juli-Niederschlagsmenge oder Januar-Durchschnittstemperatur.
Weitere Informationen zum Erstellen dieses Assets
ui.Chart.image.byRegion
Säulendiagramm
In diesem Beispiel werden Bildbänder, die die durchschnittliche monatliche Temperatur darstellen, auf den Mittelwert der Pixel reduziert, die sich mit den drei Ökoregionen überschneiden. Die Ergebnisse werden nach Ökoregion in Spalten pro Monat dargestellt. Die Spaltenhöhe gibt die jeweilige durchschnittliche Monatstemperatur an.
// 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);
Balkendiagramm
Das vorherige Säulendiagramm kann als Balkendiagramm gerendert werden, indem Sie die Eingabe für .setChartType()
von 'ColumnChart'
in 'BarChart'
ändern.
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' ] });
Gestapeltes Säulendiagramm
Mit der Diagrammoption isStacked
wird festgelegt, ob Diagrammsaulen gestapelt werden.
Es gibt mehrere Optionen für das Stapeln. In den folgenden Beispielen wird die Verwendung der Optionen 'absolute'
und 'relative'
veranschaulicht.
Absolut
In einem absoluten gestapelten Balkendiagramm wird die Summe einer numerischen Variablen in Intervallen einer beitragenden Reihe kategorischer Variablen dargestellt. In diesem Beispiel wird beispielsweise die Gesamtniederschlagsmenge als Summe der monatlichen Niederschlagsmengen über ein Jahr nach Ökoregion dargestellt. Die monatlichen Niederschlagssummen werden aus Bildbändern abgeleitet. Jedes Band stellt ein Raster mit der durchschnittlichen Niederschlagssumme für einen bestimmten Monat dar, reduziert auf den Mittelwert der Pixel, die sich mit jeder der drei Ökoregionen überschneiden. Die Diagrammoption isStacked
ist auf 'absolute'
festgelegt, um die Ergebnisse als absolute Werte zu formatieren.
// 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);
Verwandter
Konvertieren Sie das vorherige absolute gestapelte Balkendiagramm in ein relatives gestapeltes Balkendiagramm, indem Sie die Diagrammoption isStacked
von 'absolute'
in 'relative'
ändern. In einem relativen gestapelten Balkendiagramm wird der Anteil der beitragenden kategorischen Variablenreihen auf die Gesamtzahl einer numerischen Variablen bezogen.
In diesem Beispiel wird der monatliche Niederschlag beispielsweise als Anteil am jährlichen Gesamtniederschlag nach Ökoregion dargestellt.
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' });
Streudiagramm
Die durchschnittlichen Temperaturen im Januar und Juli für eine zufällige Stichprobe von Orten im US-Bundesstaat Colorado werden als Funktion der Höhe dargestellt. Ein digitales Höhenmodell wird mit der Funktion sample
gemustert, die ein FeatureCollection
mit einer Geometrie und einem Höhenattribut zurückgibt. Das Ergebnis FeatureCollection
wird dann als Argument für den regions
-Parameter der ui.Chart.image.byRegion
-Funktion verwendet.
Die Reihen werden durch ausgewählte Bänder des Eingabebilds mit den Klimanormalwerten definiert.
// 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);
Kombinationsdiagramm
Für drei Ökoregionen in einer ee.FeatureCollection
werden die jeweiligen Durchschnittstemperaturen und Niederschlagsmengen für den Juni dargestellt. Die Ergebnisse stammen aus der Regionenreduktion eines Bildes, bei der jeder Streifen ein Raster mit Klimanormalwerten ist, die die monatlichen Niederschläge und Temperaturen beschreiben. Die Streifen, die die Temperatur und Niederschläge im Juni darstellen, sind ein Teilbereich. Da Niederschlag und Temperatur in verschiedenen Einheiten angegeben sind, werden zwei y-Achsen verwendet. Dazu legen Sie die Optionen series
und vAxes
fest. Beachten Sie, dass mit der Option series.targetAxisIndex
festgelegt wird, welche Variable auf der rechten und linken Y-Achse dargestellt wird. Mithilfe von reihenspezifischen Symbolen (Punkten und Säulen) können die beiden Variablen leichter unterschieden werden, da sie unterschiedliche Einheiten haben.
// 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
Beispiel für eine Einrichtung
Die Funktion ui.Chart.image.regions
akzeptiert eine Liste, mit der Sie das Label und die Reihenfolge der Bandnamen entlang der X-Achse steuern können, indem Sie ihnen numerische Werte zuweisen. In den folgenden Diagrammen werden mit dieser Option Bandnamen als Monatslabels festgelegt und in chronologischer Reihenfolge nach durchschnittlichen monatlichen Niederschlägen sortiert.
Säulendiagramm
Dieses Diagramm zeigt die durchschnittliche Niederschlagsmenge pro Monat für drei Ökoregionen.
Die Ergebnisse stammen aus der Regionsreduktion eines Bildes, bei der jeder Band ein Raster mit dem durchschnittlichen Gesamtniederschlag für einen bestimmten Monat ist. Die Bänder werden entlang der X-Achse dargestellt und die Regionen definieren die Reihe. Beachten Sie die clientseitigen Vorgänge, mit denen Eingaben für die Diagrammoptionen xLabels
und ticks
für die benutzerdefinierte Anordnung der X-Achse definiert werden. Clientvorgänge sind erforderlich, da die für die setOptions
-Funktion bereitgestellten Optionen clientseitige Objekte sein müssen. Weitere Informationen finden Sie unter Client und Server. Wenn Sie ein Balkendiagramm erstellen möchten, geben Sie 'BarChart'
als .setChartType()
-Eingabe ein.
// 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);
Liniendiagramm
Das vorherige Säulendiagramm kann als Liniendiagramm gerendert werden, indem Sie die Eingabe für .setChartType()
von 'ColumnChart'
in 'LineChart'
ändern.
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 });
Flächendiagramm
Das vorherige Säulendiagramm kann als Flächendiagramm gerendert werden, indem Sie die Eingabe für .setChartType()
von 'ColumnChart'
in 'AreaChart'
ändern.
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 });
Kreisdiagramm
Die durchschnittliche monatliche Niederschlagsmenge wird als Anteil der durchschnittlichen jährlichen Niederschlagsmenge für eine Waldökoregion angezeigt. Bildbänder, die monatliche Niederschläge darstellen, werden aus einem Dataset mit Klimanormalwerten abgeleitet und auf den Mittelwert der Pixel reduziert, die sich mit der Ökoregion überschneiden.
// 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);
Ringdiagramm
Konvertieren Sie das Beispiel für ein Tortendiagramm in ein Donut-Diagramm, indem Sie die Diagrammoption pieHole
festlegen. Versuchen Sie es mit 0,4 und 0,6 als Anfangswerte.
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
Liniendiagramm
Mit der Funktion ui.Chart.image.byClass
werden Statistiken zu Bandwerten für Pixel in klassifizierten Regionen eines „Klassenbands“ dargestellt. In diesem Beispiel wird damit das Spektralprofil von drei Ökoregionen dargestellt. Die Ecoregion-Elemente werden gerastert und einem MODIS-Bild der Oberflächenreflexion (SR) als Band hinzugefügt. Für jede Ökoregion und jeden Reflexionsband wird der jeweilige Pixelmittelwert berechnet und auf der Y-Achse dargestellt. Die zentralen Wellenlängen der MODIS-SR-Bänder definieren die Markierungen und Beschriftungen der X‑Achse. Die Option für das Liniendiagramm curveType
ist auf 'function'
festgelegt, um die Linien zu glätten.
// 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
Ein Histogramm der Pixelwerte in einer Region um Salt Lake City, Utah, USA, wird für drei MODIS-Bänder der Oberflächenreflexion angezeigt.
// 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);