# histogram

`require(["esri/smartMapping/statistics/histogram"], function(histogram) { /* code goes here */ });`

`esri/smartMapping/statistics/histogram`

Generates a histogram based on data in a Layer for a given field. The returned object can be used for displaying a histogram in the UI within visualization authoring applications and analytical apps that query and display statistics.

**Known Limitations**

- Only FeatureLayer, SceneLayer, CSVLayer, GeoJSONLayer, and PointCloudLayer layer types are currently supported, except in the following scenarios:
- SceneLayers without the
`supportsRenderer`

and`supportsLayerQuery`

capabilities enabled, unless a predefined statistics object is passed to the`statistics`

parameter of the method in conjunction with the layer. To check a SceneLayer's capabilities, use the getFieldInfoUsage() method.

- SceneLayers without the
- You cannot generate statistics using SQL expressions for client-side FeatureLayers in a SceneView.

Moved from `esri/renderers/smartMapping/...`

at 4.16.

## Method Overview

Name | Return Type | Summary | Function | |
---|---|---|---|---|

Promise<HistogramResult> | Generates a histogram for data returned from a | more details | histogram |

### Method Details

- histogram(params){Promise<HistogramResult>}
Generates a histogram for data returned from a

`field`

in a given`layer`

. The returned object can be used for displaying a histogram to the UI in visualization authoring applications and analytical apps that query and display statistics.Parameters:Specification:params ObjectSee the table below for details on parameters that may be passed to this function.

Specification:The layer for which to generate a histogram.

field StringoptionalThe name of the numeric field for which the histogram will be generated. This property is ignored if a

`valueExpression`

is used.normalizationField StringoptionalThe field by which to normalize the values returned from the given

`field`

.classificationMethod StringoptionalThe method for classifying the data. See the table below for a list of possible values.

Possible Value Description natural-breaks Data values that cluster are placed into a single class. Class breaks occur where gaps exist between clusters. You should use this method if your data is unevenly distributed; that is, many features have the same or similar values and there are gaps between groups of values. equal-interval Each class has an equal range of values; in other words, the difference between the high and low value is equal for each class. You should use this method if your data is evenly distributed and you want to emphasize the difference in values between the features. quantile Each class has roughly the same number of features. If your data is evenly distributed and you want to emphasize the difference in relative position between features, you should use the quantile classification method. If, for example, the point values are divided into five classes, points in the highest class would fall into the top fifth of all points. standard-deviation Class breaks are placed above and below the mean value at intervals of `1`

,`0.5`

, or`0.25`

standard deviations until all the data values are included in a class.Possible Values:"equal-interval"|"natural-breaks"|"quantile"|"standard-deviation"

standardDeviationInterval NumberoptionalWhen

`classificationMethod = "standard-deviation"`

, this sets the interval at which each class break should be set (e.g.`0.25`

,`0.33`

,`0.5`

,`1`

).minValue NumberoptionalThe minimum bounding value for the histogram. Use this in conjunction with

`maxValue`

to generate a histogram between custom lower and upper bounds.maxValue NumberoptionalThe maximum bounding value for the histogram. Use this in conjunction with

`minValue`

to generate a histogram between custom lower and upper bounds.numBins NumberoptionalDefault Value: 10Indicates the number of classes to generate for the histogram.

valueExpression StringoptionalAn Arcade expression that returns a number. This expression can reference field values using the

`$feature`

global variable. This property overrides the`field`

property and therefore is used instead of an input`field`

value.sqlExpression StringoptionalA SQL expression evaluating to a number.

sqlWhere StringoptionalA SQL where clause used to filter features for the statistics query. For example, this is useful in situations where you want to avoid dividing by zero as is the case with creating a predominance visualization.

view ViewoptionalA SceneView or MapView instance is required when a

`valueExpression`

is specified.optional A subset of features for which to generate the histogram.

signal AbortSignaloptionalAllows for cancelable requests. If canceled, the promise will be rejected with an error named

`AbortError`

. See also AbortController.Returns:Type Description Promise<HistogramResult> Resolves to an instance of HistogramResult. Example:`histogram({ layer: featureLayer, valueExpression: "( ($feature.POP2020 - $feature.POP2010) / $feature.POP2010 ) * 100" view: mapView, numBins: 30 }).then(function(histogramResult){ colorSlider.histogram = histogramResult; });`

## Type Definitions

- HistogramResult
The result returned from the histogram() method.