Take your map - chunk it loosely. So, a city becomes a collection of district chunks, a kingdom regions, continent realms (if lots of small ones) or regions (e.g. East and West NotFrance). All chunks are assumed to be connected to adjacent chunks unless there's like, mountains and stuff in the way. You can work it out.
Pick a chunk to be ground zero - put a d6 there. This represents the presence of the thing.
Every [time interval, as dictated by scale - cities might be days, kingdoms weeks and continents months] roll all the dice on the map. Anywhere you roll max, up the dice size in that chunk AND all adjacent chunks, with those with no dice gaining a d4.
(change colour after the d10 tipping point)
0 -> d4 -> d6 -> d8 -> d10 -> d8 -> d6 -> d4 -> 1
(no presence) (whole population)
This nicely simulates the spread of something, at first struggling to spread but then hitting majority and landsliding.
You can change up how virulent the thing is by increasing the range - so, the top 2 results, top 4 or whatever. This can also simulate activity by players/other parties to fight/bolster the spread, increasing or decreasing the margin of success.
You could also have things go backwards when you roll a minimum result - again, especially if people are actively doing things about it.