Nas*_*ser 6 wolfram-mathematica
(Mathematica版本:8.0.4,在Windows 7上)
有人可以提醒我如何告诉M在以下情况下不要更改ImageSize:
我有一个Manipulate,我制作一个网格,在网格内部,我要么显示一个图,要么显示2个图,具体取决于控件的选择.
为了保持整体显示的图像相同,如果我显示一个图我使用一个尺寸,如果我显示2个图,我使用每个图的一半长度.到目前为止很容易.
奇怪的是,当我使用鼠标旋转一个绘图案例,然后切换回2个绘图时,绘图大小现在不使用我指定的ImageSize.
似乎通过使用鼠标旋转一个绘图,它影响了同一屏幕位置上显示的下一个绘图.
使用SphericalRegion -> True与否,没有效果.使用RotationAction -> "Fit"没有效果.
这是我的意思的一个小例子,然后我展示了我目前如何解决这个问题.但我通过使用GraphicsGrid代替Grid来解决它.如果可能的话,我想继续使用Grid.
Manipulate[
Module[{opt = {Spacings -> {0, 0}, Frame -> All}, p,
size, data = Table[RandomReal[], {10}, {10}], wid = 300, len = 300},
size = If[choice == 1, {wid, len}, {wid, len/2}];
Print[size];
p = ListPlot3D[data,SphericalRegion->True,ImagePadding -> 10,ImageSize ->size];
If[choice == 1,
Grid[{{p}}, Sequence@opt], Grid[{{p}, {p}}, Sequence@opt]
]
],
Row[{SetterBar[Dynamic[choice], {1, 2}]}],
{{choice, 2}, None}
]
Run Code Online (Sandbox Code Playgroud)
要重现这个问题,很简单:首先我要注意尺寸,这就是我想保留它的方式.现在我点击选项1,现在使用鼠标旋转一个图.现在我点击选择2返回,然后我看到情节大小不是我预期的.

我确信这是我需要使用的选项.还没找到它.
PS.实际上似乎发生的是,旋转的SAME图,停留在内容区域,并用于代替第二种情况下的2个图中的一个.很奇怪.我必须在某个地方做些傻事,因为这太奇怪了.
更新2:48 am
这是对DynamicMrWizard下面Manipulate表达式的使用的回应.在V 8.04上,它不起作用.这是代码:
Manipulate[
Module[{p, size, data = Table[RandomReal[], {10}, {10}], wid = 300,
len = 300},
size = If[choice == 1, {wid, len}, {wid, len/2}];
p = ListPlot3D[data, SphericalRegion -> True, ImagePadding -> 10,
ImageSize -> size];
If[choice == 1,
Grid[{{p}}],
Dynamic@Grid[{{p}, {p}}]
]
],
Row[{SetterBar[Dynamic[choice], {1, 2}]}],
{{choice, 2}, None}
]
Run Code Online (Sandbox Code Playgroud)

更新3:03 am
以下通过保持网格来工作.在网格周围添加框架使其有效.(感谢Mike回答显示使用Frame代替Grid使其工作,我想让我尝试在网格周围添加一个框架)
我用Mathematica很长时间看到的最奇怪的事情之一:)
Manipulate[
Module[{p, size, data = Table[RandomReal[], {10}, {10}], wid = 300,
len = 300},
size = If[choice == 1, {wid, len}, {wid, len/2}];
p = ListPlot3D[data, SphericalRegion -> True, ImagePadding -> 10,
ImageSize -> size];
If[choice == 1,
Framed@Grid[{{p}}],
Grid[{{p}, {p}}]
]
],
Row[{SetterBar[Dynamic[choice], {1, 2}]}],
{{choice, 2}, None}
]
Run Code Online (Sandbox Code Playgroud)
谢谢
这涉及到另一个谜题再怎么//为什么PLOT3D格式记得图像选项为什么PLOT3D格式记得.......在这种情况下,解决方案恰好相同:即添加PreserveImageOptions -> False为选项Plot3D.不知何故,像MrW和Mike建议的黑客强迫Plot3D"忘记".
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |