[Tex/LaTex] weibull plot with arbitrary y axis scale

pgfplots

I want to draw a function in a weibull plot. The x axis is log, the y axis however goes with log(-log(1-y)) (as far as I understood it from this site). The y axis looks similar to a log scale but reverses at the center at 10 (goes from 0.1 to 99.9 in %).

The resulting line in this diagramm should be linear for any function of the type

f(x) = 1-exp(-x^b)

I started with a loglogaxis, but that is obviously wrong

\begin{tikzpicture}
\begin{loglogaxis}[scale only axis,
         every axis plot/.append style={line width=2.0pt},
         domain=0.1:20,
         xmin=0,xmax = 20.0,
         ymin=0.1,ymax = 99.9,
         grid=major,
         xtick={1,2,3,4,5,10,20,30,40,50,100,200,300},
         ytick={0.1,0.2,0.3,0.4,0.5,1,2,3,4,5,10,20,30,40,50,60,70,80,90,99,99.9},
%
         xlabel=Lebensdauer $t$,
         ylabel=Ausfallhäufigkeitssumme $R(t)$,
         ]
%
\addplot[domain=0.01:100] gnuplot{ 1-exp(-x**2)};
\end{loglogaxis} 
\end{tikzpicture}

However I can already see that the ticks are all written as powers of 10, but I want them to be linear in all cases. How would that be achieved?

EDIT:

I tried to modify the axis with:

xmode=log,
y coord trafo/.code=\pgfmathparse{(ln(1-ln(1-#1/100))+4.6001)/6.66*100}

but then the y axis tics show not the number but the position on the 0-100 scale which is wrong. And more important: the numbers calculated by tex are wrong. For x= 0.2 it should be 7.84 but tex print out 69.1.

enter image description here

The real y values are shown in this matlab plot which has the correct calculated values:

enter image description here

Best Answer

Here's the example from the link, implemented in PGFPlots:

\documentclass[border=2pt]{standalone}
\usepackage{pgfplots,pgfplotstable}

\begin{document}
\begin{tikzpicture}
\begin{axis}[scale only axis,
        only marks,
         xmin=10,xmax = 1000,
         ymin=0.001, ymax=0.999,
         grid=major,
         xtick={10, 20, 50, 100, 200, 500, 1000},
         ytick={0.001,0.05,0.4,0.99},
         yticklabels={0.1,5,40,99},
        xmode=log,
        log ticks with fixed point,
y coord trafo/.code=\pgfmathparse{ln(-ln(1-#1)))},
y coord inv trafo/.code=\pgfmathparse{exp(-exp(-#1-1))}
         ]
%
\addplot [domain=10:1000, sharp plot] {1-exp(-(x/820)^1.96)};
\addplot [mark=o, mark size=1.5, black] table {
96  0.02
147 0.04
202 0.0604
232 0.0813
277 0.1022
278 0.1231
325 0.1439
346 0.1648
354 0.1857
367 0.2066
414 0.228
440 0.2501
471 0.2721
525 0.2942
541 0.3163
542 0.3383
574 0.3604
608 0.3824
631 0.4045
643 0.4265
661 0.4504
669 0.4743
706 0.4982
720 0.5221
722 0.546
738 0.5712
747 0.598
770 0.6248
802 0.6537
841 0.6825
850 0.7114
884 0.7403
893 0.7691
901 0.798
};
\end{axis} 
\end{tikzpicture}

\end{document}
Related Question