保存绘图注释

Sjo*_*ies 10 wolfram-mathematica

昨天,同时加入一些时间地块的"从每个列表最理想选择一个元素"的问题,我再一次想起了mathgroup发布我几年前做的("再生一个情节后保持情节注释").

当我认为某些轴标签会很好时,我很高兴地(手动)注释我的情节.问题是,使用轴标签重新生成图将会破坏您的手动注释.

看起来您可以在名为pic的图中找到用户添加内容:Rest[pic[[1, 1]]],因此,如果您将图重新生成为pic2,则可以使用以下内容获取注释:

Insert[pic2, Rest[pic[[1, 1]]], {1, 1}]
Run Code Online (Sandbox Code Playgroud)

我记得David Park(演示文稿包的作者)强烈反对手动注释.我自己做了一些程序化标签,但有时候在程序控制下放置标签太难了,就像这里一样(注意我不太喜欢PlotLegends,特别是因为有些颜色彼此接近):

顶级的回答者

扔掉原点的原因已经太晚了,但我不知道目前对这个问题的看法是什么.

  • 有没有更好的方法来做到这一点?
  • 这种方法有多普遍?它适用于所有绘图和图表类型吗?
  • 它适用于所有版本吗?(5.2以上)
  • 任何WRI计划改善地块中用户添加的处理?

BTW我的数学组发布中的技巧与上面显示的技巧略有不同,并且在前10个图中使用.但原则是一样的.


编辑

我将代码放置在Mathematica Toolbag中制作如上所示的SO数据图.

编辑

现在代码被Brett Champion转移到更合适的问题:如何从Mathematica访问StackOverflow API

Mar*_*ure 5

就个人而言,我同意David Park的观点,即注释的程序化添加是优越的.它也可能更强大,可以与Mathematica的未来版本一起使用.我真的很想看到绘图工具调色板有所改进,我希望看到手工添加的多个注释Graphics更清晰地出现在结果对象中.如果有惰性HeadAddedAnnotation或一些这样的,那么你可以找到所有这些编辑通过编程

Cases[editedPic, _AddedAnnotation, Infinity]
Run Code Online (Sandbox Code Playgroud)

事实上,我发现自己正在挖掘InputForm图像,我不确定你Rest[pic[[1, 1]]]的总是能够工作,特别是在未来的版本中.


tom*_*omd 4

一种方法有点难看,但对于次要的绘图注释似乎相当有效,如下所示。

通过添加注释后Drawings tools,附加信息将与图形一起存储,并且可以通过例如选择图形括号并使用Show Expression(Mac 上的 Shift-Command-E)进行检查。通常可以通过剪切和粘贴或使用 来挑选附加信息Cases,然后可以使用 来将其添加到新的修改后的图中Epilog

例如

Plot[Sin[x], {x, 0, 6 \[Pi]}]
Run Code Online (Sandbox Code Playgroud)

添加一些注释给出以下内容:

在此输入图像描述

将名称分配plotgraphic给上面的图像,可以生成带有添加注释的新修改图,如下所示(例如)

Labeled[Plot[Sin[x], {x, 0, 8 \[Pi]}, 
  Epilog -> Rest[Cases[plotgraphic, _List][[1]]]], "Sine Plot"]
Run Code Online (Sandbox Code Playgroud)

给予

在此输入图像描述

至少可以说,这可能会很尴尬,而且该方法无疑可以改进。它也可能遵循其他人已经做的事情。尽管如此,它还是给出了一个情节,其中注释以“编程方式”存在,并且正如没有人提到的那样Epilog,我认为它可能值得发布。