---
title: "How layer styling works in MangoMap"
description: "How the Style tab works for point, line, and polygon layers: one colour, colour by a field, geometry-only options, and why raster layers only get opacity."
sidebar:
  label: "How layer styling works"
---

This page explains the Style tab for point, line, and polygon layers: what every geometry shares, what only one geometry has, and why raster layers offer so little. Read it before the how-to guides.

## The Style tab differs by geometry

Every vector layer has a `Style` tab in the layer settings panel. The main idea is the same for every geometry: a colour driver decides whether all features share one colour or take their colour from a field. The controls around it depend on the geometry:

|                                   | Point                                                         | Line                                              | Polygon                                    |
| --------------------------------- | ------------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------ |
| Top-level picker                  | `Marker type` (`Circle`, `Icon`, `Custom Icon`, `Heatmap`)    | None: every line is a stroke                      | None: every polygon is a fill and a stroke |
| Colour driver                     | `Colour markers by`                                           | `Colour lines by`                                 | `Fill polygons by`                         |
| One colour for every feature      | `Single colour`                                               | `Uniform colour`                                  | `Uniform colour`                           |
| Per category or class break       | Colour, marker type, size, outline                            | Colour, line pattern                              | Colour, fill pattern                       |
| Same for the whole layer          | Opacity, size                                                 | [Width, opacity](/docs/styling-layers/set-line-width-and-opacity), cap, join, casing | Fill opacity, [outline](/docs/styling-layers/style-polygon-outlines) |
| Only on this geometry             | Size by a field, zoom stops, heatmap, custom icons            | Casing, cap, and join                             | Fill patterns                              |

Only points have a top-level picker. It chooses a regular symbol (`Circle`, `Icon`, or `Custom Icon`) or a `Heatmap`. Lines and polygons go straight to the colour driver.

Line width is one value for the whole layer. You cannot set it from a field.

The Style section of one layer of each geometry, each with one colour for every feature:

**Point**

<img src="/_assets/styling-layers/set-a-uniform-point-style--style.png" alt="Style section of the Places — Uniform layer with Marker type set to Circle and its preview, Colour markers by set to Single colour, the orange fill colour swatch, the outline colour swatch and outline width slider at 1.5 px, Size markers by set to Uniform size, the size slider at 5 px with the Vary size by zoom level button, and the Save button" width="1600" height="960" />

**Line**

<img src="/_assets/styling-layers/set-a-uniform-line-style--style.png" alt="Style section of the Roads — Uniform layer with Colour lines by set to Uniform colour, a blue colour swatch, the line width slider at 2 px, More line settings closed, and the Save button" width="1600" height="960" />

**Polygon**

<img src="/_assets/styling-layers/set-a-uniform-polygon-style--style.png" alt="Style section of the Buildings — Uniform layer with Fill polygons by set to Uniform colour, a brown fill swatch, the brush icon and the fill pattern dropdown set to Solid, Stroke set to Solid with a white stroke colour swatch and the stroke width slider at 0.5 px, and the Save button" width="1600" height="960" />

## The colour driver: one colour or by field

The colour driver works the same way on every geometry. It offers these kinds of choice:

