Управление пользовательским табличным представлением в Mathematica
Рассмотрим следующий пример данных:
data ={
{"a", "b", "c", "d", "e"},
{1, 2, 3, 4, 5},
{11, 12, 13, 14, 15},
{21, 22, 23, 24, 25}
};
И следующая функция для генерации настроенного табличного представления:
(и вы можете обратиться к расширенное решение, Мистер Волшебник настраиваемых табличных представлений. В конечном счете, я бы также манипулировал вариантами, которые он предлагал, на данный момент)
DataSampleX[data_, linesNumber_, range1_, range2_, color1_, color2_, color3_] :=
Grid[
Join[
{Range[range1, range2]}, {Map[Rotate[Text[#], 90 Degree] &,
data[[1, range1 ;; range2]]]},
data[[2 ;; linesNumber, range1 ;; range2]]
],
Background -> {{{{color1, color2}}, {1 -> color3}}},
Dividers -> {All, {1 -> True, 2 -> True, 3 -> True,0 -> True}},
ItemSize -> {1 -> Automatic, Automatic},
Alignment -> Top,
Frame -> True,
FrameStyle -> Thickness[2],
ItemStyle -> {Automatic, Automatic,
{{1, 1}, {1, Length[data]}} ->Directive[FontSize ->
15, Black, Bold]}
];
Я хочу использовать манипуляции или Dynamic для отображения деталей на данные выше. Это выбор диапазона столбца, который я хочу дисплей, количество линий для отображения, а также цвета.
Ниже приводится моя незаконченная попытка.PopupMenu[Dynamic[range1], Range[1, Length@data[[1]] - 1, 1]]
PopupMenu[Dynamic[range2], Range[2, Length@data[[1]], 1]]
PopupMenu[Dynamic[linesNumber], Range[2, Length@data[[All, 1]] - 1, 1]]
Dynamic[DataSampleX[data, linesNumber, range1, range2, LightBlue,
LightGray, LightYellow]]
Как я могу использовать setter для обновления значения цвета ?
Возможно ли на самом деле иметь это в окне манипуляции ?
Любое другое предложение, чтобы сделать этот эффективный внешний вид хорошим, приветствуется.
-EDIT: что я могу сделать сейчас благодаря решению Велисария ниже:
1 ответ:
Попробуйте что-нибудь вроде:
colsel = (#->Graphics[{#, Disk[]},ImageSize -> 15])& /@ColorData[1, "ColorList"]; s[x_] := Style[x, Black, Bold, 12]; ct = ControlType -> PopupMenu; Manipulate[ DataSampleX[data, linesNumber, range1, range2, color1, color2, color3], Row[{ Column[{ Control@{{range1, 1, s@"Range1"}, Range[1, Length@data[[1]] - 1], ct}, Control@{{range2, 2, s@"Range2"}, Range[2, Length@data[[1]] - 1], ct}, Control@{{linesNumber, 2, s@"Lines"}, Range[2,Length@data[[All, 1]]-1],ct}}], Spacer[20], Column[{ Control@{{color1, colsel[[1, 1]], s@"Color 1"}, colsel, ct}, Control@{{color2, colsel[[2, 1]], s@"Color 2"}, colsel, ct}, Control@{{color3, colsel[[3, 1]], s@"Color 3"}, colsel, ct}}] }]]