考虑下面的图表:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=1.1,xmax=1.5,
xlabel={$Q^2$},
ylabel={$\alpha_{\textrm{eff}}\left(Q^2\right)$},
axis on top,
ticks=none,
scaled ticks=false,
legend style={at={(0.5,1.)},anchor=north,legend cell align=left,legend plot pos=left, font=\small,draw=none,fill=none} ,
]
\addplot[color=red,samples=300] {1/(1 - 2 * ln x)};
\addlegendentry{$\alpha$}
\addplot[color=blue,samples=300] {1/(2 * ln x)};
\addlegendentry{$\alpha_s$}
\end{axis}
\end{tikzpicture}
\end{document}
这两个函数在用于绘图的机制中过去没有任何不连续性 - 它们应该表现得很有规律。然而,我得到了很多这样的结果:
NOTE: coordinate (2Y1.6876381e-2],3Y0.0e0]) has been dropped because it is unbounded (in y). (see also unbounded coords=jump)
有人能解释一下这是怎么回事吗,我该如何避免这些消息?我对仅仅抑制它们不感兴趣 - 我想了解它们出现的原因是什么。
我还注意到,改变样本数量会以令人惊讶的方式影响图表:
samples=300
samples=200
samples=100
samples=50
我对最后一张图中的极端跳跃感到惊讶——看起来只使用了 2-3 个点……这是什么原因造成的?
答案1
由于您没有明确指定域(独立于轴限制),pgfplots
因此使用其默认域 [-5,5]。因此,尽管您看,pgfplots
确实试图在不连续性附近的区域进行绘图。通过指定键来解决此问题domain=1.1:1.5
;可以对axis
选项列表中的所有绘图或命令中的每个绘图执行此操作\addplot
。
采样问题与之相关:样本分布在域中,而不是轴视口中查看的区域。因此,在最后一个示例中,您总共有 50 个样本,但在轴的可视区域中您只能看到 2 个(每个图)。
在这里您可以看到domain
为避免警告而指定的值。我们现在还可以看到整个域中的 10 个样本(我指定了samples=10
)。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=1.1,xmax=1.5,
domain=1.1:1.5,
samples=10,
xlabel={$Q^2$},
ylabel={$\alpha_{\textrm{eff}}\left(Q^2\right)$},
axis on top,
ticks=none,
scaled ticks=false,
legend style={at={(0.5,1.)},anchor=north,legend cell align=left,legend plot pos=left, font=\small,draw=none,fill=none} ,
]
\addplot[color=red] {1/(1 - 2 * ln x)};
\addlegendentry{$\alpha$}
\addplot[color=blue] {1/(2 * ln x)};
\addlegendentry{$\alpha_s$}
\end{axis}
\end{tikzpicture}
\end{document}