ฟังก์ชัน 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);