- **One colour for every feature.** `Single colour` on points, `Uniform colour` on lines and polygons. Use it when the layer shows one kind of thing, such as a road network, a set of building outlines, or a set of offices.
- **A text field.** Every distinct value gets its own colour from the chosen palette. This is the "category" behaviour. Roads coloured by road class, countries coloured by income group, and airports coloured by airport type all work this way.
- **A numeric field.** The `Style as` select decides what happens. Pick a class count and MangoMap splits the values into class breaks with a graduated colour ramp. Pick `Continuous` for a smooth gradient. Both are the "quantity" behaviour. Countries coloured by population, buildings coloured by height, and roads coloured by length all work this way. Pick `Categories` and each distinct number gets its own colour, the same as a text field.
- **`Colour by zoom`** (point layers with `Circle` markers only). Every marker shares one colour, which changes as the viewer zooms. See [Styling that changes with zoom](#styling-that-changes-with-zoom).

A text field is always styled as categories. A numeric field starts as `5 classes` with `Natural Breaks (Jenks)`. Change `Style as` to `Categories` when the numbers are codes rather than amounts: zone numbers, years, or a 1–5 rating. The controls below the colour driver change to match.

Follow your pick in the colour driver to see what it gives you:

{/* diagram:colour-driver-flow */}
<svg class="dark:hidden" style="width: 100%; height: auto" viewBox="0 0 640 664" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="colour-driver-flow-inline-title colour-driver-flow-inline-desc">
  <title id="colour-driver-flow-inline-title">What the colour driver does</title>
  <desc id="colour-driver-flow-inline-desc">Flowchart: no field gives one colour, Single colour or Uniform colour; Colour by zoom, on Circle markers only, gives one colour per zoom stop; a text field gives categories; a numeric field goes to Style as, where Categories gives categories, Continuous gives a smooth gradient, and 3 to 9 classes gives class breaks, starting at 5 classes with Natural Breaks (Jenks).</desc>
  <defs>
    <marker id="colour-driver-flow-inline-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#525252"/></marker>
    <marker id="colour-driver-flow-inline-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#c4360c"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#f5f5f5"/>
  <path d="M320 60 L320 82" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-arrow)"/>
  <path d="M216 136 L124 136 Q116 136 116 144 L116 202" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-arrow)"/>
  <path d="M424 136 L516 136 Q524 136 524 144 L524 202" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-arrow)"/>
  <path d="M320 188 L320 246" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-arrow)"/>
  <path d="M424 300 L516 300 Q524 300 524 308 L524 370" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-arrow)"/>
  <path d="M320 352 L320 426" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-arrow)"/>
  <path d="M424 480 L516 480 Q524 480 524 472 L524 434" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-arrow)"/>
  <path d="M216 480 L124 480 Q116 480 116 472 L116 434" fill="none" stroke="#525252" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-arrow)"/>
  <path d="M320 532 L320 574" fill="none" stroke="#c4360c" stroke-width="1.4" marker-end="url(#colour-driver-flow-inline-arrow-accent)"/>
  <rect x="114" y="112" width="112" height="16" rx="2" fill="#f5f5f5"/><text x="170" y="124" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">COLOUR BY ZOOM</text>
  <rect x="438" y="112" width="64" height="16" rx="2" fill="#f5f5f5"/><text x="470" y="124" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO FIELD</text>
  <rect x="328" y="201" width="58" height="16" rx="2" fill="#f5f5f5"/><text x="357" y="213" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">A FIELD</text>
  <rect x="450" y="276" width="40" height="16" rx="2" fill="#f5f5f5"/><text x="470" y="288" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">TEXT</text>
  <rect x="328" y="364" width="58" height="16" rx="2" fill="#f5f5f5"/><text x="357" y="376" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NUMBER</text>
  <rect x="430" y="456" width="80" height="16" rx="2" fill="#f5f5f5"/><text x="470" y="468" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">CATEGORIES</text>
  <rect x="128" y="456" width="84" height="16" rx="2" fill="#f5f5f5"/><text x="170" y="468" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">CONTINUOUS</text>
  <rect x="328" y="545" width="92" height="16" rx="2" fill="#f5f5f5"/><text x="374" y="557" fill="#525252" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">3–9 CLASSES</text>
  <rect x="200" y="16" width="240" height="44" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/>
  <text x="320" y="43" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Open the colour driver</text>
  <polygon points="320,84 424,136 320,188 216,136" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="320" y="131" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">What do</text><text x="320" y="149" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">you pick?</text>
  <polygon points="320,248 424,300 320,352 216,300" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="320" y="295" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Text or</text><text x="320" y="313" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">number?</text>
  <polygon points="320,428 424,480 320,532 216,480" fill="#ffffff" stroke="#171717" stroke-width="1"/><text x="320" y="484" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Style as?</text>
  <rect x="16" y="204" width="200" height="60" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="116" y="231" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">One colour per zoom stop</text><text x="116" y="249" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Circle markers only</text>
  <rect x="424" y="204" width="200" height="60" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="524" y="231" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">One colour</text><text x="524" y="249" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Single or Uniform colour</text>
  <rect x="424" y="372" width="200" height="60" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="524" y="399" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Categories</text><text x="524" y="417" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">one colour per value</text>
  <rect x="16" y="372" width="200" height="60" rx="20" fill="rgba(23,23,23,0.04)" stroke="rgba(23,23,23,0.32)" stroke-width="1"/><text x="116" y="399" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Continuous</text><text x="116" y="417" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">a smooth gradient</text>
  <rect x="200" y="576" width="240" height="72" rx="20" fill="rgba(196,54,12,0.08)" stroke="#c4360c" stroke-width="1.4"/>
  <text x="320" y="598" fill="#171717" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Class breaks</text>
  <text x="320" y="618" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">starts at 5 classes with</text>
  <text x="320" y="634" fill="#525252" font-size="12" font-family="inherit" text-anchor="middle">Natural Breaks (Jenks)</text>
