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

تابع 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/061/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);