Hi Mathematica Folks,
I'm trying to write a Mathematica program which will draw a Leopold Matrix.
This is used in environmental science. I've managed to create a
program which does indeed draw the matrix but there is just one
problem - I can't seem to scale the final output properly. If I draw
the graphic and make it smaller the individual elements in the
GraphicsGrid don't resize properly. I've tried making the inidivual
items in the grid smaller to start with (with the variable 'cellsize')
but oddly that seems to have little effect.
If someone could have a quick look over my code and make some
suggestions I'd be VERY grateful! Otherwise when I run the program
with the full set of data (something like 20 x 20) the output is going
to be gargantuan. A simple operation in Mathematica to scale down the whole
output would be ok.
Many thanks,
David.
Code:
=====================================
cellsize=0.125;
cell[x_,y_]=Graphics[
{
Line[{{0,0},{cellsize,cellsize}}],
Text[Style[x,Large,Bold,Black],{cellsize/4,3cellsize/4}],
Text[Style[y,Large,Bold,Black],{3cellsize/4,cellsize/4}]
}
];
word[x_]=Graphics[
{Text[Style[x,Large,Bold,Black],{0,cellsize/2}]
}
];
vword[x_]=Graphics[
{Rotate[
Text[Style[x,Large,Bold,Black],{0,cellsize/2}],
90Degree]
}
];
uppers={1,3,5,7,9,11,13,15,G};
lowers={2,4,6,8,10,12,14,F,H};
vlabels1={aardvark,beowulf,church};
vlabels2={dragon,earwig,flimflam};
vlabels3={greengrocer,hello,indigo};
hlabels1={Angstrom,Beeblebox,Chatterbox};
hlabels2={Dribble,Elongated,Freddy};
hlabels3={Glue,Hulaballo,Iridescant};
g=Grid[Table[
cell[
uppers[[3(i-1)+j]],
lowers[[3(i-1)+j]]
],
{i,3},{j,3}
],
{Spacings->{0,0},Frame->All}
];
hl=Grid[Table[
List[
word[vlabels1[[i]]],
word[vlabels2[[i]]],
word[vlabels3[[i]]]
],{i,3}
],
{Spacings->{0,0},Frame->All}
];
vl=Grid[Table[
List[
vword[hlabels1[[i]]],
vword[hlabels2[[i]]],
vword[hlabels3[[i]]]
],{i,3}
],
{Spacings->{0,0},Frame->All}
];
spaces=Grid[Table[
List[
Graphics[Text[" "]],
Graphics[Text[" "]],
Graphics[Text[" "]]
],{i,3}
],
{Spacings->{0,0}}
];
GraphicsGrid[{{spaces,vl},{hl,g}},ImageSize->Tiny]