如何设置Controller以显示或隐藏Manipulate的Graphic组件?
Manipulate[Graphics[
{Pink, Disk[{1, 1}, r],
Green, Disk[{2, 2}, r]}],
{{r, 0.5, Style["Radius", Black, 16]}, 0.5, 5, 1,
Appearance -> "Labeled"}]
例如,在上文中,我如何将控制器设置为显示或不显示绿圈?
- 解决方案:
Manipulate[Graphics[{
If[thePink,
{Pink, Disk[{1, 1}, r]}],
If[theGreen,
{Green, Disk[{2, 2}, r]}]
}
],
{{r, 0.5, Style["Radius", Black, 16]}, 0.5, 5, 1,
Appearance -> "Labeled"},
{{thePink, True, "Pink"}, {True, False}},
{{theGreen, False, "Green"}, {True, False}}]
答案 0 :(得分:4)
你无法真正“隐藏”绿球。
显示的是Manipulate表达式评估的结果。 Manipulate的工作原理如下:
操纵[expression,control_variables]
当任何控制变量(动态)更改时,将重新评估表达式并显示其结果。因此,当您移动滑块时,您正在更改变量值,因此正在重新计算表达式并显示其输出。
要“隐藏”任何内容,您需要更改表达式NOT以输出绿球。因此,您需要添加一些控制变量(比如复选框),如果设置,则更改表达式不显示绿球。简单的逻辑测试就行了。例如
Manipulate[
Graphics[{Pink, Disk[{1, 1}, r], Green, If[show, Disk[{2, 2}, r]],
Sequence[]}], {{r, 0.5, "Radius"}, 0.5,
5}, {{show, True, "Show Green Circle?"}, {True, False}}]
编辑:
WOW,感谢Simon,我准备粘贴一个例子来做你在看到编辑时所做的事情。谢谢。它与您的代码几乎相同。在这里它也可以粘贴它:)
Manipulate[Graphics[
{ Pink,Disk[{1,1},r],
If[on,{Green,Disk[{2,2},r]}]
}] ,
{{r,0.5,"Radius"},0.5,5},
{{on,False,"show green ball"},{True,False}}
]
答案 1 :(得分:2)
也许:
Manipulate[
Graphics[{Pink, Disk[{1, 1}, r], Opacity[o],
Green, Disk[{2, 2}, r]}],
{{r, 0.5, "Radius"}, 0.5, 5},
{{o, 0.5, "Opacity"}, 0, 1}]