Сохранение аннотаций сюжета

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

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

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

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

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

top-answerers

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

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

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


ИЗМЕНИТЬ

Я поместил код, чтобы сделать тактовые данные SO, как указано выше в Mathematica Toolbag.

EDIT

Теперь код переместится на более подходящий вопрос Brett Champion: qaru.site/info/4654/....

Ответы

Ответ 1

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

После добавления аннотаций через 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"]

дает

enter image description here

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

Ответ 2

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

Cases[editedPic, _AddedAnnotation, Infinity]

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