问题缩放对数函数 PSTricks

问题缩放对数函数 PSTricks

我正在尝试绘制一个函数,但 x 轴为对数。我使用带有代数选项的PSTrickspstricks-add,逐字地编写我的函数。我要绘制的函数是: 要绘制的函数

我想要 X 轴的对数,从 10^-1 到 10^2......但我不知道该怎么做......

这是我尝试过的……

\psset{xunit=2,yunit=6, algebraic}
\begin{pspicture}[showgrid=false](0,0)(2,1)
   \psaxes[xlogBase=10, comma,subticks=5,
            arrowscale=1.5]{->}(3,0.8)[Voltage (V),-90][Yield (\%),90]
   \psplot[linecolor=red]{0.01}{2}{(x/(1+(1+x^2)^0.5))^2}
\end{pspicture}

这会产生这个:代码 我想要的是这个: 我的目标

我是否必须调整函数,以便它在绘制后适合非对数网格?我不明白在非对数网格中绘制对数函数的原理……

如果您也能向我解释一下那就太好了。

答案1

在此处输入图片描述这是 PSTricks 的解决方案。

\documentclass[pstricks,border=10pt]{standalone}

\usepackage{pst-plot,pstricks-add}

\begin{document}

\psset{xunit=2,yunit=6,plotpoints=500,algebraic=true,linewidth=0.5pt,dash=2pt 2pt}

\begin{pspicture}(-1.4,-0.2)(3.9,1.2)
  \psaxes[axesstyle=frame,xlogBase=10,comma,logLines=x,dy=0.2,Dy=20,xsubticks=9,
   yticksize=0 4,subticklinestyle=dashed,ticklinestyle=dashed,Ox={-1}](-1,0)(3,1.0)[Voltage (V),0][Yield (\%),90]
   \psplot[linecolor=red]{-1}{3}{10^x^2/(1+sqrt(1+10^x^2))^2}
\end{pspicture}

\end{document}

答案2

使用 PGFPlots 执行此操作的方法如下:

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.10}

\begin{document}
\begin{tikzpicture}%
  \begin{axis}[%
    xmode = log, % X axis is logarithmic
    domain = 1e-1:1e2, % Domain over which the function is evaluated
    ymax = 100, % Explicitly set the upper limit of the Y axis (the others are automatically determined)
    enlargelimits = false, % Don't add padding
    ylabel = Yield / \%, % Set the labels
    xlabel = Voltage / V,
    grid = both % Draw grid lines for the X and Y axis
  ]
  \addplot [very thick, smooth] { 100 * x^2 / (1 + sqrt(1+x^2))^2};
  \end{axis}
\end{tikzpicture}%
\end{document}

相关内容