Упорядочить и отобразить части сетки в Mathematica - PullRequest
3 голосов
/ 26 мая 2011

Чтобы быстро найти местоположение моих данных, я отображаю таблицу с именами моих переменных, а также информацию о каждой из них.

Поскольку у меня много столбцов (переменных), я копирую и вставляю их блоки в ячейку, чтобы они были все на 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 ]

4 голосов
/ 26 мая 2011

Как я понял ваш вопрос, цвет был там, чтобы показать нам, какую часть вы хотите "продвинуть". Итак:

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];
4 голосов
/ 26 мая 2011

РЕДАКТИРОВАТЬ:

Если подумать, то, что у меня было раньше, это не то, что вы хотели ... вы хотите, чтобы он отображался в виде столбцов, но с разделением второй половины строк и отображением рядом с первой.Следующий код должен сделать это.Дайте мне знать, если вы это имели в виду ...

(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 голос
/ 26 мая 2011

Вот как бы я это сделал. Начиная с вашего 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 была изменена на противоположную.


Мне нравится код Йоды:

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

...