Подтвердить что ты не робот

Экспоненциальная форма меток для журнала в 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?

4b9b3361

Ответ 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]