积分测试图标签未居中

积分测试图标签未居中

在这里的代码中:Tikz-PGF:绘制积分测试图,它们的 a 子 n 位于矩形的中心。我获取了它们的代码并对其进行了少许编辑,但我的 a_n 不再位于中心。为什么会发生这种情况?我该如何修复?

\begin{center}
\begin{tikzpicture}[/pgf/declare function={f=1/x;}]
\pgfplotsset{width=12cm, height = 6cm}
\begin{axis}[
        xmin=0,xmax=9,ymin=0,ymax=1,
    domain=0:10,
    samples=100,
    axis lines=center,
    grid=major,
    no marks,
]
\addplot [
    black!50,
    fill=blackwhite,
    right segments=8,
    right=1:9,
] {f};
\addplot [thick, bluedark] {f};
\end{axis}
\foreach \x/\t in {1.5/$a_1$,2.5/$a_2$,3.5/$a_3$,7.5/$a_7$}
\node[black] at (\x,{4/(\x+1)-0.25}){\t}; 
\end{tikzpicture}  
\end{center}

答案1

内部的坐标系axis与一般的坐标系不同tikzpicture,因此您需要将节点放置在里面axis

话虽如此,但仍有两点需要注意:

  • 由于axis解析的方式,您不能\foreach像平常一样使用循环。阅读第 8.1 节实用程序命令pgfplots手册中。在下面的代码中有两个不同的选项。
  • 除非您有\pgfplotsset{compat=1.11}(或更高版本),否则坐标仍然不是以轴单位表示,除非您使用(axis cs:x,y)而不是(x,y)

代码输出

\documentclass{article}
\usepackage{pgfplots}
% right hand sums
\pgfplotsset{
    right segments/.code={\pgfmathsetmacro\rightsegments{#1}},
    right segments=3,
    right/.style args={#1:#2}{
        ybar interval,
        domain=#1+((#2-#1)/\rightsegments):#2+((#2-#1)/\rightsegments),
        samples=\rightsegments+1,
        x filter/.code=\pgfmathparse{\pgfmathresult-((#2-#1)/\rightsegments)}
    }
}
\begin{document}
\begin{center}
\begin{tikzpicture}[
  declare function={f(\x)=1/(\x);} % <-- modified
]
\begin{axis}[
    xmin=0,xmax=9,ymin=0,ymax=1,
    domain=0:10,
    samples=100,
    axis lines=center,
    grid=major,
    no marks,
    width=12cm,
    height = 6cm
]
\addplot [
    black!50,
    fill=black!40!white,
    right segments=8,
    right=1:9,
] {f(x)}; % <-- modified

\addplot [thick, blue!80!black] {f(x)}; % <-- modified

% option 1
%\foreach \x/\t in {1.5/$a_1$,2.5/$a_2$,3.5/$a_3$,7.5/$a_7$}
%  {
%  \edef\temp{\noexpand\node[black] at (axis cs:\x,{f(\x+0.5)/2}) {\t};}
%  \temp
%}

% option 2
\pgfplotsinvokeforeach{2,3,4,8}{%
   \node at (axis cs:#1+0.5,{f(#1+1)/2}) {$a_{#1}$};
}

\end{axis}
\end{tikzpicture}  
\end{center}
\end{document}

相关内容