Simple map (UK constituencies)

Simple map of UK constituencies, with optional shading, points and popups

Updated 2 years ago by Template retirement home

This section documents API usage specific to this template, so for an introduction we suggest you refer to the generic API documentation instead.

template: _199

version: _3

Template data

There are two different formats in which you can supply data to this template. Which one will be more convenient for you likely depends on the source of your data, as described below.

Array of objects with arbitrary keys, and a bindings object

This format is most likely useful when you have data from an external source, such as CSV data loaded from d3-dsv. You should supply this attached to the opts.data, which might look like:

    {
        shading: [
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            ...
        ],
        points: [
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            ...
        ]
    }

... but with the keys being the column headers from your source data instead. To tell the API how these values from each column should be associated with the keys that the template is expecting, you must also supply an object attached to opts.bindings. (The meanings of the keys in the bindings object are documented below.) The minimal bindings you can supply for this template are as shown in this example:

{
    template: "_199",
    version: "_3",
    bindings: {
        shading: {
            name: "ShadingHeader1"
        },
        points: {
            name: "PointsHeader1",
            lat: "PointsHeader2",
            lon: "PointsHeader3"
        }
    },
    data: {
        shading: [
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            ...
        ],
        points: [
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            ...
        ]
    }
}

All possible bindings that you can supply are shown in this example:

{
    template: "_199",
    version: "_3",
    bindings: {
        shading: {
            name: "ShadingHeader1",
            value: ["ShadingHeader2", "ShadingHeader3", ...]
        },
        points: {
            name: "PointsHeader1",
            lat: "PointsHeader2",
            lon: "PointsHeader3",
            value: ["PointsHeader4", "PointsHeader5", ...]
        }
    },
    data: {
        shading: [
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            { "ShadingHeader1": ..., "ShadingHeader2": ..., ... },
            ...
        ],
        points: [
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            { "PointsHeader1": ..., "PointsHeader2": ..., ... },
            ...
        ]
    }
}

(As before, the keys containing "Header" would be replaced by column names from your data source.)

Array of objects with template-defined keys

There is an alternative format you can use, which is likely to be easier to use if your data is not from a spreadsheet source. With this alternative format you supply your data to the template as an array of objects, attached to opts.data, where the keys must be those used by the template, as documented below. In this case there is no need to supply a bindings object, since the key names are already those expected by the template. The required properties in the data object are as follows (scroll down for a description of what each property is):

{
template: "_199",
version: "_3",
data: {
    shading: [
        {
            name: ...,
            value: [...]
        },
        ...
    ],
    points: [
        {
            name: ...,
            lat: ...,
            lon: ...,
            value: [...]
        },
        ...
    ]
},
...
}

And the full list of all possible properties is as follows:

{
template: "_199",
version: "_3",
data: {
    shading: [
        {
            name: ...,
            value: [...]
        },
        ...
    ],
    points: [
        {
            name: ...,
            lat: ...,
            lon: ...,
            value: [...]
        },
        ...
    ]
},
...
}

Meanings of the template data keys:

  • shading.name: The column containing the display name of the region
  • shading.value: A column of values
  • points.name: Name associated with point on map (eg. city)
  • points.lat: Latitude of point
  • points.lon: Longitude of point
  • points.value: Value associated with point

Template settings

Options for opts.state.

Appearance

background_colour color

Background colour.

disable_zoom boolean

Disable zoom.

region_border_colour color

Border colour.

region_border_opacity number

Border opacity.

Max: 1

region_border_width number

Border width.

Min: 0.1

Max: 5

highlight_colour color

Border highlight.

highlight_width number

Border width multiplier highlight.

Shading

choropleth boolean

Enable land shading.

land_colour color

Land colour.

scale_type string

Type of colour scale.

Allowed values:

  • sequential (Sequential)
  • diverging (Diverging)
  • categorical (Categorical)

sequential_palette string

Sequential palette. Select a sequential palette See github.com/d3/d3-scale-chromatic for swatches.

Allowed values:

  • Oranges
  • Reds
  • Blues
  • Greens
  • Greys
  • Purples
  • BuGn
  • BuPu
  • GnBu
  • OrRd
  • PuBuGn
  • PuBu
  • PuRd
  • RdPu
  • YlGnBu
  • YlGn
  • YlOrBr
  • YlOrRd

diverging_palette string

Diverging palette. Select a diverging palette See github.com/d3/d3-scale-chromatic for swatches.

Allowed values:

  • RdBu
  • RdYlGn
  • PiYG
  • BrBG
  • PRGn
  • PuOr
  • RdGy
  • RdYlBu
  • Spectral

reverse_scale_colours boolean

Reverse colours.

legend_min string

