pgfplots 条形图:从一个条形图到另一个条形图添加标记箭头

pgfplots 条形图:从一个条形图到另一个条形图添加标记箭头

我有一张如下所示的 pgfplots 图表。

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        ybar,
        bar width=1.5cm,
        x=3cm,
        enlarge x limits={abs=1.5cm},
        enlarge y limits=false,
        ymin=0,
        nodes near coords,
        xtick=data,
        ylabel=Returns,
        symbolic x coords={Then, Now},
        axis lines*=left,
        clip=false
        ]
        \addplot coordinates {(Then,3) (Now,9)};
    \end{axis}
\end{tikzpicture}
\end{document}

我想在其中添加红色部分,即从一个条形图到下一个条形图的箭头,并附上标签。此图片并非严格要求,标签如果不是自动生成或放置在箭头上的其他地方,则完全没问题。

在此处输入图片描述

答案1

如果您想轻松准确地放置箭头,只需添加一种方法。您可以将 放在环境\draw内部axis,并使用axis cs[normalized]位置作为符号坐标,其中[normalized]0是坐标Then[normalized]1是坐标。然后,您可以根据需要和条形宽度使用和Now移动这些坐标。xshiftyshift

以下是一个例子:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        ybar,
        bar width=1.5cm,
        x=3cm,
        enlarge x limits={abs=1.5cm},
        enlarge y limits=false,
        ymin=0,
        nodes near coords,
        xtick=data,
        ylabel=Returns,
        symbolic x coords={Then, Now},
        axis lines*=left,
        clip=false
        ]
        \addplot coordinates {(Then,3) (Now,9)};
        \draw[->,red,thick] ([xshift=0.75cm]axis cs:{[normalized]0},3) -- ([xshift=-0.75cm]axis cs:{[normalized]1},9) node[above,midway,sloped] {+200\%};
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

作为一种快速破解方法,您可以手动添加箭头(根据需要调整坐标):

\documentclass{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        ybar,
        bar width=1.5cm,
        x=3cm,
        enlarge x limits={abs=1.5cm},
        enlarge y limits=false,
        ymin=0,
        nodes near coords,
        xtick=data,
        ylabel=Returns,
        symbolic x coords={Then, Now},
        axis lines*=left,
        clip=false
        ]
        \addplot coordinates {(Then,3) (Now,9)};
    \end{axis}
    \draw[->,red,thick] (2,2) -- (3,5) node[midway,anchor=east] {+200\%};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容