我试图在 pgfplots 中可视化两个函数,但无法传达我的主要信息,即两个函数都在同一点结束。如何才能改变这种行为,最好是不使用额外的外部工具?
这是我的小例子:
\documentclass[tikz]{standalone}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0.0,
xmax=2,
ymin=0,
ymax=1.75,
axis x line=bottom,
axis y line=left,
xlabel=control parameter $r$,
ylabel=energy $(J)$,
ytick={}, yticklabels={},
xtick={1},
xticklabels={1},
restrict x to domain=0:2,
]
\addplot+[smooth,no marks, samples at={1.0,0.999,0.99,0.96,...,0.001,0}] {1.12*(1-x)^0.5};
\addplot+[smooth, densely dashed, no marks,samples=1000]{1.75*(1-x)^0.5};
\end{axis}
\end{tikzpicture}
\end{document}
输出如下:
理想情况下,两个函数都会恰好以 (1,0) 结束,但即使有大量样本或明确给出 x 值 1.0,我也无法接近。我尝试使用 gnuplot,但遇到了使用 gnuplot 提高 pfgplots 精度,pgfplots 不会丢弃来自 gnuplot 的无界坐标。
对于恰好为 1/2 的指数,sqrt 函数会产生更好的结果,但仅在这种特殊情况下有效。
有任何想法吗?
答案1
您可以使用sqrt
函数,而不是将零计算为 0.5 次方。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0.0,
xmax=2,
ymin=0,
ymax=1.75,
axis x line=bottom,
axis y line=left,
xlabel=control parameter $r$,
ylabel=energy $(J)$,
ytick=\empty,
xtick={1},
xticklabels={1},
restrict x to domain=0:2,
]
\addplot+[smooth,no marks, samples at={1.0,0.999,0.99,0.96,...,0.001,0}] {1.12*sqrt(1-x)};
\addplot+[smooth, densely dashed, no marks,samples=1000]{1.75*sqrt(1-x)};
\end{axis}
\end{tikzpicture}
\end{document}