Сохранение аннотаций сюжета
Вчера, добавив некоторые графики времени в "Оптимально выбрав один элемент из каждого списка" , я снова вспомнил о публикации в mathgroup, я сделал пару лет назад ( "Сохранение аннотаций после реставрации сюжета" ).
Я с удовольствием аннотировал мои сюжеты (вручную), когда думал, что некоторые ярлыки осей будут приятными. Проблема в том, что регенерация графиков с помощью меток оси приведет к уничтожению ваших аннотаций вручную.
Похоже, вы можете найти пользовательские добавления в графике с именем pic здесь: Rest[pic[[1, 1]]]
, поэтому, если вы регенерируете сюжет как pic2, вы можете вернуть свои аннотации, если вы используете:
Insert[pic2, Rest[pic[[1, 1]]], {1, 1}]
Помню, Дэвид Парк (автор пакета "Презентации" ) категорически против рукописных аннотаций. Я сам сделал довольно программную маркировку, но иногда размещение меток под программным управлением просто слишком сложно, как здесь (обратите внимание, что мне не нравится PlotLegends
, особенно потому, что некоторые цвета близки друг к другу):
Уже было слишком поздно для моего 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]}]
Добавление нескольких аннотаций дает следующее:
Присвоение имени plotgraphic
вышеуказанному изображению, новый измененный график с добавленными аннотациями может быть сгенерирован следующим образом (например)
Labeled[Plot[Sin[x], {x, 0, 8 \[Pi]},
Epilog -> Rest[Cases[plotgraphic, _List][[1]]]], "Sine Plot"]
дает
Это может быть неудобно, если не сказать больше, и метод, без сомнения, может быть улучшен. Вероятно, это также относится к тому, что уже делают другие. Тем не менее, это дает сюжет, где аннотации присутствуют "программно", и, как никто не упомянул Epilog
, я решил, что это может стоить публикации.
Ответ 2
Лично я согласен с Дэвидом Парком в том, что программное дополнение аннотации превосходит. Он также, вероятно, будет более надежным и работать с будущими изданиями Mathematica. Мне бы очень хотелось, чтобы палитра инструментов рисования немного улучшилась, и я хотел бы увидеть, что несколько добавленных вручную примечаний добавляются в результирующий объект Graphics
более четко. Если бы был инертный Head
как AddedAnnotation
или какой-то такой, то вы могли бы найти все эти исправления программным путем через
Cases[editedPic, _AddedAnnotation, Infinity]
Как бы то ни было, я нахожусь в InputForm
изображения, и я не уверен, что ваш Rest[pic[[1, 1]]]
всегда будет работать, особенно в будущих версиях.