500*_*500 4 wolfram-mathematica dynamic tabular
建立Belisarius在"Manipulate custom Tabular"中提出的解决方案.
请考虑以下函数来创建自定义表格表示:
DataSampleXX[data_, linesNumber_, columnsList_, color1_, color2_, color3_] :=
Grid[
Join[
{columnsList}, {Map[Rotate[Text[#], 90 Degree] &,
data[[1, columnsList]]]}, data[[2 ;; linesNumber, columnsList]]],
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]}
];
Run Code Online (Sandbox Code Playgroud)以下数据:
soData = {{"col1", "col2", "col3", "col4", "col5", "col6", "col7",
"col8", "col9", "col10"}, Range[1, 10], Range[11, 20],
Range[21, 30], Range[31, 40]}
With[
{columnsList = {1, 3},
data = soData,
linesNumber = 3,
color1 = LightBlue,
color2 = LightRed,
color3 = LightGray},
DataSampleXX[data, linesNumber, columnsList, color1, color2, color3]]
Run Code Online (Sandbox Code Playgroud)
我想整合以下动态来提供函数的columnsList参数DataSampleXX.
Manipulate[Sort@Join[Sequence @@ {a, b}],
Evaluate[Sequence @@ MapThread[{{#1, {}, ""}, #2,
ControlType -> TogglerBar} &, {{a, b},
Partition[Rule @@@ Transpose[{Range[10], soData[[1]]}], 5]}]],
ControlPlacement -> Top]
Run Code Online (Sandbox Code Playgroud)
DataSampleXX但我还不知道如何合并这两种机制.你想做什么需要一些技巧.
例如:
Maipulate[ f[ Array[ a, exp], ...], ...]
Run Code Online (Sandbox Code Playgroud)
类似的结构不起作用(并在文档中解释),因为a[_]表达式中没有显式,因此很难拥有可变数量的控件.我找到的解决方案是:
Manipulate[ f[#,...], ... ] & @ Array[a, exp]
Run Code Online (Sandbox Code Playgroud)
其他问题是构造
Control@( .#. ) &/@ _controls_
Run Code Online (Sandbox Code Playgroud)
本身不允许二维分区,因此我们必须同时使用Control @语法选项(Control @和{...}),这是未记录的.
您可以在下面的代码中找到其他麻烦.
所以:
soData = {{"col01", "col02", "col03", "col04", "col05", "col06",
"col07", "col08", "col09", "col10"},
Range[1, 10], Range[11, 20], Range[21, 30], Range[31, 40]};
perRow = 5;
colsel = (# -> Graphics[{#, Disk[]}, ImageSize -> 15]) &/@ColorData[1, "ColorList"];
s[x_] := Style[x, Black, Bold, 12];
ct = ControlType -> PopupMenu;
Manipulate[
DataSampleXX[soData, linesNumber, Sort@Join[Sequence @@ #], color1,
color2, color3],
Row[
{Column[
{Control@{{linesNumber, 2, s@"Lines"},
Range[2, Length@soData[[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}}]}],
Evaluate[
Sequence @@
MapThread[{{#1, {}, ""}, #2, ControlType -> TogglerBar} &,
{#, Partition[Rule @@@ Transpose[{Range[10], soData[[1]]}], perRow]}]]] &@
Array[a, Length[soData[[1]]]/perRow]
Run Code Online (Sandbox Code Playgroud)
