【问题标题】:Saving plot annotations保存绘图注释
【发布时间】:2011-04-21 12:29:35
【问题描述】:

昨天,在向"Optimally picking one element from each list" 问题添加一些时序图时,我再次想起了我几年前发布的数学组帖子 ("Keeping plot annotations after regenerating a plot")。

当我认为某些轴标签会很好时,我很高兴(手动)注释我的图。问题是,重新生成带有轴标签的图会破坏您的手动注释。

看来您可以在此处名为 pic 的图中找到用户添加:Rest[pic[[1, 1]]],因此,如果您将该图重新生成为 pic2,您可以在使用时取回您的注释:

Insert[pic2, Rest[pic[[1, 1]]], {1, 1}]

我记得 David Park(Presentation 软件包的作者)强烈反对手动注释。我自己已经做了很多程序化标签,但有时将标签置于程序控制下太难了,就像这里(注意我不太喜欢PlotLegends,特别是因为有些颜色彼此接近):

我的拼团已经来不及了,已经扔掉了剧情原作,但我想知道目前在这个问题上的想法是什么。

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

顺便说一句,我的数学组帖子中的技巧与上面显示的技巧略有不同,并用于前 10 名的情节。不过原理是一样的。


编辑

我在Mathematica Toolbag 中放置了用于制作SO 数据图的代码,如上图所示。

编辑

代码现在移至 Brett Champion 提出的更合适的问题:How do I access the StackOverflow API from Mathematica

【问题讨论】:

  • +100 用于对数图!我几乎相信这个问题只是炫耀情节的借口......
  • 我同意西蒙的观点!你从哪里得到的数据?
  • @belisarius 和 @Mark,可能来自 data explorer,刚刚获得了前 10 名的数学回答者。可悲的是,我没有回答足够多的问题,无法列入该列表......叹息。
  • @Sjoerd,顺便说一句,在我的美国美式语言范围内,我如何发音你的名字?
  • @Mr.Wizard 喜欢 'insured' 中的 'sured' 部分,在 'u' 音之前有一个清晰的 'y',就像在 'yellow' 中一样。希望这有点清楚。这是一个弗里西亚人的名字(荷兰北部),就像我的姓氏一样。后者是荷兰最常见的姓氏之一(也是到处拖我中间名字首字母的原因;LinkeIn 上至少有 15 个叫 Sjoerd de Vries 的人;也是这里著名电视人物的双关语,调查记者彼得·R·德弗里斯)

标签: wolfram-mathematica


【解决方案1】:

就我个人而言,我同意 David Park 的观点,即以编程方式添加注释更胜一筹。它也可能更强大,并且可以与 Mathematica 的未来版本一起使用。我真的很想看到绘图工具调色板有所改进,我希望看到手动添加的多个注释更清楚地出现在生成的Graphics 对象中。如果有像 AddedAnnotation 这样的惰性 Head 或类似的,那么您可以通过

以编程方式找到所有这些编辑
Cases[editedPic, _AddedAnnotation, Infinity]

事实上,我发现自己正在挖掘图像的InputForm,我不确定你的Rest[pic[[1, 1]]] 是否总是有效,尤其是在未来的版本中。

【讨论】:

  • 这与我在数学组中提出的思路相同,但我想将其放在一个选项中:Graphics[ {original plot stuff, UserAdditions}, PlotRange->Automatic 等。 ., UserAdditions-> {GraphicsStuff, GraphicsStuff} ]
【解决方案2】:

一种方法,有点难看,但对于小情节注释来说似乎工作得相当好,如下所示。

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

例如

Plot[Sin[x], {x, 0, 6 \[Pi]}]

添加一些注释会得到以下结果:

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

Labeled[Plot[Sin[x], {x, 0, 8 \[Pi]}, 
  Epilog -> Rest[Cases[plotgraphic, _List][[1]]]], "Sine Plot"]

给予

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

【讨论】:

  • 您也不需要为第一个绘图指定名称,而是可以直接将图像复制粘贴到Cases 命令中
  • @Simon 谢谢。这是一个不错的
猜你喜欢
  • 2021-09-16
  • 1970-01-01
  • 2023-04-08
  • 2015-11-17
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
相关资源
最近更新 更多