使用Mathematica中的Manipulate显示或隐藏组件

时间:2011-06-07 21:22:10

标签: graphics controller wolfram-mathematica

如何设置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"}]

例如,在上文中,我如何将控制器设置为显示或不显示绿圈?

enter image description here

- 解决方案:

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}}]

enter image description here

2 个答案:

答案 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}]