نمودارهای آرایه و فهرست

تابع ui.Chart.array.values ​​روشی را برای رندر کردن نمودارها از اشیاء ee.Array و ee.List ارائه می کند.

مثال‌های زیر به داده‌های آرایه و فهرستی که با کاهش باندهای تصویر و ابرداده‌های تصویر با استفاده از کاهنده ee.Reducer.toList() تولید می‌شوند، تکیه دارند. توجه داشته باشید که هر مجموعه ای از لیست ها و/یا آرایه هایی که طول یکسانی در امتداد یک محور معین داشته باشند را می توان با ui.Chart.array.values ​​ترسیم کرد.

نمودار پراکندگی منطقه ee.Array

کاهش ناحیه تصویر توسط ee.Reducer.toList() یک فرهنگ لغت از لیست های مقادیر پیکسل را تولید می کند، یکی برای هر باند در یک تصویر معین. در اینجا، از آن برای استخراج لیست‌های مقادیر بازتاب قرمز، NIR و SWIR از یک تصویر MODIS برای پیکسل‌های متقاطع یک منطقه زیست محیطی جنگلی استفاده می‌شود. مقادیر بازتاب قرمز در محور x و مقادیر NIR و SWIR در محور y رسم می شوند.

دارایی projects/google/charts_feature_example که در این مثال برای ترسیم یک منطقه زیست محیطی جنگلی استفاده شده است، برای اهداف نمایشی توسعه داده شده است. این مجموعه ای از سه چند ضلعی زیست محیطی با ویژگی هایی است که شرایط آب و هوایی را توصیف می کند.

ویرایشگر کد (جاوا اسکریپت)

// 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'));

// 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();

// Reduce MODIS reflectance bands by forest region; get a dictionary with
// band names as keys, pixel values as lists.
var pixelVals = modisSr.reduceRegion(
    {reducer: ee.Reducer.toList(), geometry: forest.geometry(), scale: 2000});

// Convert NIR and SWIR value lists to an array to be plotted along the y-axis.
var yValues = pixelVals.toArray(['sur_refl_b02', 'sur_refl_b06']);

// Get the red band value list; to be plotted along the x-axis.
var xValues = ee.List(pixelVals.get('sur_refl_b01'));

// Define the chart and print it to the console.
var chart = ui.Chart.array.values({array: yValues, axis: 1, xLabels: xValues})
                .setSeriesNames(['NIR', 'SWIR'])
                .setOptions({
                  title: 'Relationship Among Spectral Bands for Forest Pixels',
                  colors: ['1d6b99', 'cf513e'],
                  pointSize: 4,
                  dataOpacity: 0.4,
                  hAxis: {
                    'title': 'Red reflectance (x1e4)',
                    titleTextStyle: {italic: false, bold: true}
                  },
                  vAxis: {
                    'title': 'Reflectance (x1e4)',
                    titleTextStyle: {italic: false, bold: true}
                  }
                });
print(chart);

ee.List نمودار پراکندگی منطقه

دو شیء لیست را می توان با استفاده از تابع ui.Chart.array.values ​​رسم کرد. بر اساس مثال قبلی ، لیست‌های ارزش محور x و y که بازتاب قرمز و SWIR را نشان می‌دهند به صورت نمودار پراکندگی ارائه می‌شوند.

ویرایشگر کد (جاوا اسکریپت)

// Get Red and SWIR value lists; to be plotted along x and y axes, respectively.
// Note that the pixelVals object is defined in the previous code block.
var x = ee.List(pixelVals.get('sur_refl_b01'));
var y = ee.List(pixelVals.get('sur_refl_b06'));

// Define the chart and print it to the console.
var chart = ui.Chart.array.values({array: y, axis: 0, xLabels: x}).setOptions({
  title: 'Relationship Among Spectral Bands for Forest Pixels',
  colors: ['cf513e'],
  hAxis: {
    title: 'Red reflectance (x1e4)',
    titleTextStyle: {italic: false, bold: true}
  },
  vAxis: {
    title: 'SWIR reflectance (x1e4)',
    titleTextStyle: {italic: false, bold: true}
  },
  pointSize: 4,
  dataOpacity: 0.4,
  legend: {position: 'none'},
});
print(chart);

ee.List نمودار خط ترانسکت

کاهش ناحیه تصویر توسط ee.Reducer.toList() یک فرهنگ لغت از لیست های مقادیر پیکسل را تولید می کند، یکی برای هر باند تصویر. اگر منطقه یک خط باشد، مانند این مورد، زمانی که نوارهای طول و عرض جغرافیایی به عنوان نوار در تصویر مورد نظر گنجانده شوند، می توان یک ترانسکت جغرافیایی ایجاد کرد. در اینجا، لیست های مقادیر پیکسل طول و ارتفاع از امتداد خط ترانسکت به عنوان متغیرهای جداگانه استخراج شده و به ترتیب در محورهای x و y رسم می شوند.

ویرایشگر کد (جاوا اسکریپت)

// Define a line across the Olympic Peninsula, USA.
var transect = ee.Geometry.LineString([[-122.8, 47.8], [-124.5, 47.8]]);

// Define a pixel coordinate image.
var latLonImg = ee.Image.pixelLonLat();

