[Tex/LaTex] Riemann sum with pgfplots — can’t seem to make graph look right

pgfplotstikz-pgf

I'm trying to reproduce something like this with the function x^-1, but no matter what options I try, I can't seem to make the graph look correct.

This is my current code:

\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}

And this is the current output:

LaTeX output

How do I make the graph look correct, with the green outline for the green bars and without the green outline on the left of the first red bar (see output above)?

Best Answer

You can fix this problem by using the ybar interval style for both plots, but reversing the direction for the lower sum by using domain=17:1 instead of domain=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}