I cannot share the code I use but here is a quick example with some ideas
Names Default To Here(1);
// load text file
// parse interesting things
// get map to string
map_str =
".....GGG.....
....BGGGG....
...BGGGGGG...
..GGGGGGGGG..
.GGGGGGBBGGG.
GGGGGGGBBGGGB
GGGGGGGGGGGGB
GGGGGGGGGGGGB
.GGGGGGGGGGG.
..GGGGGGGGG..
...GGGGGGG...
....GGGGG....
.....GGG.....";
l = Words(map_str, "\!N");
rowc = N Items(l);
colc = N Items(Words(l[1], ""));
dt = New Table("Untitled",
	Add Rows(rowc * colc),
	New Column("X", Numeric, Continuous),
	New Column("Y", Numeric, Continuous),
	New Column("bin", Character, Nominal, Label(1))
);
For Each({line, idx}, l,
	cur_rows = ((idx - 1) * colc::(idx * colc - 1)) + 1;
	dt[cur_rows, "X"] = ((1::colc))`;
	dt[cur_rows, "Y"] = (J(1, colc) * (idx))`;
	dt[cur_rows, "bin"] = Words(line, "");
);
nw = New Window("test",
	H List Box(
		align("center"),
		Text Box(map_str, <<Set Font Name("Courier New")),
		dt << Graph Builder(
			Size(529, 457),
			Show Control Panel(0),
			Variables(X(:X), Y(:Y), Color(:bin)),
			Elements(Points(X, Y, Legend(9))),
			SendToReport(
				Dispatch(
					{},
					"X",
					ScaleBox,
					{Min(0.461038514127673), Max(13.543406057392), Inc(1), Minor Ticks(0),
					Label Row(Show Major Grid(1))}
				),
				Dispatch(
					{},
					"Y",
					ScaleBox,
					{Min(14), Max(0), Inc(1), Minor Ticks(0), Label Row(Show Major Grid(1))}
				),
				Dispatch(
					{},
					"400",
					ScaleBox,
					{Legend Model(
						9,
						Properties(0, {Marker Size(20)}, Item ID(".", 1)),
						Properties(1, {Marker Size(20)}, Item ID("B", 1)),
						Properties(2, {Marker Size(20)}, Item ID("G", 1))
					)}
				)
			)
		),
		dt << Graph Builder(
			Size(529, 457),
			Show Control Panel(0),
			Variables(X(:X), Y(:Y), Color(:bin)),
			Elements(Heatmap(X, Y, Legend(10), Label("Label by Value"))),
			SendToReport(
				Dispatch({}, "X", ScaleBox, {Min(0.461038514127673), Max(14.3842387539345), Inc(1), Minor Ticks(0), Label Row(Show Major Grid(1))}),
				Dispatch({}, "Y", ScaleBox, {Min(14.3060372430966), Max(0.789075991529451), Inc(1), Minor Ticks(0), Label Row(Show Major Grid(1))})
			)
		)
	)
);

 
					
				
			
			
				
	-Jarmo