ماژول ui.Chart.image
شامل مجموعه ای از توابع برای کاهش اشیاء Image
بر اساس منطقه(ها) و ارائه نمودارها از نتایج است. انتخاب تابع ترتیب داده ها را در نمودار دیکته می کند، به عنوان مثال، چه چیزی مقادیر محور x و y و چه چیزی سری را تعریف می کند. از توضیحات و مثال های تابع زیر برای تعیین بهترین تابع و نوع نمودار برای هدف خود استفاده کنید.
توابع نمودار
از نمودارهای نمودار زیر به عنوان یک راهنمای بصری استفاده کنید تا بفهمید که چگونه هر تابع نتایج کاهش ناحیه تصویر را در نمودار ترتیب می دهد. به عنوان مثال، چه عناصری مقادیر x، مقادیر y و سری را تعریف می کنند.
مناطق کاهش در امتداد محور x رسم می شوند که با مقادیر یک ویژگی ویژگی انتخاب شده برچسب گذاری می شوند. سری ها با نام های باندی تعریف می شوند که نتایج کاهش ناحیه آنها در امتداد محور y رسم می شود.
نوارها در امتداد محور x رسم می شوند. سری ها با مقادیر یک ویژگی مشخصه برچسب گذاری می شوند. کاهش منطقه تعریف شده توسط هندسه ویژگی های سری مربوطه در امتداد محور y رسم می شود.
باندهای داده در امتداد محور x رسم می شوند. سری ها با مقادیر منحصر به فرد در یک باند کلاس نشان داده می شوند. موقعیت محور Y با نتایج کاهش ناحیه برای پیکسل های تشکیل دهنده هر سری تعریف می شود.
هیستوگرام فرکانس برای مقادیر باندهای انتخاب شده.
- محور X : سطل های هیستوگرام برای مقادیر باندهای انتخاب شده
- محور Y : فرکانس پیکسل های واجد شرایط برای هر سطل هیستوگرام
داده های نمونه
مثالهای زیر متکی به FeatureCollection
متشکل از سه ویژگی ecoregion هستند که مناطقی را برای کاهش دادههای تصویر تعریف میکنند. داده های Image
نرمال های آب و هوایی PRISM هستند، که در آن باندها متغیرهای آب و هوا را در هر ماه توصیف می کنند. به عنوان مثال، بارش جولای یا دمای میانگین ژانویه. با نحوه ایجاد این دارایی آشنا شوید .
ui.Chart.image.byRegion
نمودار ستونی
در این مثال، باندهای تصویری که میانگین دمای ماهانه را نشان میدهند به میانگین پیکسلهایی که هر یک از سه منطقه زیست محیطی را قطع میکنند کاهش مییابد. نتایج بهصورت ستونهایی در هر ماه توسط منطقه بوم ترسیم میشوند، جایی که ارتفاع ستون میانگین دمای ماهانه مربوطه را نشان میدهد.
ویرایشگر کد (جاوا اسکریپت)
// 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);
نمودار میله ای
نمودار ستونی قبلی را می توان با تغییر ورودی .setChartType()
از 'ColumnChart'
به 'BarChart'
به صورت نمودار میله ای ارائه کرد.
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' ] });
نمودار ستونی انباشته
گزینه isStacked
نمودار مشخص می کند که آیا ستون های نمودار روی هم چیده شده اند یا خیر. چندین گزینه برای انباشتگی ارائه شده است. مثالهای زیر استفاده از گزینههای 'absolute'
و 'relative'
را نشان میدهند.
مطلق
نمودار میله ای انباشته مطلق، مجموع یک متغیر عددی را با افزایش یک سری متغیر طبقه ای کمک کننده، مرتبط می کند. به عنوان مثال، در این مثال، کل بارش به عنوان تجمع بارش ماهانه در طول یک سال، بر اساس منطقه بوم ترسیم می شود. مجموع بارش ماهانه از باندهای تصویری به دست میآید، که در آن هر باند نشاندهنده شبکهای از میانگین بارش کل برای یک ماه معین است که به میانگین پیکسلهایی که هر یک از سه منطقه زیست محیطی را قطع میکنند کاهش مییابد. گزینه نمودار isStacked
روی 'absolute'
تنظیم شده است تا نتایج را به صورت مقادیر مطلق قالب بندی کند.
ویرایشگر کد (جاوا اسکریپت)
// 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);
نسبی
با تغییر گزینه نمودار isStacked
از 'absolute'
به 'relative'
، نمودار میلهای انباشته مطلق قبلی را به نمودار میلهای پشتهای نسبی تبدیل کنید. یک نمودار میلهای انباشته نسبی، نسبت سری متغیرهای طبقهای را به مجموع یک متغیر عددی مرتبط میکند. به عنوان مثال، در این مثال، بارش ماهانه به عنوان نسبتی از کل بارش سالانه، بر اساس منطقه بوم ترسیم شده است.
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' });
نمودار پراکندگی
میانگین دمای ژانویه و جولای برای نمونه تصادفی از مکانها در ایالت کلرادو به عنوان تابعی از ارتفاع رسم شده است. یک DEM با استفاده از تابع sample
نمونه برداری می شود که یک FeatureCollection
با ویژگی هندسه و ارتفاع برمی گرداند. سپس FeatureCollection
حاصل به عنوان آرگومان پارامتر regions
تابع ui.Chart.image.byRegion
استفاده می شود. سری ها با باندهای انتخاب شده از تصویر معمولی آب و هوای ورودی تعریف می شوند.
ویرایشگر کد (جاوا اسکریپت)
// 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);
نمودار ترکیبی
برای سه منطقه زیست محیطی در یک ee.FeatureCollection
، میانگین دما و بارش مربوطه برای ژوئن ترسیم شده است. نتایج از کاهش منطقه یک تصویر که در آن هر نوار شبکه ای از نرمال های آب و هوایی است که بارش و دما ماهانه را توصیف می کند، به دست می آید. باندهایی که دما و بارش ژوئن را نشان می دهند زیر مجموعه هستند. از آنجایی که بارش و دما در واحدهای مختلف هستند، با تنظیم گزینه های series
و vAxes
از دو محور y استفاده می شود. به استفاده از گزینه series.targetAxisIndex
توجه کنید تا مشخص کنید کدام متغیر در سمت راست و چپ محور y رسم می شود. نمادهای سری خاص (نقاط و ستون) برای تشخیص آسانتر دو متغیر به عنوان دارای واحدهای متفاوت استفاده می شود.
ویرایشگر کد (جاوا اسکریپت)
// 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
تنظیم نمونه
تابع ui.Chart.image.regions
لیستی را می پذیرد که به شما امکان می دهد برچسب و ترتیب نام باندها را در امتداد محور x با اختصاص مقادیر عددی به آنها کنترل کنید. نمودارهای زیر از این گزینه برای تنظیم نام باندها به عنوان برچسب ماه و مرتب کردن آنها به ترتیب زمانی برای میانگین بارش ماهانه استفاده می کنند.
نمودار ستونی
این نمودار میانگین کل بارش در هر ماه را برای سه منطقه بوم گردی نشان می دهد. نتایج از کاهش ناحیه یک تصویر به دست میآید که در آن هر نوار شبکهای از میانگین بارندگی کل برای یک ماه معین است. نوارها در امتداد محور x رسم می شوند و نواحی سری را مشخص می کنند. به عملیات سمت سرویس گیرنده استفاده شده برای تعریف ورودی برای xLabels
و ticks
گزینه های نمودار برای آرایش سفارشی محور x توجه کنید. عملیات سرویس گیرنده مورد نیاز است زیرا گزینه های ارائه شده به تابع setOptions
باید اشیاء سمت سرویس گیرنده باشند (برای درک تمایز به Client در مقابل سرور مراجعه کنید). برای تبدیل به نمودار میله ای، 'BarChart'
به عنوان ورودی .setChartType()
استفاده کنید.
ویرایشگر کد (جاوا اسکریپت)
// 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);
نمودار خطی
نمودار ستونی قبلی را می توان با تغییر ورودی .setChartType()
از 'ColumnChart'
به 'LineChart'
به صورت نمودار خطی ارائه کرد.
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 });
نمودار مساحت
نمودار ستونی قبلی را می توان با تغییر ورودی .setChartType()
از 'ColumnChart'
به 'AreaChart'
به عنوان نمودار ناحیه ارائه کرد.
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 });
نمودار دایره ای
میانگین بارندگی ماهانه به عنوان نسبتی از میانگین کل بارندگی سالانه برای یک منطقه زیست محیطی جنگلی نمایش داده می شود. باندهای تصویری که بارش ماهانه را نشان میدهند از مجموعه دادههای نرمال آب و هوا زیرمجموعهای هستند و به میانگین پیکسلهایی که منطقه بوم را قطع میکنند کاهش مییابد.
ویرایشگر کد (جاوا اسکریپت)
// 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);
نمودار دونات
با تنظیم گزینه نمودار pieHole
، مثال نمودار دایره ای را به نمودار دونات تبدیل کنید. 0.4 و 0.6 را به عنوان مقادیر اولیه امتحان کنید.
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
نمودار خطی
تابع ui.Chart.image.byClass
آمار مقدار باند را برای پیکسل ها در مناطق طبقه بندی شده یک "باند کلاس" ترسیم می کند. در این مثال برای نمایش مشخصات طیفی سه منطقه بوم استفاده می شود. ویژگی های Ecoregion شطرنجی شده و به عنوان یک باند به یک تصویر بازتاب سطحی MODIS (SR) اضافه می شوند. برای هر کلاس ecoregion و باند بازتاب، میانگین پیکسل مربوطه محاسبه شده و به محور y رسم می شود. طول موج های مرکزی باندهای MODIS SR تیک ها و برچسب های محور x را مشخص می کنند. توجه داشته باشید که گزینه نمودار خطی curveType
به عنوان 'function'
برای صاف کردن خطوط تنظیم شده است.
ویرایشگر کد (جاوا اسکریپت)
// 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
هیستوگرام مقادیر پیکسل در منطقه اطراف سالت لیک سیتی، یوتا، ایالات متحده آمریکا برای سه باند بازتاب سطحی MODIS نمایش داده می شود.
ویرایشگر کد (جاوا اسکریپت)
// 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);