如何填充 f(x)=-1/x 的行间?
这是我迄今为止的代码...
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepackage{wrapfig}
\begin{document}
\begin{wrapfigure}{l}{8cm}
\centering
\begin{tikzpicture}
\begin{axis}
[
width=8cm,
height=8cm,
axis lines=center,
domain=-5:5,
samples=100,
xmin=-5, xmax=5,
ymin=-5, ymax=5
]
\addplot[smooth, thick] {-(1/x)};
\end{axis}
\end{tikzpicture}
\caption{A graph of $\hat{V}(r)\approx -\frac{1}{r}$}
\end{wrapfigure}
\end{document}
答案1
以下代码将产生您想要的结果:
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepackage{wrapfig}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{wrapfigure}{l}{8cm}
\centering
\begin{tikzpicture}
\begin{axis}
[
set layers, axis on top,
width=8cm,
height=8cm,
axis lines=center,
domain=-5:5,
samples=100,
xmin=-5, xmax=5,
ymin=-5, ymax=5
]
% draw the curve
\addplot[smooth, thick, samples=100] {-(1/x)};
% generate the required paths
\addplot[smooth, thick, domain=-5:-0.1, name path=A, draw=none] {-(1/x)} -- (axis cs: 5, 5);
\addplot[smooth, thick, domain=5:0.1, name path=B, draw=none] {-(1/x)} -- (axis cs: -5, -5);
% fill
\addplot[green] fill between [of=A and B];
\end{axis}
\end{tikzpicture}
\caption{A graph of $\hat{V}(r)\approx -\frac{1}{r}$}
\end{wrapfigure}
\end{document}
除了您已有的内容之外,您还必须添加一些东西:
- 作为JLo0815注意,您可以使用
fillbetween
库。但是,1/x 函数不是连续的,因此您必须手动扩展路径。我通过将路径延伸到 x/y 范围的最大值来实现此目的。 - 要显示轴,您需要添加
set layers
和axis on top
风格。
此外,在做事时要小心:绘制 1/x 会产生非常高的数字接近于零,这就是为什么我使用 0.1 作为路径的范围限制,否则你最终会得到
! 尺寸太大
错误。另外,正如你似乎知道的(或者你很幸运),你需要使用偶数个样本,否则将包括 x=0,这(显然)也会失败。
最后得到如下图表:
哦,最后但并非最不重要的一点是:请提供在职的下次是 MWE,包括\documentclass
和包。