Заставить научную нотацию в галочках ListLogLogPlot - PullRequest
7 голосов
/ 15 апреля 2011

Я пытаюсь отформатировать метки галочек на ListLogLogPlot. При поиске в архивах Mathgroup похоже, что обычный способ связываться с метками тиков - это извлечь их с помощью AbsoluteOptions, запустить правило замены в произвольном формате и затем явно передать их в функцию построения графика с опцией Ticks->{...}. Однако следующее не работает для ListLogLogPlot:

foo = ListLogLogPlot[Range[20]^3, Frame -> True];
ticks=(FrameTicks /. AbsoluteOptions[foo, FrameTicks])

Есть идеи, как с этим бороться? ..


Редактировать: здесь много хороших ответов! Принятие мистера Волшебника, поскольку это оказалось наиболее кратким способом решения насущной проблемы, но я вижу себя, используя другие методы, предложенные в будущем.

Ответы [ 5 ]

7 голосов
/ 15 апреля 2011

Можно использовать замены, чтобы связываться с ярлыками напрямую, минуя Option / AbsoluteOptions:

ListLogLogPlot[Range[20]^3, Frame -> True] /.
   (FrameTicks -> x_) :>
      (FrameTicks -> (x /. {a_?NumericQ, b_Integer, s___} :>
         {a, Superscript[10, Log10@b], s} ))

enter image description here


Благодаря АлексеюПопков теперь это улучшено и менее хрупко.

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

Чтобы дополнить ответ Бретта , посмотрите на пакет CustomTicks в LevelScheme .Он предоставляет две функции для генерации отметок «LinTicks and LogTicks», каждая из которых имеет множество параметров форматирования.В настоящее время он требует, чтобы вы выполнили логарифм самостоятельно, т.е.

Plot[ {Log[10,Cosh[x]], Log[10, Sinh[x]]}, {x, 0, 4}, Frame -> True,
      FrameTicks -> { LinTicks, LogTicks, None, None }]

дает

LogPlot of cosh and sinh over 0 to 4

Для списка данных, очевидно, вам придется использоватьLog[Base, data] с ListPlot, но это выполнимо.Я представил патч Марку Каприо, чтобы следующие действия делали то же самое, что и выше

LogPlot[ {Cosh[x], Sinh[x]}, {x, 0, 4}, Frame -> True,
      FrameTicks -> { LinTicks, LogTicks, None, None }]

Если патч будет принят, старая форма LogTicks будет доступна при установке опции PlotType до Linear, Logarithmic по умолчанию.Преимущество использования CustomTicks в том, что другие базы просты

code for and plot of Exp[-x^2] from 0 to 3

и автоматически форматирует его так, как вы хотите.

Редактировать Я также хотел бы отметить, что CustomTicks загружается отдельно от остальных LevelScheme.И, поскольку это небольшой пакет, дополнительных издержек не так уж много.

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

Как Sjoerd, я обычно предпочитаю написать функцию, которая вычисляет тики на лету:

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

Похоже, ошибка для меня. Простой вызов AbsoluteOptions[foo] выдает сообщения об ошибках. Обычный старый Options[foo] работает нормально, хотя.

0 голосов
/ 15 апреля 2011

Отправьте письмо с этим кодом на support@Wolfram.com.Они будут в состоянии сказать вам, если есть известный лучший обходной путь.

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