在 pgfplot 图中从一个点到另一个点画一个箭头?

在 pgfplot 图中从一个点到另一个点画一个箭头?

我如何才能从 tikz 图片中的一个点到另一个点画一个箭头?

在下面的例子中,我想从单词数据(大约是坐标 (1982, 88))绘制一个箭头,并让它指向坐标 (1985, 82)。

\documentclass[professionalfont, fleqn]{beamer}
\mode<presentation>
\usetheme{Warsaw}
\usetheme{CambridgeUS}

\usepackage{pgfplots}
\usetikzlibrary{arrows,shapes,positioning}
\graphicspath{{graphics/}}

\begin{document}
\frame
{
\frametitle{Frame Title}
     \begin{tikzpicture}
      \begin{axis}
       [
         axis x line  = bottom,
         axis y line  = left,
         width        = 1.01\textwidth,
         height       = .63\textwidth,          % Adjusted
         ymax         = 93,
         ymin         = 27,
         ytick        = {30,40,...,90},
         xmax         = 1993,
         xmin         = 1967,
         xtick        = {1970, 1980, ..., 1990},
       ]
       \node[anchor=west] at (axis cs:1968.5,89.5){%
       \textbullet\ Comment here about data
       };
      \end{axis}
   \end{tikzpicture}
}

\end{document}

答案1

您可以使用nodes 来执行此操作,例如

       \node[anchor=west] (source) at (axis cs:1968.5,89.5){\textbullet\ Comment here about data};
       \node (destination) at (axis cs:1985,82){};
       \draw[->](source)--(destination);

这使

截屏

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
      \begin{axis}
       [
         axis x line  = bottom,
         axis y line  = left,
         width        = 1.01\textwidth,
         height       = .63\textwidth,          % Adjusted
         ymax         = 93,
         ymin         = 27,
         ytick        = {30,40,...,90},
         xmax         = 1993,
         xmin         = 1967,
         xtick        = {1970, 1980, ..., 1990},
       ]
       \node[anchor=west] (source) at (axis cs:1968.5,89.5){\textbullet\ Comment here about data};
       \node (destination) at (axis cs:1985,82){};
       \draw[->](source)--(destination);
      \end{axis}
   \end{tikzpicture}

\end{document}

按照注释,你可以node使用许多不同的方式(参见tikz & pgf手册第 3.10 节);您还可以自定义箭头(参见手册第 23 节)。例如,

\draw[->,>=stealth](source) to [out=90,in=90] (destination);

给出

在此处输入图片描述

答案2

您可以直接使用坐标绘制:

\draw[->] (axis cs:1982, 88) -- (axis cs:1985, 82);

在环境中axes工作。我发布了对同一问题的答案,该答案早些时候已发布在LaTeX 社区

更粗的箭头,正如评论中所要求的:

\draw[->,-triangle 60] (axis cs:1982, 88) -- (axis cs:1985, 82);

或三角形 45、三角形 90。arrows库提供了一些。若要整体绘制更粗的箭头,请添加thickvery thick选项进行绘制。

对于弯曲的箭头,您可以使用弯曲选项,例如

\draw[->,-triangle 60] (axis cs:1982, 88) to[bend right=-60] (axis cs:1985, 82);

箭

答案3

为了完成之前给出的关于曲线箭头的答案:
我找到了一个让我受到启发的解决方案文章重点关注 gnuplot。

手册的第 14.10 节tikz & pgf提供了一种类似的方法,即使用抛物线在两点之间绘制弯曲的箭头。该方法可以让您控制箭头的曲线,超出了操作的inout选项所能实现的范围to,但比贝塞尔曲线(手册的第 14.3 节)更容易使用。

通过使用以下内容扩展您的示例,您应该得到一个漂亮弯曲的箭头:

\draw[->,>=stealth](source) parabola bend (axis cs:1980,40) (destination);

联合国幸运的是我可以没有发布结果图片,因为这是我的第一篇帖子感谢@diabonas 的评论:(:)。

上述 <code>\draw</code> 命令的结果

相关内容