</svg>
<svg class="hidden dark:block" style="width: 100%; height: auto" viewBox="0 0 640 664" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="colour-driver-flow-inline-dark-title colour-driver-flow-inline-dark-desc">
  <title id="colour-driver-flow-inline-dark-title">What the colour driver does</title>
  <desc id="colour-driver-flow-inline-dark-desc">Flowchart: no field gives one colour, Single colour or Uniform colour; Colour by zoom, on Circle markers only, gives one colour per zoom stop; a text field gives categories; a numeric field goes to Style as, where Categories gives categories, Continuous gives a smooth gradient, and 3 to 9 classes gives class breaks, starting at 5 classes with Natural Breaks (Jenks).</desc>
  <defs>
    <marker id="colour-driver-flow-inline-dark-arrow" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#a3a3a3"/></marker>
    <marker id="colour-driver-flow-inline-dark-arrow-accent" markerWidth="8" markerHeight="6" refX="7" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#ff7a4d"/></marker>
  </defs>
  <rect width="100%" height="100%" fill="#141414"/>
  <path d="M320 60 L320 82" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-dark-arrow)"/>
  <path d="M216 136 L124 136 Q116 136 116 144 L116 202" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-dark-arrow)"/>
  <path d="M424 136 L516 136 Q524 136 524 144 L524 202" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-dark-arrow)"/>
  <path d="M320 188 L320 246" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-dark-arrow)"/>
  <path d="M424 300 L516 300 Q524 300 524 308 L524 370" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-dark-arrow)"/>
  <path d="M320 352 L320 426" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-dark-arrow)"/>
  <path d="M424 480 L516 480 Q524 480 524 472 L524 434" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-dark-arrow)"/>
  <path d="M216 480 L124 480 Q116 480 116 472 L116 434" fill="none" stroke="#a3a3a3" stroke-width="1.2" marker-end="url(#colour-driver-flow-inline-dark-arrow)"/>
  <path d="M320 532 L320 574" fill="none" stroke="#ff7a4d" stroke-width="1.4" marker-end="url(#colour-driver-flow-inline-dark-arrow-accent)"/>
  <rect x="114" y="112" width="112" height="16" rx="2" fill="#141414"/><text x="170" y="124" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">COLOUR BY ZOOM</text>
  <rect x="438" y="112" width="64" height="16" rx="2" fill="#141414"/><text x="470" y="124" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NO FIELD</text>
  <rect x="328" y="201" width="58" height="16" rx="2" fill="#141414"/><text x="357" y="213" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">A FIELD</text>
  <rect x="450" y="276" width="40" height="16" rx="2" fill="#141414"/><text x="470" y="288" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">TEXT</text>
  <rect x="328" y="364" width="58" height="16" rx="2" fill="#141414"/><text x="357" y="376" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">NUMBER</text>
  <rect x="430" y="456" width="80" height="16" rx="2" fill="#141414"/><text x="470" y="468" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">CATEGORIES</text>
  <rect x="128" y="456" width="84" height="16" rx="2" fill="#141414"/><text x="170" y="468" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">CONTINUOUS</text>
  <rect x="328" y="545" width="92" height="16" rx="2" fill="#141414"/><text x="374" y="557" fill="#a3a3a3" font-size="10" font-weight="600" letter-spacing="0.1em" font-family="inherit" text-anchor="middle">3–9 CLASSES</text>
  <rect x="200" y="16" width="240" height="44" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/>
  <text x="320" y="43" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Open the colour driver</text>
  <polygon points="320,84 424,136 320,188 216,136" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="320" y="131" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">What do</text><text x="320" y="149" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">you pick?</text>
  <polygon points="320,248 424,300 320,352 216,300" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="320" y="295" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Text or</text><text x="320" y="313" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">number?</text>
  <polygon points="320,428 424,480 320,532 216,480" fill="#1c1c1c" stroke="#f2f2f2" stroke-width="1"/><text x="320" y="484" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Style as?</text>
  <rect x="16" y="204" width="200" height="60" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="116" y="231" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">One colour per zoom stop</text><text x="116" y="249" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Circle markers only</text>
  <rect x="424" y="204" width="200" height="60" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="524" y="231" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">One colour</text><text x="524" y="249" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Single or Uniform colour</text>
  <rect x="424" y="372" width="200" height="60" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="524" y="399" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Categories</text><text x="524" y="417" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">one colour per value</text>
  <rect x="16" y="372" width="200" height="60" rx="20" fill="rgba(242,242,242,0.05)" stroke="rgba(242,242,242,0.34)" stroke-width="1"/><text x="116" y="399" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Continuous</text><text x="116" y="417" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">a smooth gradient</text>
  <rect x="200" y="576" width="240" height="72" rx="20" fill="rgba(255,122,77,0.10)" stroke="#ff7a4d" stroke-width="1.4"/>
  <text x="320" y="598" fill="#f2f2f2" font-size="14" font-weight="600" font-family="inherit" text-anchor="middle">Class breaks</text>
  <text x="320" y="618" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">starts at 5 classes with</text>
  <text x="320" y="634" fill="#a3a3a3" font-size="12" font-family="inherit" text-anchor="middle">Natural Breaks (Jenks)</text>
