【问题标题】:Mathematica: Changing the options of a Graphics objectMathematica:更改图形对象的选项
【发布时间】:2011-06-08 14:28:15
【问题描述】:

是否可以更改 Graphics 对象的选项?假设您正在使用图形对象G2D,如下图所示

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

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

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

    如果您想清理图形中的选项集,重新构建图形可能是最简单的。可以用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 是在选项值之前添加的,因此重复的选项并没有真正损害任何东西,尽管它们会使调试图形输出变得更加困难并略微增加文件。


    您还可以使用 SetOptions 更改 所有 图形的默认值:

    SetOptions[Graphics, Background -> Gray];
    
    Graphics[Disk[]]
    

    【讨论】:

    • Brett,我不知道你是否注意到,但我在原始帖子中使用了 Show,至少在图片中是这样。我遇到的问题是您定义的新选项只是被附加到一个列表中。如果您在我的图片中注意到选项 PlotRange 在我上次使用 InputForm 时被包含 3 次。我想要的只是一个清晰的定义,说明 PlotRange 是什么。
    • 啊,我明白了。图片中的文字很小,所以我实际上并没有仔细阅读。我会更新答案。
    • 我有点困惑,您是第二次编辑答案还是要再次编辑?无论如何,我发布了一个指向 SetOptions 的链接,这并不能解决问题。我需要确保当您使用 InputForm 时,您只能看到一个选项的一个实例。
    • 我刚刚进行了第三次编辑。 :-) 第二个是展示如何将SetOptionsGraphics 结合使用。 (虽然我一般不建议这样做。)
    • 谢谢布雷特。这正是我想要的方式,现在我可以保持一切清洁。还有一件事,您能否解释一下如何制作测试表达式以检查您是否正在删除重复项?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2010-12-09
    • 2019-08-24
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多