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을 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}