Одинарная двойная логарифмическая ось

Одинарная двойная логарифмическая ось

Я пытаюсь построить график с двойной логарифмической осью Y. Возможно ли это? Это должно изменить расстояние каждого логарифмического приращения, поскольку я хочу построить так называемые коэффициенты битовых ошибок. Чтобы получить прямую линию измеренных данных, необходим этот тип масштабирования (y=log(log(x)). Известно, что на обычном логарифмическом графике расстояние между каждым приращением одинаково... К сожалению, я не смог найти решение в pgfplots-manual. Единственный вариант, который там указан, — это одинарный логарифм для одной или обеих осей. Пример на рисунке приведен по ссылке ниже. Вот как это должно выглядеть.

решение1

Как сказал Кристиан Фейерзенгер, вы можете использовать a y coord trafoдля преобразования координат на лету. Метки делений обычно преобразуются повторно с помощью y coord inv trafo, но точность математического движка недостаточно высока для этого (1000 становится 997,8), поэтому вам придется явно указать метки:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}


\begin{tikzpicture}
\begin{axis}[
    y coord trafo/.code=\pgfmathparse{log10(log10(#1))},
    domain=0:2,
    ymax=10000,
    ytick={10,100,1000,10000},
    yticklabels={10,100,1000,10000},
    extra y ticks={2,...,9,20,30,...,90,200,300,...,900,2000,3000,...,9000},
    extra y tick labels={},
    every extra y tick/.style={major tick length=3pt}
]
\addplot {exp(exp(x))};
\end{axis}
\end{tikzpicture}
\end{document}

Связанный контент