为什么 pgfplots 仅绘制函数到 x = 5 和 y = 5,而不绘制其他函数?
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
%%%<
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}
%%%>
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=100,ymin=0,ymax=10,xmin=0,xmax=20]
\addplot [thick] plot (\x, {1/(1 + exp(-0.6*(\x - 12)))});
\addplot plot (\x, {\x});
\end{axis}
\end{tikzpicture}
\end{document}
答案1
中有很多“域”选项pgfplots
。您要问的只是,它指定在绘图中使用domain
的值x
(如果您使用 ,则不需要反斜杠);默认情况下,我们有 ,作者显然认为这对于典型的图形来说是合理的。对于双变量函数有一个对应的值。pgfplots
domain = -5:5
y domain
xmin
此域与和建立的限制完全不同xmax
。虽然domain
是针对每个图设置的,但这些键是针对每个轴设置的,仅限制实际绘画这些限制。有相应的ymin
和。如果没有给出,ymax
这些将通过自动计算,但对于真正精美的图片,您必须自己设置它们。请注意pgfplots
y domain
不是在单变量函数图中,ymin
和没有任何关系,因为它决定了不存在的变量 的输入。相反,如果和是自动确定的,则会根据绘制函数在 上的输出值计算得出。ymax
y
ymin
ymax
domain
还有更多!我最喜欢的是restrict x to domain
和restrict y to domain
,它们是具有与相同的输入语法的过滤器domain
。它们不会确定变量中使用的数字;它们会确定绘图中使用的值。它们对于参数化或不可控函数非常有用;即\addplot {1/x};
,在默认的情况下domain = -5:5
,将在 处产生相当可怕的渐近线,x = 0
以及(在默认的ymin
和 的情况下ymax
)严重扭曲的轴视图。但restrict y to domain = -5:5
在此绘图中设置只会消除大值,移除渐近线并将图片缩放回比例平方。
或者,也可以使用参数图\addplot ({exp(x)},{exp(-x)});
(仅在第一象限中绘制相同内容的有趣方式),由于图上的值与变量值之间存在对数关系,因此很难直接调整。为此,默认domain
和默认轴大小都不合适;我通常保持domain
原样(这会导致两个坐标中的数字都太大),然后相应地设置restrict x to domain
和restrict y to domain
以很好地修剪图片。这并不是说这样做是个好主意完全地忽略domain
,因为这些点是计算...只是没使用。
这些过滤键与 min 和 max 键不同,因为它们实际上会忽略过滤掉的值,而不是简单地将它们从图片中剪掉。如果这些值大于 TeX 能够计算的范围,这一点至关重要。
最后,有samples
或sample at
,后者与和互斥存在domain
,说一下有多少,甚至确切地x
计算值时的值。restrict to domain
如果您仔细选择样本以避免异常输入,这可以作为键的替代方案。它们还可用于调整图中快速变化位置周围的绘图,否则这些位置看起来会相当不连贯。它们还与键交互,restrict to domain
例如,
\addplot[
domain = -5:5,
samples = 11,
restrict x to domain = -1:1,
restrict y to domain = -1:1
] ({exp(x)},{exp(-x)});
将会评估 11 个点,即 至({exp(-5)},{exp(5)})
,({exp(5)},{exp(-5)})
但只有两个坐标都在区间内的点[-1,1]
才会被绘制。不幸的是,唯一具有该属性的点是({exp(0)},{exp(0)}) = (1,1)
,因此您的绘图将相当空白。 未绘制的点甚至不用于锚定插值曲线! 所以过滤键并不是万能的。
我的照片往往全部这些键,因为它们各自对绘图的影响不同。