我正在尝试绘制一个函数,但 x 轴为对数。我使用带有代数选项的PSTricks
包pstricks-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}