安排&在Mathematica中显示网格的部分

时间:2011-05-26 04:18:16

标签: graphics grid wolfram-mathematica

为了快速找到数据的位置,我会显示一个包含变量名称的表格以及每个变量的信息。

由于我有很多列(变量),我将它的块复制并粘贴到单元格中,以便将它们全部放在1个屏幕上。

我想对此进行编码,这样我就可以输入几个要提取的行,并有效地在网格上显示一些适合屏幕区域的行?我还没有很好地一起显示2个网格。

如果我上面没有正确表达我的问题,这里有一个简单的例子:

如果laList的输出是我们必须处理的内容,如何将蓝色部分移动到粉红色的一侧?

co1    = Range[6];
co2    = Range[11, 16];
co3    = {"A", "B", "C", "D", "E", "F"};

laList = Join[{co1}, {co2}, {co3}] // Transpose;

laListGraph = Grid[laList,
Dividers -> All,
Alignment -> {Left, Center},
ItemSize -> Automatic,
ItemStyle -> Directive[FontSize -> 14, Black, Italic, Bold],
Spacings -> {2, 1},
 Background -> {None, None, {
     {{1, 3}, {1, 3}} -> LightRed,
     {{4, 6}, {1, 3}} -> LightBlue
   } } ]

3 个答案:

答案 0 :(得分:4)

编辑:

再想一想,我之前所拥有的并不是你想要的......你希望它显示为列,但是后半部分分割并显示在第一行旁边。以下代码应该这样做。如果这是您的想法,请告诉我......

(Grid[#1, Dividers -> All, Alignment -> {Left, Center}, 
     ItemSize -> Automatic, 
     ItemStyle -> Directive[FontSize -> 14, Black, Italic, Bold], 
     Spacings -> {2, 1}, 
     Background -> {None, 
       None, {{1, 3}, {1, 3}} -> #2}] &) @@@ {{laList[[;; 3, All]], 
    LightRed}, {laList[[4 ;;, All]], LightBlue}} // Row

enter image description here

答案 1 :(得分:4)

当我理解你的问题时,着色只是为了向我们展示你想要“向上移动”的部分。所以:

showG[l_List] :=
  Grid[Join[
    l[[ ;; IntegerPart[Length@l/2]]],
    l[[IntegerPart[Length@l/2] + 1 ;;]]
    , 2], Frame -> All];

showG[laList]

enter image description here

修改

或更多@先生的口味:

showG[l_List] :=
  Grid[Join[l[[ ;; #]], l[[# + 1 ;;]], 2], Frame -> All] &@ Floor[Length@l/2];

答案 2 :(得分:1)

我将如何做到这一点。从您在问题中定义的laList开始:

laList2 = ArrayFlatten @ {Partition[laList, 3]};

Grid[laList2,
Dividers -> All,
Alignment -> {Left, Center},
ItemSize -> Automatic,
ItemStyle -> Directive[FontSize -> 14, Black, Italic, Bold],
Spacings -> {2, 1},
 Background -> {None, None, {
     {{1, 3}, {1, 3}} -> LightRed,
     {{1, 3}, {4, 6}} -> LightBlue
   } }
]

enter image description here

请注意:

  • 3中的Partition值需要根据您的列表进行调整。

  • LightBlue区域的区域规范被颠倒过来。


我喜欢的yoda代码的变体是:

subgrid= Grid[#1,
         Dividers  -> All,
         Alignment -> {Left, Center}, 
         ItemSize  -> Automatic, 
         ItemStyle -> Directive[FontSize -> 14, Black, Italic, Bold], 
         Spacings  -> {2, 1}, 
         Background-> #2] &;

MapThread[subgrid, {Partition[laList, 3], {LightRed, LightBlue}}] //Row

此外,使用此方法,您可以对不均匀划分的列表进行分区:

MapThread[subgrid, {
  Partition[laList, 4, 4, 1, {}],
  {LightRed, LightBlue}
}] //Row

enter image description here