Adaptive Choropleth Mapper (ACM) is an open-source mapping tool for the visualization of multiple choropleth maps, which provides the following functions.
An automatic way to compute and set the same class intervals across different choropleth maps
A paired visualization of choropleth maps, with both global and local classifications
Linking and brushing across multiple choropleth maps in terms of map extents and class intervals
A stacked chart representing the temporal change of each class in choropleth maps over time
* Adaptive Choropleth Mapper(ACM) works best in FireFox. It has not been tested in IE.
Functionalities
ACM creates both the same and individually different classification intervals for multiple choropleth maps.
ACM provides several classification methods which are equal intervals, quantiles, standard deviation, arithmetic progression, geometric progression, and natural breaks classification methods.
For each classification method, the ACM provides users an option to see maps either with global classification or with local classification.
The global classification of ACM refers to the approach to the classification used in traditional choropleth mapping methods – i.e. they create only one single classification for all values in the entire study areas.
The local classification means that the program adaptively recomputes the class interval with values of polygons only within the current extent of the map whenever the users change the map extent by panning and zooming.
ACM automatically synchronizes choropleth maps in terms of map extents and class intervals. The synchronization of ACM has two types: continuoussynchronization and one-timesynchronization. The continuoussynchronization is appropriate for the relatively small data size of polygons or users who have state-of-the-art computers. The one-time synchronization function is appropriate with big data sets involving a large number of polygons or any users who do not have enough computing power in their computers.
continuous synchronization
A continuous synchronization works in the following way: Once any of maps is joined in the group, (1) the joined maps are outlined in blue to indicate the maps that will be synchronized, and (2) the maps in the group are adjusted to have the same map extents and class intervals continuingly whenever the user zooms in/out and pan any of the maps.
The buttons related to the synchronization functions are a “Link All” checkbox on the top of all maps, radio buttons such as “Create a group” “Join the group”, “Joined”, and “Leave the group” on the top of each map. please see the video demonstration about how to use all the buttons.
The strikethrough on the "Create a group" appears when the number of polygons in each map is greater than 1000. The strikethrough means that it is not recommended to use the continuous synchronization because it can slow down computers (unless your desktop is powerful)
one-time synchronization: While a user is in the middle of exploring one of the maps with its own classification interval by panning and zooming, the user can make the rest of the maps to have the same class interval and the map extent with the map that he is exploring by clicking the “Link” button of the map that he is exploring. The “Link” button provides only one-time synchronization in terms of the class interval and map extent only for all maps. After one-time synchronization, if the user changes the map extent in any of the maps, the shifted maps no longer have the same class interval and map extent with the rest of the maps.
ACM provides a stacked chart representing the temporal change of each class of choropleth maps over time. The stacked chart shows the change in the number of polygons belonging to each class interval. The chart appears only when the map extent and the class intervals of all maps are the same. To make all maps have the same map extent and class intervals, enable "Link All" or click "Link" on each of the maps.
Demo Videos
1. Spatiotemporal Visualization at Multi-Scales
2. Comparing Variables at Multi-Spatial Scales.
User's Guideline
There are 3 files that you need to include to visualize choropleth maps. The example files are available in the "data" folder. The file names below are examples.
GEO_CONFIG.js
NumOfMaps: The number of maps to be shown. You can enter 1 to 15. Fifteen is the maximum number of maps that you can visualize
InitialLayers: Enter the column name that you want to visualize on the map. For example, when you defined 5 maps in NumOfMaps above, enter 5. When you do not define, each map will be visualized in the order of columns.
Initial_map_center: define the center of your map using latitude and longitude - e.g., [33.01959536, -116.8387589].
Initial_map_zoom_level: define the zoom level of your map from 1 to 20
Stacked_Chart: true means the stacked chart will be visualized when all maps are synchronized. When you enter false, the stacked will not show up.
Num_Of_Decimal_Places: The number of decimal places on the map legend
Map_width: Enter the width of the map. it must be greater than 350px
Map_height: Enter the width of the map. it must be greater than 300px
Chart_width: Enter the width of the stacked chart. it must be greater than 350px.
Chart_height: Enter the height of the stacked chart. It must be greater than 300px.
GEO_JSON_SD.js : polygons in geojson. The first column is the key to join attributes to the geometry. The first column of this file must match with the first column in GEO_VARIABLES_SD.js
GEO_VARIABLES_SD.js : it contains the attributes. The first column is the key to join attributes to the geometry. The first column of this file must match with the first column in GEO_JSON_SD.js
In the main source code, "Adaptive_Choropleth_Mapper.html", the three file names below should match with your inputs.
Having errors in choropleth visualization? Check your input data and make sure that your input data do not contain non-numeric data. The null value must be represented in -9999. You might have #DIV/0! in your data when you preprocess your data in Excel.
Copyright (c) 2018 Su Han, Sergio Rey, Elijah Knaap, Wei Kang, Levi Wolf