Сохранение сюжетных аннотаций - PullRequest
10 голосов
/ 21 апреля 2011

Вчера, когда я добавлял некоторые временные графики к «Оптимальному выбору одного элемента из каждого списка» , я еще раз вспомнил о публикации в математической группе, которую я сделал пару лет назад ( «Сохранениесюжетные аннотации после восстановления сюжета ").

Я радостно комментировал свои графики (вручную), когда думал, что некоторые метки оси будут хорошими.Проблема в том, что восстановление графиков с установленными метками осей уничтожит ваши ручные аннотации.

Похоже, вы можете найти пользовательские дополнения на графике с именем pic здесь: Rest[pic[[1, 1]]], поэтому, если вы регенерируете график как pic2, вы можете получить свои аннотации обратно, если используете:

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

Я помню, как Дэвид Парк (автор пакета «Презентации») был категорически против ручных аннотаций.Я сам сделал несколько программных меток, но иногда помещать метки под контроль программы просто слишком сложно, как здесь (обратите внимание, что мне не нравится PlotLegends, особенно потому, что некоторые цвета близки друг к другу):

top-answerers

Было уже слишком поздно для моего клуджа, выбросить оригиналы сюжета, но мне интересно, каково текущее состояние мышления по этому вопросу.

  • Есть ли лучшие способы сделать это?
  • Насколько распространен этот метод?Работает ли он на всех типах графиков и диаграмм?
  • Работает ли он во всех версиях?(выше 5.2)
  • Любой WRI планирует улучшить обработку пользовательских добавлений на графиках?

Кстати: трюк в моей публикации в математической группе немного отличался от показанного выше и использовался в верхней части-10 сюжет.Принцип тот же, но.


РЕДАКТИРОВАТЬ

Я поместил код для создания SO графиков данных, как показано выше, в Mathematica Toolbag.

РЕДАКТИРОВАТЬ

Код переведен на более подходящий вопрос Бреттом Чемпионом: Как получить доступ к API StackOverflow из Mathematica

Ответы [ 2 ]

5 голосов
/ 21 апреля 2011

Лично я согласен с Дэвидом Парком, что программное добавление аннотации лучше. Он также может быть более надежным и работать с будущими выпусками Mathematica. Мне бы очень хотелось, чтобы палитра инструментов рисования немного улучшилась, и я хотел бы, чтобы несколько добавленных вручную аннотаций появлялись в результирующем объекте Graphics более четко. Если бы существовал инертный Head, такой как AddedAnnotation или что-то подобное, вы можете найти все эти правки программно через

Cases[editedPic, _AddedAnnotation, Infinity]

На самом деле, я копаюсь в InputForm изображения, и я не уверен, что ваш Rest[pic[[1, 1]]] всегда будет работать, особенно в будущих версиях.

4 голосов
/ 22 апреля 2011

Один метод, который немного уродлив, но, кажется, работает достаточно хорошо для незначительных аннотаций сюжета, заключается в следующем.

После добавления аннотаций через Drawings tools дополнительная информация сохраняется вместе с графикой и может быть проверена, например, путем выбора графической скобки и использования Show Expression (Shift-Command-E на Mac). Дополнительная информация обычно может быть выбрана путем вырезания и вставки или с использованием Cases, а затем может быть добавлена ​​к новому измененному графику с использованием Epilog.

Например

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

Добавление нескольких аннотаций дает следующее:

enter image description here

Присвоив имя plotgraphic изображению выше, новый модифицированный график с добавленными аннотациями может быть сгенерирован следующим образом (например)

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

1021 * дает *

enter image description here

Это может быть неудобно, если не сказать больше, и этот метод, без сомнения, можно улучшить. Это также, вероятно, соответствует тому, что уже делают другие. Тем не менее, это даёт сюжет, где аннотации присутствуют «программно», и поскольку никто не упомянул Epilog, я решил, что, возможно, стоит опубликовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...