用 pgfplots 进行黎曼和运算——似乎无法使图形看起来正确

用 pgfplots 进行黎曼和运算——似乎无法使图形看起来正确

我正在尝试重现类似的事情使用函数x^-1,但无论我尝试什么选项,我似乎都无法使图形看起来正确。

这是我当前的代码:

\documentclass[border=5mm]{standalone}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{pgfplots}

\pgfplotsset{compat=1.9}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xtick={0,1,3,5,7,9,11,13,15,17},ytick={0,...,1.5},
    xmax=18,ymax=1.2,ymin=0,xmin=0,
    enlargelimits=true,
    axis lines=middle,
    clip=false,
    domain=0:17,
    axis on top
    ]

\addplot [draw=red, fill=red!10, ybar interval, samples=9, domain=1:17]
    {x^-1}\closedcycle;
\addplot [draw=green, fill=green!10, const plot mark right, samples=9, domain=1:17]
    {x^-1}\closedcycle;

\addplot[smooth, thick,domain=1:17,samples=40]{x^-1};

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

这是当前的输出:

LaTeX 输出

我怎样才能使图表看起来正确,绿色条带有绿色轮廓,而第一个红色条左侧没有绿色轮廓(参见上面的输出)?

答案1

您可以通过对两个图都使用样式来解决此问题,但通过使用而不是来ybar interval反转较低总和的方向:domain=17:1domain=1:17

\documentclass[border=5mm]{standalone}

\usepackage{pgfplots}

\pgfplotsset{compat=1.9}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xtick={0,1,3,5,7,9,11,13,15,17},ytick={0,...,1.5},
    xmax=18,ymax=1.2,ymin=0,xmin=0,
    enlargelimits=true,
    axis lines=middle,
    clip=false,
    domain=0:17,
    axis on top
    ]

\addplot [draw=red, fill=red!10, ybar interval, samples=9, domain=1:17]
    {x^-1}\closedcycle;
\addplot [draw=green, fill=green!10, ybar interval, samples=9, domain=17:1]
    {x^-1}\closedcycle;

\addplot[smooth, thick,domain=1:17,samples=40]{x^-1};

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

答案2

您可以将下方的矩形放在scope环境中,并clip放置在正确的高度。尝试替换

\addplot [draw=green, fill=green!10, const plot mark right, samples=9, domain=1:17]
{x^-1}\closedcycle;

\begin{scope}
\clip (0,0) rectangle (6.5cm,1.6cm);
\addplot [draw=green, fill=green!10, const plot mark right, samples=9, domain=1:17]
{x^-1}\closedcycle;
\end{scope}

我反复试验,找到了 6.5cm 和 1.6cm 这两个值。不知道如何自动计算这些值。另外,我的版本pgfplots是 1.5,所以这些值可能需要调整。

相关内容