I have a 2D "map" of items in discrete cells (some cells having no items). Each item has a mutual "relationship" level with every other item -- the higher the relationship level, the more related they are.
I ran a simple self-organizing map algorithm (each item tends to drift towards items that they are more related to), so the map is sort of grouped into "continents" and peninsulas and islands, where cells with no items in them are oceans.
What you see eventually is groups of items that share a lot in common are on their own island, or their own peninsula, or their own section of a continent or a "valley" inside a larger continent.
I want to be able to visualize this data like a "map" of sorts -- how about mountain ranges between items that are very different and unrelated? And then I could find and highlight continuous regions and give them "names" (perhaps automatically generated from representative items in the region).
So I inverted the relationship values into "unrelationship values" -- higher values means less related, so "mountains" show up. And here is a sample 1D slice of a sample map:
Where the items are the regions between x axis lines, and the unrelationship between two items are the point on the x axis line in between them.
Here are my problems --
What is the best way to render a map like this? Are there tools or library or software that allow me to programmatically draw things like this? If not, how should I go about doing this myself?
What is the best way to find "regions"? Should I look for local maximums? Adjust the threshold that counts things as maximums?
Overall, what is the best way to "interpret" this data as terrain?