</svg>
{/* /diagram:colour-driver-flow */}

Colour is not the only way to tell categories apart. Each category or class break can also have its own symbol: a marker type or icon on points, a line pattern on lines, and a fill pattern on polygons. See [How to customise category and class break symbology](/docs/styling-layers/customise-category-and-class-break-symbology).

## Size: points only

Size shows magnitude on points only. Point layers have a second driver below the colour driver, `Size markers by`, with two kinds of choice:

- **`Uniform size`.** Every marker draws at one size, set with the size slider. This is the default.
- **A numeric field.** Each marker is sized by that field's value, between a minimum and a maximum size across the data range. This makes a proportional-symbol or "bubble" map. The size is continuous only: there are no classes or classification method.

The size driver is separate from the colour driver, so you can use one field for colour and another for size. See [How to size points by a number](/docs/styling-layers/size-points-by-a-number). For both at once, see [How to colour and size points by two fields](/docs/styling-layers/colour-and-size-points-by-two-fields).

Lines and polygons have no size driver. A line layer has one width for every line. A polygon's size is its shape on the map, so magnitude on a polygon layer is shown with colour.

On `Circle` markers, either kind of size can also change with zoom. See the next section.

## Styling that changes with zoom

A point layer with `Circle` markers can change its marker size, its colour, or both as the viewer zooms. This is often called scale-dependent styling. Small, pale markers keep a country view readable. Larger, stronger markers stand out at street level. Line and polygon layers do not have this option.

Both features use zoom stops. A zoom stop pairs a zoom level with a value: a size, a size scale, or a colour. You set 2 to 6 stops between zoom 1 and zoom 22. Between two stops, the value changes gradually. Below the first stop, markers keep the first stop's value. Above the last stop, they keep the last stop's value.

