2011-06-08 50 views
2

是否可以更改图形对象的选项?说你是一个图形对象的工作作为G2D在下面的图片Mathematica:更改图形对象的选项

Sample

您可以从G2DInputFormPlotRange选项设置为{{-0.025,1.025},{0,1.05}}看到。但后来在代码中,我决定将PlotRange选项更改为不同的选项。 InputForm会发生什么情况?新的选项只是附加。

您可以使用OptionsAbsoluteOptions获取图形对象设置的选项,但我还没有找到更改这些选项的方法。功能SetOptions看起来像是一个可能的候选人,但事实证明,这个功能只适用于流和功能。也就是说,它只允许设置它们在示例中显示的默认行为。

回答

6

如果您想要清除图形中的一组选项,则可能最容易重新构建图形。你可以用First提取图形的主体,并使用DeleteDuplicatesOptions得到的选项简化列表:

old = Graphics[{Blue, Disk[]}]; 
old = Show[old, ImageSize -> 1000]; 
old = Show[old, ImageSize -> 500]; 
old = Show[old, ImageSize -> 250]; 
old = Show[old, ImageSize -> 100] 

InputForm[old] 

new = Graphics[First[old], 
    DeleteDuplicates[Options[old], First[#] === First[#2] &]] 

InputForm[new] 

我用Options因为选项Graphics可以,但并不总是,列在一个列表中,并且Options将使表格标准化。

我也想指出,技术上Show是预先选择的值,所以重复的选项并不真正伤害任何东西,虽然他们可以使它更难以调试图形输出和略微增加文件的大小。

enter image description here


您也可以使用SetOptions更改默认值所有显卡:

SetOptions[Graphics, Background -> Gray]; 

Graphics[Disk[]] 

enter image description here

+0

布雷特,我不知道你是否注意到了,但至少在照片中,我在原始文章中使用了Show。我遇到的问题是,您正在定义的新选项仅仅被附加到列表中。如果您在我的图片中注意到,在上次使用InputForm时,选项PlotRange将被包含3次。我想要的是一个清晰的定义,说明PlotRange是什么。 – jmlopez 2011-06-08 14:50:14

+0

啊,我明白了。图片中的文字很小,所以我没有仔细阅读。我会更新答案。 – 2011-06-08 15:00:21

+0

我有点困惑,你是第二次编辑你的答案还是你要再次编辑它?无论如何,我发布了一个SetOptions的链接,它不能解决问题。我需要确保在使用InputForm时只能看到一个选项的一个实例。 – jmlopez 2011-06-08 15:11:05