在Mathematica中分离“手绘”对象

时间:2011-10-03 12:49:00

标签: wolfram-mathematica

将Mathematica中的手绘对象与程序生成的对象分开的最简单/最方便的方法是什么?

交互式绘图工具既方便又实用。但是如果我在绘图上绘制一些东西,一旦重新生成绘图,它就会丢失。对此有一个方便的解决方案吗?

我可以将绘图放在空图上,将它们与实际绘图结合起来。但这又是不方便的,因为我需要手动设置空图的绘图范围,我没有看到背景,我正在添加注释。

2 个答案:

答案 0 :(得分:14)

一种方法,使用注释标记生成的内容:

Plot[Annotation[Sin[x], "GeneratedPrimitives"], {x, 0, 10}]

RecoverDrawing[g_Graphics] := g /. Annotation[_, "GeneratedPrimitives"] :> {}

RecoverDrawing[<modified graphic>]

enter image description here

答案 1 :(得分:0)

不幸的是,我能想到的最好的事情是使用ClickPane或EventHandler编写一个程序,它不仅可以记录添加到图像中的点的记录。代码修改如:

DynamicModule[{pts = {}}, 
 ClickPane[Dynamic[Framed@Graphics[Line[pts], PlotRange -> 1]], 
  AppendTo[pts, #] &]]