- **Size.** The `Vary size by zoom level` button next to the size control. With `Uniform size`, each stop holds a size in pixels. With a size field, each stop holds a scale that grows or shrinks the whole size range. See [How to vary marker size by zoom level](/docs/styling-layers/vary-marker-size-by-zoom).
- **Colour.** `Colour by zoom` in `Colour markers by`. Each stop holds a fill colour and an optional outline. `Colour by zoom` takes the place of field-based colour, so a layer can colour by zoom or by a field, not both. The stop outlines also replace the layer's own outline, so a stop without one draws no outline. See [How to change marker colour by zoom level](/docs/styling-layers/colour-markers-by-zoom).

Zoom stops change how a layer looks. The `Visibility` range decides whether the layer draws at all, and it works on every geometry. Use stops to keep a point layer readable at every zoom. Use the `Visibility` range to hide any layer where it does not belong. See [How to set the zoom range a layer is visible at](/docs/styling-layers/set-layer-zoom-visibility).

Zoom stops work on `Circle` markers only. Switching the marker type to `Icon`, `Custom Icon`, or `Heatmap` deletes them.

## Heatmap: a marker type for points

`Heatmap` is one of the four `Marker type` options on point layers. Picking it replaces the individual points with a smoothed density gradient. The controls that appear are different from any of the other marker types:

- **`Colour gradient`**: a predefined gradient ramp.
- **`Weight by`**: `Equal weight` (every point counts the same) or a numeric field (some points contribute more density).
- **`Radius`** and **`Intensity`**: control the spread and visual intensity.
- **`Opacity`**: 0–100%.

## Classification methods (numeric-field colouring)

When you pick a numeric field in the colour driver and use classes (not the continuous gradient), the classification method dropdown decides how MangoMap splits the data into class breaks. It works the same way on every geometry:

- **`Equal Interval`**: classes of equal width across the data range.
- **`Quantile`**: classes with about the same number of distinct values.
- **`Natural Breaks (Jenks)`**: break points fall at gaps in the distribution.
- **`Head/Tails`** on points, **`Head/Tail Breaks`** on lines and polygons: classes that get wider from the lowest class to the highest.

The method changes which features go into each class, so the same data can give different maps. See [Choosing a classification method for choropleth maps](/docs/styling-layers/concepts-choosing-classification-method) for how to choose, and [Classification methods for by-quantity styling](/docs/styling-layers/classification-methods-reference) for what each method does.

## Classes vs continuous gradient (numeric fields only)

Numeric-field colouring has two modes, on every geometry:

- **Classes.** The default. The class-count choices (`3 classes` through `9 classes`) split the range into that many class breaks. Every feature draws in the colour of its class. The legend shows one swatch per class.
- **Continuous gradient.** Every value maps to a position on the colour ramp. The legend shows a smooth gradient instead of swatches. Use it when small differences across many values matter more than reading off classes.

Switch between them in the `Style as` select: pick `Continuous` or a class count.

The same population data in both modes, with the legend a viewer sees:

**Classes**

<img src="/_assets/styling-layers/concepts-layer-styling--classes.png" alt="World Classification Lab with Population — Quantile shown as a viewer sees it: countries in five colours from pale yellow to dark red, and a legend of five swatches labelled >=140, >2494530, >6855713, >16296364, and >39309783" width="1600" height="960" />

**Continuous gradient**

<img src="/_assets/styling-layers/concepts-layer-styling--gradient.png" alt="World Classification Lab with Population — Continuous Gradient shown as a viewer sees it: countries shaded smoothly from pale yellow to dark red, and a legend with one yellow-to-red gradient bar from 140 to 39,309,783, labelled pop_est" width="1600" height="960" />

## Saving in the Style tab

The Style tab is one of the few places in MangoMap where changes don't save on their own. MangoMap keeps your changes in the panel until you click the save button:

