如何在mathematica中显示字符矩阵

时间:2012-01-28 02:46:17

标签: wolfram-mathematica

我有一个列表,例如{ {1 ,1 }, "Q"}, { {2 ,3 }, "E"}, { {3 ,5 }, "Q"}, { {4 ,2 }, "Q"}, { {5 ,4 }, "Q"}, { {1 ,5 }, "E"},我需要在矩形网格中显示字符,例如,在这种情况下,5*5网格,例如在(1, 1)上,有一个字符Q,在(2, 3)上有一个字母Q,...,而在(1, 5)上有一个字母E。并且网格中的所有剩余位置都显示为空白。

请帮帮我。

2 个答案:

答案 0 :(得分:6)

SparseArray已设置为执行此操作。这也使用@@@,它是第1级Apply的缩写:

dat =
{{{1, 1}, "Q"},
 {{2, 3}, "E"},
 {{3, 5}, "Q"},
 {{4, 2}, "Q"},
 {{5, 4}, "Q"},
 {{1, 5}, "E"}};

SparseArray[Rule @@@ dat, {5, 5}, ""] // MatrixForm

Mathematica graphics

SparseArray的第二个参数(此处为{5, 5})是显式数组大小。您可以使用Automatic将其大小调整到数据的最远点。第三个(可选)参数是用作数组“背景”的表达式。在这里,我使用空字符串""来满足您对“空白”的请求。由于这变得难以阅读,您可能更喜欢网格线:

Grid[
 SparseArray[Rule @@@ dat, {5, 5}, ""],
 Frame -> All
]

Mathematica graphics

答案 1 :(得分:3)

先生回答是最佳答案。但只是为了好玩,这里使用纯函数的方式略有不同

Grid[SparseArray[ #[[1]] -> #[[2]] & /@ dat, {5, 5}, ""], Frame -> All]