tikz-pgf を使用して Weibull 確率ネットワーク (ドイツ語: "Weibullwahrscheinlichkeitspapier") を実装しようとしています。
左の Y 軸をよく見てください。これは対数ではなく、二重対数です。この Y 軸と二重対数グリッドを再現したいと思います。
線形にスケールされた Y 軸は、右側に第 2 Y 軸として表示されます。
問題は、左のy軸が2倍の対数スケールになっていることです。つまり、左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}
ありがとう!
答え1
あなたの質問の更新について検討し、あなたが何を望んでいるのか理解できました。これが望ましい結果であることを願っています。
- を使用すると
y coord trafo
、y 軸の値を必要に応じて扱うことができます。pgfplotsが を計算しようとしたときに問題が発生するのを避けるために、の中にln
定数を入れました。1e-4
ln 0
- 2 番目の軸 (右側) で計算される値は、次の式から得られます。-2、-1.5 などの y 値を代入して、確率 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}