- **Vector layers** (point, line, polygon): the button reads `Save`.
- **Raster and WMS layers**: the button reads `Save Style`.

Closing the panel or switching tabs without clicking the button discards every change since the last save. There's no unsaved-changes warning.

A missed save is a common reason a style change does not show on the map. See [My style change isn't appearing on the map](/docs/styling-layers/troubleshoot-style-not-applying).

## Why raster and WMS layers only expose opacity

When you select a raster or WMS layer in the layer panel, the `Style` tab shows only the `Visibility` range and an opacity slider. There are no colour or field controls.

This comes from the data, not a missing feature:

- A **raster** is a grid of pixels with fixed colour values. There's no per-feature attribute to drive colour from.
- A **WMS** layer is drawn by the source server, so the styling decisions live there.

If you need different colours for a raster, reprocess it before upload (in QGIS or `gdaldem`). If you need different styling for a WMS, that change has to happen on the WMS provider's server. See [How to adjust raster or WMS layer opacity](/docs/styling-layers/adjust-raster-opacity).

## Common confusions

**"I switched marker type and lost my outline or size settings."** Some controls only apply to specific marker types. Circle has fill, outline, and size. Icon has fill and size, with no outline. Custom Icon swaps the symbol entirely and has only an `Opacity` control. Switching to it sets the opacity to 100%. Heatmap has its own gradient, radius, and intensity controls. Switching marker types swaps the visible controls.

**"Why doesn't my line or polygon layer have a Marker type picker?"** Marker types are point-only. A line is a stroke, and a polygon is a filled area with an outline. Neither has a marker.

**"How do I tell categories apart without colour?"** Give each category its own symbol: a line pattern on lines, a fill pattern on polygons, or a marker type or icon on points. See [How to customise category and class break symbology](/docs/styling-layers/customise-category-and-class-break-symbology).

**"My ramp looks wrong for a numeric field."** The classification method, not the ramp, decides which features fall into which class. Try a different method (for example, switch from `Equal Interval` to `Natural Breaks (Jenks)`) before you change the colour scheme.

**"My numeric field is a code, not an amount."** Set `Style as` to `Categories`. Each distinct number then gets its own colour, and the legend lists the values. Class breaks would group codes that have nothing in common, such as zone 4 and zone 5.

## Related

For every geometry:

- [How to style features by category](/docs/styling-layers/style-by-category): one colour per text value or numeric code.
- [How to style features by quantity](/docs/styling-layers/style-by-quantity): colour from a numeric field, in classes or a gradient.
- [How to customise category and class break symbology](/docs/styling-layers/customise-category-and-class-break-symbology)
- [Classification methods for by-quantity styling](/docs/styling-layers/classification-methods-reference)
- [Choosing a classification method for choropleth maps](/docs/styling-layers/concepts-choosing-classification-method): the next choice once you've picked a numeric field.
- [Planning a thematic map in MangoMap](/docs/styling-layers/concepts-planning-a-thematic-map): how to choose a styling method, with three worked examples.
- [My style change isn't appearing on the map](/docs/styling-layers/troubleshoot-style-not-applying)

Points only:

- [How to set a uniform point style](/docs/styling-layers/set-a-uniform-point-style)
- [How to size points by a number](/docs/styling-layers/size-points-by-a-number)
- [How to vary marker size by zoom level](/docs/styling-layers/vary-marker-size-by-zoom)
- [How to change marker colour by zoom level](/docs/styling-layers/colour-markers-by-zoom)
- [How to make a heatmap from a point layer](/docs/styling-layers/make-a-heatmap)
- [How to upload a custom point icon](/docs/styling-layers/upload-a-custom-point-icon)

Lines only:

- [How to set a uniform line style](/docs/styling-layers/set-a-uniform-line-style)
- [How to style line patterns and casing](/docs/styling-layers/style-line-patterns)

Polygons only:

- [How to set a uniform polygon style](/docs/styling-layers/set-a-uniform-polygon-style)
- [How to style polygon fill patterns](/docs/styling-layers/style-polygon-fill-patterns)
