% based on Ch. 2 of "Systematic Design of Anlog Integrated Circuits: 
% Using Pre-Computed Lookup Tables" by Paul G.A. Jespers and Boris Murmann
\begin{axis}[ view={50}{30}
            , ylabel=$\frac{g_{\mathrm{m}}}{I_{\mathrm{D}}}nV_{\mathrm{TH}}$
            , xlabel=$\frac{V_{\mathrm{GS}}-V_{\mathrm{TH}}}{nV_{\mathrm{T}}}$ 
            , zlabel=$\mathrm{IC}\equal\nicefrac{I_{\mathrm{D}}}{I_{\mathrm{S}}}$
            , ymin=0
            , ymax=1
            , xmin=-12
            , xmax=40
            , zmin=0.01
            , zmax=100
            , zmode=log
            , width =14cm
            , height=14cm
            , x dir = reverse
            , y dir = reverse
            , grid=both
            , xtick={-10,0,...,40}
            , every tick label/.append style={font=\footnotesize}
            , legend style={nodes={scale=0.7, transform shape}}
            ]

  \addplot3[densely dotted,semithick, forget plot] coordinates{
    (  40    , 0.833, 0.24) 
    (  -3.209, 0.833, 0.24) 
    (  -3.209, 0, 0.24) 
  };
  \addplot3[densely dotted,semithick, forget plot] coordinates{
    (  -3.209, 0.833 , 0.24) 
    (  -3.209, 0.833,  0.01) 
  };
  \addplot3[densely dotted,semithick, forget plot] coordinates{
    (  40   , 0.167, 30) 
    (  9.609, 0.167, 30) 
    (  9.609, 0, 30) 
  };
  \addplot3[densely dotted,semithick, forget plot] coordinates{
    ( 9.609, 0.167 , 30) 
    ( 9.609, 0.167,  0.01) 
  };

  \addplot3[ mark=none
           , domain=0.01:0.2
           , samples=70
           , smooth
           , thick
           , blue
           , samples y  = 0
           ] ({2*(x-1)+ln(x)},{1/(x+1)},{x^2+x});\addlegendentry{weak (W.I.)}
  \addplot3[ mark=none
           , domain=0.2:5
           , samples=100
           , smooth
           , thick
           , green
           , samples y  = 0
           ] ({2*(x-1)+ln(x)},{1/(x+1)},{x^2+x});\addlegendentry{moderate (M.I.)}
  \addplot3[ mark=none
           , domain=5:19.5
           , samples=100
           , smooth
           , thick
           , red
           , samples y  = 0
           ] ({2*(x-1)+ln(x)},{1/(x+1)},{x^2+x});\addlegendentry{strong (M.I.)}

 \addplot3[ mark=none
           , domain=0.01:0.2
           , samples=70
           , smooth
           , samples y  = 0
           , densely dashed
           , blue
           , forget plot
           ] ({2*(x-1)+ln(x)},{1/(x+1)},{0.01}); 
  \addplot3[ mark=none
           , domain=0.2:5
           , samples=100
           , smooth
           , samples y  = 0
           , densely dashed
           , green
           , forget plot
           ] ({2*(x-1)+ln(x)},{1/(x+1)},{0.01});  
  \addplot3[ mark=none
           , domain=5:19.5
           , samples=50
           , smooth
           , samples y  = 0
           , densely dashed
           , red
           , forget plot
           ] ({2*(x-1)+ln(x)},{1/(x+1)},{0.01});  

  \addplot3[ mark=none
           , domain=0.01:0.2
           , samples=70
           , smooth
           , samples y  = 0
           , densely dashed
           , blue
           , forget plot
           ] ({40},{1/(x+1)},{x^2+x});  
  \addplot3[ mark=none
           , domain=0.2:5
           , samples=100
           , smooth
           , samples y  = 0
           , densely dashed
           , green
           , forget plot
           ] ({40},{1/(x+1)},{x^2+x});  
  \addplot3[ mark=none
           , domain=5:19.5
           , samples=50
           , smooth
           , samples y  = 0
           , densely dashed
           , red
           , forget plot
           ] ({40},{1/(x+1)},{x^2+x}); 

  \addplot3[ mark=none
           , domain=0.01:0.2
           , samples=70
           , smooth
           , samples y  = 0
           , densely dashed
           , blue
           , forget plot
           ] ({2*(x-1)+ln(x)},{0},{x^2+x});  
  \addplot3[ mark=none
           , domain=0.2:5
           , samples=100
           , smooth
           , samples y  = 0
           , densely dashed
           , green
           , forget plot
           ] ({2*(x-1)+ln(x)},{0},{x^2+x});  
  \addplot3[ mark=none
           , domain=5:19.5
           , samples=50
           , smooth
           , samples y  = 0
           , densely dashed
           , red
           , forget plot
           ] ({2*(x-1)+ln(x)},{0},{x^2+x}); 
\end{axis}
