Экспоненциальная форма меток для журнала в Mathematica
В попытке узнать больше Mathematica, я пытаюсь воспроизвести отметки на этом log (log) plot:
![enter image description here]()
Это как можно ближе:
LogLogPlot[Log[x!], {x, 1, 10^5}, PlotRange -> {{0, 10^5}, {10^-1, 10^6}}, Ticks -> {Table[10^i, {i, 0, 5}], Table[10^i, {i, -1, 6}]}]
![enter image description here]()
Вопрос
Как я могу сделать метки, которые всегда имеют вид 10 ^ n для соответствующих значений n?
Ответы
Ответ 1
Superscript
, общая форма набора, без какого-либо встроенного значения, является вашим другом для этого.
LogLogPlot[Log[x!], {x, 1, 10^5},
PlotRange -> {{0, 10^5}, {10^-1, 10^6}},
Ticks -> {
Table[{10^i, Superscript[10, i]}, {i, 0, 5}],
Table[{10^i, Superscript[10, i]}, {i, -1, 6}]
}
]
Ответ 2
Чтобы расширить предыдущие ответы, вы можете автоматически вычислить правильный диапазон для Table
в опции Ticks
, выполнив что-то вроде
ticksfun[xmin_, xmax_] :=
Table[{10^i, Superscript[10, i]}, {i, Floor[Log10[xmin]],
Ceiling[Log10[xmax]]}]
LogLogPlot[Log[x!], {x, 1, 10^5},
PlotRange -> {{0, 10^5}, {10^-1, 10^6}},
Ticks -> {ticksfun, ticksfun}]
Ответ 3
LevelScheme
- это пакет для Mathematica, который делает такие сюжеты очень легкими, полностью настраиваемыми и профессионально выглядящими. Я очень уверен, что если ваш сюжет был сделан в математике, он использовал LevelScheme. Здесь мое воспроизведение вашего сюжета в Mathematica с помощью LevelScheme
<<LevelScheme`;
Figure[{
FigurePanel[{{0,1},{0,1}},
PlotRange->{{0,5},{-1,6}},
FrameTicks->{
LogTicks[0,5,ShowMinorTicks->False],
LogTicks[-1,6,ShowMinorTicks->False]
}
],
RawGraphics[
LogLogPlot[{Log[x!],x Log[x]-x},{x,1,10^5},
PlotRange->{{0,10^5},{10^-1,10^6}},
PlotStyle->Darker/@{Red,Green}
]
]
}, PlotRange->{{-0.1,1.04},{-0.05,1.025}},ImageSize->300{1,1}]
![enter image description here]()
Ответ 4
Вы можете указать метку для заданного тика, задав 2-кортеж {value, label}
вместо того, чтобы просто дать value
.
Это все еще оставляет нам загадку того, как поддерживать форму 10^n
.
Для этого мы наблюдаем, что использование Defer
заставляет 10^i
сохранять свою форму. Однако нам все равно нужно Evaluate
i
внутри него, так как иначе мы просто получаем кучу 10^i
-labels.
Пример:
In[19]:= Table[10^i, {i, 0, 6}]
Out[19]= {1, 10, 100, 1000, 10000, 100000, 1000000}
In[18]:= Table[10^Defer[i], {i, 0, 6}]
Out[18]= {10^i, 10^i, 10^i, 10^i, 10^i, 10^i, 10^i}
In[17]:= Table[10^Defer[Evaluate[i]], {i, 0, 6}]
Out[17]= {10^0, 10^1, 10^2, 10^3, 10^4, 10^5, 10^6}
Используя это, мы можем теперь сделать следующее, чтобы получить решение:
LogLogPlot[Log[x!], {x, 1, 10^5},
PlotRange -> {{0, 10^5}, {10^-1, 10^6}},
Ticks -> {Table[{10^i, 10^Defer[Evaluate [i]]}, {i, 0, 5}],
Table[{10^i, 10^Defer[Evaluate [i]]}, {i, -1, 6}]},
TicksStyle -> StandardForm]