Histogram
Simple example
A Histogram
can be used to visualize the distribution of a field in a layer. In ESRIEACT, the Histogram
component is a wrapper around the ESRI Histogram
widget. This widget still requires properties derived from the imperative use of smartMapping tools like histogram
, and possibly summaryStatistics
. As ESRIEACT's focus is on presentational components, the imperative use of smartMapping functions is not abstracted away.
Live Editor
function Example() { const layer = useRef<FeatureLayer>(null); const [layerReady, setLayerReady] = useState(false); const [histogramResult, setHistogramResult] = useState<HistogramResult>(null); const [stats, setStats] = useState<SummaryStatisticsResult>(null); useEffect(() => { if (layerReady) { const createHistogram = async () => { const histogramResult = await histogram({ layer: layer.current, field: "pop20", numBins: 50, }); setHistogramResult(histogramResult); const summaryStatisticsResult = await summaryStatistics({ layer: layer.current, field: "pop20", }); setStats(summaryStatisticsResult); }; createHistogram(); } }, [layerReady]); return ( <MapView ViewProperties={{ extent: OAHU_EXTENT_2 }} MapProperties={{ basemap: "topo-vector" }} style={{ height: "300px", width: "100%" }} > <FeatureLayer ref={layer} url={HI_CENSUS_2020_FL_URL} events={{ "layerview-create": () => setLayerReady(true) }} renderer={HI_CENSUS_2020_FL_RENDERER} /> <Legend position="top-right" /> <h4 className="mt-2! mb-0!">Population 2020</h4> <div id="histogram-container" style={{ height: "300px", width: "100%" }}> {histogramResult && stats && ( <Histogram container="histogram-container" bins={histogramResult.bins} min={histogramResult.minValue} max={histogramResult.maxValue} average={stats.avg} labelFormatFunction={function (value) { return Math.round(value).toLocaleString(); }} /> )} </div> <div className="flex justify-between"> <div>{histogramResult?.minValue}</div> <div>{histogramResult?.maxValue?.toLocaleString()}</div> </div> </MapView> ); }
Result
Loading...