แผนภูมิอาร์เรย์และแผนภูมิรายการ

ฟังก์ชัน ui.Chart.array.values มีวิธีการแสดงผลแผนภูมิจากออบเจ็กต์ ee.Array และ ee.List

ตัวอย่างต่อไปนี้ใช้ข้อมูลอาร์เรย์และลิสต์ที่สร้างขึ้นโดยการลดแถบของรูปภาพและข้อมูลเมตาของรูปภาพโดยใช้ตัวลด ee.Reducer.toList() โปรดทราบว่าชุดรายการและ/หรืออาร์เรย์ที่มีความยาวเท่ากันตามแกนหนึ่งๆ จะแสดงเป็นผังได้ด้วย ui.Chart.array.values

แผนภูมิกระจายของee.Array

การลดพื้นที่ของรูปภาพตาม ee.Reducer.toList() จะสร้างพจนานุกรมของรายการค่าพิกเซล 1 รายการสำหรับแต่ละย่านในรูปภาพหนึ่งๆ ในที่นี้ จะใช้เพื่อดึงรายการค่าการสะท้อนแสงสีแดง NIR และ SWIR จากภาพ MODIS สำหรับพิกเซลที่ตัดกับเขตนิเวศที่มีป่าไม้ ระบบจะแสดงค่าการสะท้อนแสงสีแดงบนแกน X และค่า NIR และ SWIR บนแกน Y

ชิ้นงาน projects/google/charts_feature_example ที่ใช้ในตัวอย่างนี้เพื่อแสดงเขตนิเวศที่มีป่าไม้พัฒนาขึ้นเพื่อสาธิต ซึ่งเป็นชุดรูปหลายเหลี่ยมเขตนิเวศ 3 รูปที่มีพร็อพเพอร์ตี้ที่อธิบายสภาพภูมิอากาศปกติ

เครื่องมือแก้ไขโค้ด (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'));

// 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

คุณพล็อตออบเจ็กต์ลิสต์ 2 รายการได้โดยใช้ฟังก์ชัน ui.Chart.array.values จากตัวอย่างก่อนหน้า รายการค่าของแกน x และ y ที่แสดงการสะท้อนแสงสีแดงและ SWIR จะแสดงผลเป็นผังกระจาย

เครื่องมือแก้ไขโค้ด (JavaScript)

// 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() จะสร้างพจนานุกรมของรายการค่าพิกเซล 1 รายการสำหรับแต่ละย่านความถี่ของภาพ หากภูมิภาคเป็นเส้นดังในกรณีนี้ ระบบจะสร้างแนวตัดทางภูมิศาสตร์ได้เมื่อรวมแถบละติจูดและลองจิจูดไว้ในรูปภาพที่น่าสนใจ ในที่นี้ ระบบจะดึงข้อมูลค่าพิกเซลของลองจิจูดและระดับความสูงจากแนว transect เป็นตัวแปรแยกต่างหากและพล็อตลงในแกน x และ y ตามลำดับ

เครื่องมือแก้ไขโค้ด (JavaScript)

// 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() จะสร้างพจนานุกรมของรายการค่าพร็อพเพอร์ตี้ 1 รายการสําหรับพร็อพเพอร์ตี้ที่เลือกแต่ละรายการ ที่นี่ รายการพร็อพเพอร์ตี้ของเมฆปกคลุมและ RMSE เชิงเรขาคณิตจะสร้างขึ้นจากชุดภาพ Landsat 8 เป็นตัวแปรแยกกัน ระบบจะพล็อตตัวแปรของเมฆบนแกน X และ RMSE เชิงเรขาคณิตบนแกน Y

เครื่องมือแก้ไขโค้ด (JavaScript)

// 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

เครื่องมือแก้ไขโค้ด (JavaScript)

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