5
$\begingroup$

I have

m = {{0, -1, -2, -3, -4}, {1, 0, -1, -2, -3}, {2, 1, 0, -1, -2}, {3, 
    2, 1, 0, -1}, {4, 3, 2, 1, 0}};

And a grid Grid[m,Frame->All]

I would like to label the grid such that every column has a number above it and every row has a number to its side. This is what I've currently managed to do.

Labeled[Grid[m,Frame->All],{Y:{1,5},X:{1,5}},{Left,Top}] 

How can I label the grid appropriately?

$\endgroup$
1
  • $\begingroup$ I highly recomment this answer by Mike Honeychurch but if you do not need such interface take a look at Headings option for TableForm. You can allways add such heading as a new column and row, then you have to read adding columns/rows. $\endgroup$
    – Kuba
    Commented May 2, 2014 at 8:32

2 Answers 2

7
$\begingroup$

Perhaps what you want:

m = Array[Subtract, {5, 5}, 0];
r = Range @ 5;

Grid[
 ArrayFlatten[{{"", {r}}, {{r}\[Transpose], m}}],
 Frame -> All
]

enter image description here

$\endgroup$
1
  • $\begingroup$ Exactly what I was looking for. +1 For simplicity. $\endgroup$
    – pyler
    Commented May 2, 2014 at 10:19
7
$\begingroup$

You could use TableForm, e.g.

col = CharacterRange["A", "E"];
row = CharacterRange["a", "e"];
TableForm[m, TableHeadings -> {row, col}]

A way using Grid:

Grid[{PadLeft[col, 6, ""]}~Join~
  MapThread[PadLeft[#1, 6, #2] &, {m, row}], 
 Dividers -> {{False, True, {False}}, {False, True, {False}}}]

enter image description here

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.