Tikz pgf loglog ось Y и логарифмическая ось X для использования в качестве сети вероятности Вейбулла (нем. "Weibullwahrscheinlichkeitspapier")

Tikz pgf loglog ось Y и логарифмическая ось X для использования в качестве сети вероятности Вейбулла (нем. "Weibullwahrscheinlichkeitspapier")

Я пытаюсь реализовать вероятностную сеть Вейбулла (нем. «Weibullwahrscheinlichkeitspapier») с помощью tikz-pgf.

Пожалуйста, посмотрите внимательнее на левую ось Y: это не логарифм, а двойной логарифм! Я хочу воспроизвести эту ось Y и сетку двойного логарифма.

Вероятностная сеть Вейбулла

Линейно масштабированная ось Y показана справа как вторичная ось Y.

Проблема в том, что левая ось Y масштабируется дважды логарифмически, то есть определениелевыйОсь Y:

уравнение логарифм оси Y


Вот чего я хочу добиться:

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


Вот таблица значений y

Таблица значений y:


Я начал здесь:

Код

\documentclass[margin=1cm]{standalone}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        height = 10cm,
        width = 15cm,
        grid=both,
        xmode=log, ymode=log,
        xmin=1e0, xmax=1e4,
        ymin=1e-2, ymax=1,
        ]

    \end{axis}
\end{tikzpicture}

\end{document}

xy-сетка

Спасибо!

решение1

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

  1. С помощью y coord trafoвы можете обрабатывать значения оси Y так, как хотите. Я поместил внутрь lnконстанту a 1e-4, чтобы избежать проблем, когда pgfplots попытается вычислить ln 0.
  2. Значения, вычисленные на второй оси (правой), получены из следующего уравнения. Подставьте значения y -2, -1,5 и т. д., чтобы получить вероятности Pa.

Пример

\documentclass[margin=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\begin{tikzpicture}
\pgfplotsset{set layers}
\begin{axis}[
/pgfplots/y coord trafo/.code=\pgfmathparse{log10(abs(ln(1.-#1+1e-4)))},
scale only axis,
axis y line*=left,
height = 10cm,
width = 15cm,
grid=both,
xmode=log,
xmin=1e0, xmax=1e4,
ymin=1e-2,ymax=1e0,
ytick={1e-2,3e-2,5e-2,1e-1,3e-1,4e-1,6.3212055883e-1,8e-1,9e-1,9.9e-1,9.99e-1,1e0},
yticklabels={0.01,0.03,0.05,0.1,0.3,0.4,0.63,0.8,0.9,0.99,0.999,1},
xlabel=$t\,(\log)$,
ylabel=$P_\mathrm{A}$,
]
\end{axis}%
\begin{axis}[
/pgfplots/y coord trafo/.code=\pgfmathparse{log10(abs(ln(1.-#1+1e-4)))},
scale only axis,
axis y line*=right,
axis x line=none,
height = 10cm,
width = 15cm,
grid=both,
xmode=log,
xmin=1e0, xmax=1e4,
ymin=1e-2,ymax=1e0,
ytick={1e-2,0.03112800566,1e-1,0.27110658589,0.63212055883,0.95767078038,1e0},
yticklabels={-2,-1.5,-1,-0.5,0,0.5,1},
ylabel=$\log\left(-\ln(1-P_\mathrm{A})\right)$,
]
\end{axis}
\end{tikzpicture}

\end{document}

Пример

Если вы хотите, чтобы на левой оси отображались проценты, скопируйте следующий код.

\documentclass[margin=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\begin{tikzpicture}
\pgfplotsset{set layers}
\begin{axis}[
/pgfplots/y coord trafo/.code=\pgfmathparse{log10(abs(ln(1.-#1+1e-4)))},
scale only axis,
axis y line*=left,
height = 10cm,
width = 15cm,
grid=both,
xmode=log,
xmin=1e0, xmax=1e4,
ymin=1e-2,ymax=1e0,
ytick={1e-2,3e-2,5e-2,1e-1,3e-1,4e-1,6.3212055883e-1,8e-1,9e-1,9.9e-1,9.99e-1,1e0},
yticklabels={1.0,3.0,5.0,10.0,30.0,40.0,63.2,80.0,90.0,99.0,99.9,100.0},
xlabel=$t\,(\log)$,
ylabel=$P_\mathrm{A}\,(\%)$,
]
\end{axis}%
\begin{axis}[
/pgfplots/y coord trafo/.code=\pgfmathparse{log10(abs(ln(1.-#1+1e-4)))},
scale only axis,
axis y line*=right,
axis x line=none,
height = 10cm,
width = 15cm,
grid=both,
xmode=log,
xmin=1e0, xmax=1e4,
ymin=1e-2,ymax=1e0,
ytick={1e-2,0.03112800566,1e-1,0.27110658589,0.63212055883,0.95767078038,1e0},
yticklabels={-2,-1.5,-1,-0.5,0,0.5,1},
ylabel=$\log\left(-\ln(1-P_\mathrm{A})\right)$,
]
\end{axis}
\end{tikzpicture}

\end{document}

Пример

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