Resim Grafikleri

ui.Chart.image modülü, Image nesnelerini bölgelere göre azaltmak ve sonuçlardan grafikler oluşturmak için bir dizi işlev içerir. İşlev seçimi, grafikteki verilerin düzenlenmesini belirler. Yani x ve y ekseni değerlerini ve seriyi neyin tanımladığını belirler. Amacınıza en uygun işlevi ve grafik türünü belirlemek için aşağıdaki işlev açıklamalarını ve örnekleri kullanın.

Grafik işlevleri

Her işlevin, görüntü bölgesi azaltma sonuçlarını bir grafikte nasıl düzenlediğini (ör. x değerlerini, y değerlerini ve serileri hangi öğelerin tanımladığını) anlamak için aşağıdaki nokta gösterimi diyagramlarını görsel bir kılavuz olarak kullanın.

ui.Chart.image.byRegion

Azaltma bölgeleri, x ekseni boyunca çizilir ve seçilen bir özellik özelliğinin değerlerine göre etiketlenir. Seriler, bölge azaltma sonuçları y ekseni boyunca çizilen bant adlarıyla tanımlanır.

ui.Chart.image.regions

Bantlar x ekseni boyunca çizilir. Seriler, bir özellik mülkünün değerlerine göre etiketlenir. İlgili seri özelliklerinin geometrisi tarafından tanımlanan bölgenin azaltılması y ekseni boyunca çizilir.

ui.Chart.image.byClass

Veri bantları x ekseni boyunca çizilir. Seriler, sınıf aralığındaki benzersiz değerlerle temsil edilir. Y ekseni konumu, her seriyi oluşturan pikseller için bölge azaltma sonuçlarına göre belirlenir.

ui.Chart.image.histogram

Seçilen bantların değerleri için sıklık histogramı.

  • X ekseni: Seçilen bantların değerleri için histogram paketleri
  • Y ekseni: Her histogram paketi için uygun piksellerin sıklığı

Örnek veriler

Aşağıdaki örneklerde, görüntü verilerinin azaltılacağı bölgeleri tanımlayan üç ekolojik bölge özelliğinden oluşan bir FeatureCollection kullanılmaktadır. Image verileri, bantların aylık iklim değişkenlerini tanımladığı PRISM iklim normalleridir. Örneğin, Temmuz ayındaki yağış miktarı veya Ocak ayının ortalama sıcaklığı. Bu öğenin nasıl oluşturulduğunu öğrenin.

ui.Chart.image.byRegion

Sütun grafik

Bu örnekte, aylık ortalama sıcaklığı temsil eden görüntü bantları, üç ekolojik bölgenin her birini kesiştiği pikseller arasındaki ortalamaya indirgenir. Sonuçlar, ekolojik bölgeye göre aylık sütunlar halinde gösterilir. Sütun yüksekliği, ilgili aylık ortalama sıcaklığı gösterir.

Kod Düzenleyici (JavaScript)

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

Çubuk grafik

Önceki sütun grafiği, .setChartType() girişi 'ColumnChart' yerine 'BarChart' olarak değiştirilerek çubuk grafik olarak oluşturulabilir.

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'
          ]
        });

Yığınlı sütun grafik

isStacked grafik seçeneği, grafik sütunlarının yığılmış olup olmadığını belirtir. Gruplandırma için çeşitli seçenekler sunulur. Aşağıdaki örneklerde 'absolute' ve 'relative' seçeneklerinin kullanımı gösterilmektedir.

Mutlak

Mutlak yığılmış çubuk grafik, katkıda bulunan kategorik değişken serisinin artışlarına göre bir sayısal değişkenin toplamını ilişkilendirir. Örneğin, bu örnekte toplam yağış, ekolojik bölgeye göre bir yıl boyunca aylık yağışların birikimi olarak gösterilmektedir. Aylık toplam yağış miktarları, görüntü bantlarından türetilir. Her bant, belirli bir ay için ortalama toplam yağış ızgarasını temsil eder. Bu ızgara, üç ekolojik bölgenin her birini kesiştiği piksellerin ortalamasına indirgenir. Sonuçları mutlak değerler olarak biçimlendirmek için isStacked grafik seçeneği 'absolute' olarak ayarlanır.

Kod Düzenleyici (JavaScript)

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

Akraba

Önceki mutlak yığılmış çubuk grafiği'ni, isStacked grafik seçeneğini 'absolute' yerine 'relative' olarak değiştirerek göreceli yığılmış çubuk grafiğe dönüştürün. Göreceli yığılmış çubuk grafik, katkıda bulunan kategorik değişken serisinin oranını bir sayısal değişkenin toplamına bağlar. Örneğin, bu örnekte aylık yağış, eko bölgeye göre yıllık toplam yağış oranında gösterilmektedir.

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

Dağılım grafiği