Value left of legend. If empty will equal a value near (but not above) the minimum value in the dataset. (continuous scale)

legend_max string

Value right of legend. If empty will equal a value near (but not below) the maximum value in the dataset. (continuous scale)

continuous_scale boolean

Use continuous scale.

underflow_value string

Gradient start. Defaults to value at the left end of the legend.

colour_gradient_midpoint string

Gradient mid. Defaults to the value halfway between the start and end points.

overflow_value string

Gradient end. Defaults to value at the right end of the legend.

n_buckets number

Number of buckets. Fit scale with equal-width buckets. Values below scale minimum or above scale maximum will be coloured according to corresponding end bucket. Ignored if a valid list of thresholds is supplied below.

Min: 3

Max: 9

custom_thresholds string

Custom thresholds. Ignored if less than two numbers are defined.

equal_swatches boolean

Equal-width swatches. Make all swatches the same length in the legend. Ignored if Use continuous scale is enabled

use_custom_palette boolean

Define custom categorical palette.

categorical_palette string

Categorical palette.

Allowed values:

  • Accent
  • Dark2
  • Pastel1
  • Pastel2
  • Set1
  • Set2
  • Set3

custom_palette text

Add name-colour pairs. Specify a category per line, followed by a colon and then a colour

other_colour color

No match colour. Colour to use for unassigned regions

no_data_fill_colour color

Missing fill colour.

no_data_stripe_colour color

Missing stripe colour.

region_prefix string

Number prefix. Optional prefix for numbers; useful for currency symbols

region_suffix string

Number suffix. Optional suffix for numbers; useful for units

region_decimals number

Number of decimal places. Decimal places for numbers. Negative values round to positive powers of 10 (e.g. -2 rounds to nearest 100)

Points

points boolean

Enable points.

point_fill_colour color

Fill.

point_opacity number

Opacity.

Max: 1

point_stroke_colour color

Border.

point_highlight_fill color

Highlight fill.

point_highlight_opacity number

Highlight opacity.

Max: 1

point_highlight_border color

Highlight border.

point_prefix string

Number prefix. Optional prefix for numbers; useful for currency symbols

point_suffix string

Number suffix. Optional suffix for numbers; useful for units

point_decimals number

Number of decimal places. Decimal places for numbers. Negative values round to positive powers of 10 (e.g. -2 rounds to nearest 100)

point_scale_factor number

Scale factor. Scale factor to determine size of circles relative to value (large is bigger). Use 0 to autoscale. If values are large (e.g. in the 1000's) then this number should be small.

Shading legend

legend_title string

Legend title. Uses column name if not specified

legend_text_size number

Text size.

legend_width number

Width.

legend_text_colour color

Colour.

legend_bottom boolean

Legend at bottom.

Controls

shading_control string

Controls for shading data. Control for shading-column selection

Allowed values:

  • auto-buttons (Auto)
  • dropdown (Dropdown menu)
  • slider (Slider)
  • grouped-buttons (Button group)
  • floating-buttons (Buttons)

shading_play_button boolean

Include play button.

shading_loop boolean

Loop on play.

shading_width number

Width. Width of control in pixels

Min: 30

shading_step_time number

Speed. Measured in seconds, positive values move the slider left to right, negative values move the slider right to left.

shading_loop_pause number

Pause before loop. Measured in seconds and in addition to the regular step time displayed above.

points_control string

Controls for points data. Control for shading-column selection

Allowed values:

  • auto-buttons (Auto)
  • dropdown (Dropdown menu)
  • slider (Slider)
  • grouped-buttons (Button group)
  • floating-buttons (Buttons)

points_width number

Width. Width of control in pixels

Min: 30

points_step_time number

Speed. Measured in seconds, positive values move the slider left to right, negative values move the slider right to left.

points_loop_pause number

Pause before loop. Measured in seconds and in addition to the regular step time displayed above.

points_play_button boolean

Include play button.

points_loop boolean

Loop on play.

Background.

Opacity.

Max: 1

Border.

Text.

Custom popup text (only for shading). Use {{column_name}} to add data values in your popup

region_popups boolean

Show popups on region hover.

Data formatting

decimal_separator string

Decimal separator.

Predefined values:

  • . (.)
  • , (,)

thousand_separator string

Thousand separator.

Predefined values:

  • , (,)
  • . (.)

Embed settings

embed_mode string

Embed mode. If you plan to specify a fixed height when generating your embed code, choose "Fixed height" here and the map will be scaled to be as big as possible in the available space. Otherwise leave the default setting of "Auto height"; in this mode the embedded map will fill the available width and get taller and shorter based on its aspect ratio.

Allowed values:

  • auto (Auto height)
  • fixed (Fixed height)