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