Colorado eyaletinde rastgele seçilen bir konum grubu için Ocak ve Temmuz ayının ortalama sıcaklıkları, yüksekliğe göre işlenir. DEM, geometri ve yükseklik mülkü içeren bir FeatureCollection döndüren sample işlevi kullanılarak örneklenir. Elde edilen FeatureCollection, ui.Chart.image.byRegion işlevinin regions parametresinin bağımsız değişkeni olarak kullanılır. Seriler, giriş normal iklim resminin seçili bantlarına göre tanımlanır.

Kod Düzenleyici (JavaScript)

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

Karma grafik

Bir ee.FeatureCollection içindeki üç eko bölge için Haziran ayına ait ortalama sıcaklık ve yağış değerleri noktayla gösterilir. Sonuçlar, her bandın aylık yağış ve sıcaklığı açıklayan normal iklim ızgaraları olduğu bir görüntünün bölge azaltmasından elde edilir. Haziran ayı sıcaklığını ve yağış miktarını gösteren bantlar alt kümedir. Yağış ve sıcaklık farklı birimlerde olduğundan series ve vAxes seçenekleri ayarlanarak iki y ekseni kullanılır. Hangi değişkenin sağ ve sol y eksenine çizileceğini tanımlamak için series.targetAxisIndex seçeneğinin kullanıldığını unutmayın. İki değişkenin farklı birimlere sahip olduğunu daha kolay ayırt etmek için serilere özgü semboller (noktalar ve sütunlar) kullanılır.

Kod Düzenleyici (JavaScript)

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

Örnek kurulum

ui.Chart.image.regions işlevi, sayısal değerler atayarak x eksenindeki bant adlarının etiketini ve sırasını kontrol etmenize olanak tanıyan bir liste kabul eder. Aşağıdaki grafiklerde, bant adlarını ay etiketleri olarak ayarlamak ve bunları aylık ortalama yağış miktarına göre kronolojik sıraya koymak için bu seçenek kullanılır.

Sütun grafik

Bu grafikte, üç ekolojik bölge için aylık toplam ortalama yağış miktarı gösterilmektedir. Sonuçlar, her bandın belirli bir ay için ortalama toplam yağış ızgarasıdır. Bantlar x ekseni boyunca çizilir ve bölgeler seriyi tanımlar. X ekseninin özel düzenlenmesi için xLabels ve ticks grafik seçeneklerinin girişlerini tanımlamak üzere kullanılan istemci tarafı işlemleri dikkate alın. setOptions işlevine sağlanan seçenekler istemci tarafı nesneler olması gerektiğinden istemci işlemleri gereklidir (farklılığı anlamak için İstemci ve sunucu bölümüne bakın). Çubuk grafiğe dönüştürmek için .setChartType() girişi olarak 'BarChart' kullanın.

Kod Düzenleyici (JavaScript)

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

Çizgi grafik

Önceki sütun grafiği, .setChartType() girişi 'ColumnChart' yerine 'LineChart' olarak değiştirilerek çizgi grafik olarak oluşturulabilir.

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

Alan grafiği

Önceki sütun grafiği, .setChartType() girişi 'ColumnChart' yerine 'AreaChart' olarak değiştirilerek alan grafiği olarak oluşturulabilir.

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

Pasta grafik

Aylık ortalama yağış, bir orman eko bölgesinin ortalama yıllık toplam yağış oranının bir oranı olarak gösterilir. Aylık yağış miktarını gösteren görüntü bantları, normal iklim verileri veri kümesinden alt küme olarak alınır ve eko bölgeyle kesişen piksellerin ortalamasına indirilir.

Kod Düzenleyici (JavaScript)

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

Halka grafik

pieHolePasta grafiği örneğini, grafik seçeneğini ayarlayarak halka grafiğe dönüştürün. Başlangıç değerleri olarak 0,4 ve 0,6'yı deneyin.

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

Çizgi grafik

ui.Chart.image.byClass işlevi, "sınıf bandı"nın sınıflandırılmış bölgelerindeki pikseller için bant değeri istatistiklerini noktayla gösterir. Bu örnekte, üç ekolojik bölgenin spektral profilini görüntülemek için kullanılmıştır. Eko bölge özellikleri rasterleştirilir ve MODIS yüzey yansıması (SR) resmine bant olarak eklenir. Her eko bölge sınıfı ve yansıma bandı için ilgili piksel ortalaması hesaplanır ve y eksenine çizilir. MODIS SR bantlarının merkez dalga boyları, x ekseni işaretlerini ve etiketlerini tanımlar. curveType çizgi grafiği seçeneğinin, çizgilerin yumuşatılması için 'function' olarak ayarlandığını unutmayın.

Kod Düzenleyici (JavaScript)

// 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 yüzey yansıma bandı için ABD, Utah, Salt Lake City'yi çevreleyen bir bölgedeki piksel değerlerinin histogramı gösterilmektedir.

Kod Düzenleyici (JavaScript)

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