Worked example

District-Wise Sales Heat Map of India

You are a national sales manager and the monthly review is on Thursday. The secondary sales sheet has one row per district and two columns your leadership argues about — value this year and growth against last year — and reading four hundred rows of it aloud has never once changed a decision.

One map that answers both questions at once: where the money is, and which of those places has stopped growing. You can point at a large pale bubble and say that this district is a quarter of the region and flat, which is a different conversation from a small bright one.

District-Wise Sales Heat Map of India: the finished map, drawn from the worked example below
Rendered by IndiaMap from the sheet on this page — not a mock-up. The figures are illustrative.
Make this map with your dataAll worked examples

The four choices behind it

GeographyPan India
LevelDistrict
Map typeBubble + colour
Columns3 (401 rows)

How this map was made

Four questions, in the order the builder asks them. Every picture below is the real renderer on the real geography, so this is the sequence you will see on your own screen.

  1. Step 1

    Choose Pan India at district level, because the review covers the country and not one region of it.

    The 785 districts come up as empty outlines, which is the honest starting point for this deck: you ship to 401 of them, and the other 384 are going to be grey all evening.

    District-Wise Sales Heat Map of India: Step 1 — the geography, still empty
  2. Step 2

    Paste the district column with secondary sales and growth beside it.

    401 districts turn flat blue and 384 stay grey. That grey is the not covered you will have to define in the caption, and this is also the fastest check that a district you do ship to has not gone missing on a spelling.

    District-Wise Sales Heat Map of India: Step 2 — the areas your sheet reached
  3. Step 3

    Send secondary sales to bubble size and growth to area colour.

    Nagpur and Surat take the large circles as expected, but the colour is doing nothing: Gadchiroli at -100 stretches the automatic scale so far that two of the five bands come out empty, Gadchiroli has the lowest band to itself, and 247 of the 400 growth readings crowd into the top shade.

    District-Wise Sales Heat Map of India: Step 3 — the numbers, on defaults
  4. Step 4

    Set custom breaks at -10, 0, 15 and 25 on the red to green ramp, and give the bubbles a translucent slate fill.

    The bands now carry what the review argues about. 30 districts have fallen by a tenth or more and take the deep red; 81 are down but shallow; 189 hold the white middle between nil and 15 per cent; 89 are growing; and 11 have run past 25. Gadchiroli at -100 shares the deep red band with the other steep fallers rather than owning a band of its own, which is correct, because all of them are movements of a few lakh rupees. Putting the outer breaks at -10 and 25 is what stops one district at -100 spending the whole ramp, and it also fills the top of the ramp: at breaks of 0 and 15 alone the growing districts come out white and vanish into the page.

    District-Wise Sales Heat Map of India: Step 4 — the finished map

The sheet

Paste these columns straight from Excel. The first column names the place; the rest are numbers. Nothing is uploaded — your sheet is read in the browser.

District-Wise Sales Heat Map of India — the worked example, 401 rows
DistrictSecondary sales (₹ lakh)Growth vs last year (%)
Nagpur86.48.2
Surat74.112.6
Dakshina Kannada47.89.3
Solapur41.7-3.4
Saharanpur33.214.7
Dindigul22.95.1
Tuticorin19.6-1.8
Udupi15.46.9
Chandrapur13.72.6
Kolar12.121.5
Gonda9.818.2
Bahraich6.327.4
Dang4.2—
Gadchiroli0-100
24 Paraganas North61.315.5
24 Paraganas South61.816

The first 16 rows of 401. The map above is drawn from all of them — a national map wants a national sheet, and yours will be longer than this too.

Why this map

Two numbers, two encodings: the bubble carries how much a district sells and the fill carries which way it is moving, so size and colour disagreeing is exactly the signal you came for.

What goes wrong

You ship to 401 districts and the map draws 785, so every one of the 384 you left out of the sheet is drawn as no-data. Kandhamal, which is not in the sheet at all, and Gadchiroli, which is in it at nil, mean entirely different things — one you never sold into, the other you did and stopped — and a reviewer reading a grey district cannot tell which of the two they are looking at.

Decide what the white areas mean before you present, and say it in the caption. If a district is genuinely outside your distribution, leave it out and label the no-data colour "not covered". If it is covered and sold nothing, put a real 0 in the sheet, as Gadchiroli does here, so it lands at the bottom of the scale rather than falling off it.

Growth per cent on a small base swamps the colour ramp. Bahraich at +27.4% and Gadchiroli at -100% are both movements of a few lakh rupees, but they take the two ends of the scale and push Nagpur and Surat — where nearly all the money is — into the indistinguishable middle.

Set custom breaks that clip the tails, say -10% to +15%, so the ramp spends its range where the business is. If the tails still dominate, colour by the rupee change instead of the percentage; a district that grew by ₹6 lakh then looks bigger than one that doubled ₹40,000.

Secondary sales MIS is usually keyed to the distributor or depot, not to the district, and one distributor commonly bills across three districts. Splitting that billing equally across them invents geography that your ledger never recorded.

Map only at the level your data is honestly keyed to. Where a distributor spans districts, either aggregate your sheet up to the district that holds the majority of its retail outlets and footnote the approximation, or drop those rows. The map colours and sizes one value per district; it cannot group districts into a territory for you, so do that arithmetic in the sheet where it is visible and auditable.

Other worked examples