// Import a digital surface model and add latitude and longitude bands.
var elevImg =
    ee.Image('NASA/NASADEM_HGT/001').select('elevation').addBands(latLonImg);

// Reduce elevation and coordinate bands by transect line; get a dictionary with
// band names as keys, pixel values as lists.
var elevTransect = elevImg.reduceRegion({
  reducer: ee.Reducer.toList(),
  geometry: transect,
  scale: 1000,
});

// Get longitude and elevation value lists from the reduction dictionary.
var lon = ee.List(elevTransect.get('longitude'));
var elev = ee.List(elevTransect.get('elevation'));

// Sort the longitude and elevation values by ascending longitude.
var lonSort = lon.sort(lon);
var elevSort = elev.sort(lon);

// Define the chart and print it to the console.
var chart = ui.Chart.array.values({array: elevSort, axis: 0, xLabels: lonSort})
                .setOptions({
                  title: 'Elevation Profile Across Longitude',
                  hAxis: {
                    title: 'Longitude',
                    viewWindow: {min: -124.50, max: -122.8},
                    titleTextStyle: {italic: false, bold: true}
                  },
                  vAxis: {
                    title: 'Elevation (m)',
                    titleTextStyle: {italic: false, bold: true}
                  },
                  colors: ['1d6b99'],
                  lineSize: 5,
                  pointSize: 0,
                  legend: {position: 'none'}
                });
print(chart);

برای افزودن سایه‌زنی در زیر خط .setChartType('AreaChart') را اعمال کنید:

print(chart.setChartType('AreaChart'));

ee.List نمودار پراکندگی ابرداده

کاهش ویژگی های مجموعه توسط ee.Reducer.toList() یک فرهنگ لغت از لیست های ارزش دارایی تولید می کند، یکی برای هر ویژگی انتخاب شده. در اینجا، فهرست‌های دارایی پوشش ابری و هندسی RMSE از مجموعه‌ای از تصاویر Landsat 8 به عنوان متغیرهای جداگانه تولید می‌شوند. متغیر پوشش ابر در امتداد محور x و RMSE هندسی در امتداد محور y رسم شده است.

ویرایشگر کد (جاوا اسکریپت)

// Import a Landsat 8 collection and filter to a single path/row.
var col = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
              .filter(ee.Filter.expression('WRS_PATH ==  45 && WRS_ROW == 30'));

// Reduce image properties to a series of lists; one for each selected property.
var propVals = col.reduceColumns({
                    reducer: ee.Reducer.toList().repeat(2),
                    selectors: ['CLOUD_COVER', 'GEOMETRIC_RMSE_MODEL']
                  })
                   .get('list');

// Get selected image property value lists; to be plotted along x and y axes.
var x = ee.List(ee.List(propVals).get(0));
var y = ee.List(ee.List(propVals).get(1));

// Define the chart and print it to the console.
var chart = ui.Chart.array.values({array: y, axis: 0, xLabels: x})
                .setChartType('ScatterChart')
                .setOptions({
                  title: 'Landsat 8 Image Collection Metadata (045030)',
                  colors: ['96356f'],
                  hAxis: {
                    title: 'Cloud cover (%)',
                    titleTextStyle: {italic: false, bold: true}
                  },
                  vAxis: {
                    title: 'Geometric RMSE (m)',
                    titleTextStyle: {italic: false, bold: true}
                  },
                  pointSize: 5,
                  dataOpacity: 0.6,
                  legend: {position: 'none'},
                });
print(chart);

ee.List نمودار پراکندگی تابع و نمودار خط

یک تابع را روی لیستی از مقادیر x ترسیم کنید تا لیست مربوطه از مقادیر y را محاسبه کنید. در اینجا، تابع sin() بر روی لیستی از مقادیر محور x ترسیم می شود تا لیست مربوطه از مقادیر محور y تولید شود. زمانی که لیست های x و y رسم می شوند، نمونه ای از موج سینوسی نشان داده می شود.

ویرایشگر کد (جاوا اسکریپت)

// Define a sequence from -2pi to +2pi in 50 increments.
var start = -2 * Math.PI;
var end = 2 * Math.PI;
var points = ee.List.sequence(start, end, null, 50);

// Evaluate the sin() function for each value in the points sequence.
var values = points.map(function(val) {
  return ee.Number(val).sin();
});

// Define the chart and print it to the console.
var chart = ui.Chart.array.values({array: values, axis: 0, xLabels: points})
                .setOptions({
                  title: 'Sine Function',
                  hAxis: {
                    title: 'radians',
                    viewWindowMode: 'maximized',
                    ticks: [
                      {v: start, f: '-2π'},
                      {v: -Math.PI, f: '-π'},
                      {v: 0, f: '0'},
                      {v: Math.PI, f: 'π'},
                      {v: end, f: '2π'}
                    ],
                    titleTextStyle: {italic: false, bold: true}
                  },
                  vAxis: {
                    title: 'sin(x)',
                    titleTextStyle: {italic: false, bold: true}
                  },
                  colors: ['39a8a7'],
                  lineWidth: 3,
                  pointSize: 7,
                  viewWindow: {min: start, max: end},
                  legend: {position: 'none'}
                });
print(chart);