Pgfplot-用箭头绘图以指示两个连续数据点之间的方向

Pgfplot-用箭头绘图以指示两个连续数据点之间的方向

有没有简单的方法可以自动在从表中读取的两个连续数据点之间创建箭头?(除了添加标记)。请参阅附图。在此处输入图片描述

对于大型数据集,我发现添加节点太过繁琐。

平均能量损失

\documentclass[margin=0.3cm]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{ytick style={draw=none}}
\def\axisdefaultwidth{9cm}
\def\axisdefaultheight{6cm}
\pgfplotsset{every axis/.style={scale only axis}}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}[compat=newest, xlabel=Premixed air flow rate (SLPM), ylabel=$p'_{rms}$ (Pa),xtick pos=left]
\pgfplotstableread{sa} \mydata;
\addplot[only marks,mark=*] table [x = x, y =y] {\mydata};
\draw[->] (axis cs:1, 2) -- (axis cs:2, 4);
\draw[->] (axis cs:2, 4) -- (axis cs:3, 3);
\draw[->] (axis cs:3, 3) -- (axis cs:4, 1.5);
\end{axis} 
\end{tikzpicture}
\end{document}

文件“sa”包含数据

x   y
1   2
2   4
3   3
4   1.5

在产生的情节中,标记遮住了箭头,并且为每一对 cs 添加标记也很繁琐: 在此处输入图片描述

答案1

该解决方案假定sa文件是制表符分隔的。

\documentclass[margin=0.3cm]{standalone}
\usepackage{tikz}
\usepackage{datatool}
\usepackage{pgfplots}
\usetikzlibrary{arrows.meta}

\pgfplotsset{compat=1.13}

\pgfplotsset{ytick style={draw=none}}
\def\axisdefaultwidth{9cm}
\def\axisdefaultheight{6cm}
\pgfplotsset{every axis/.style={scale only axis}}
\DTLsettabseparator
\DTLloaddb[noheader=false]{coordinates1}{sa}
\DTLmaketabspace


\usepackage{pgfplotstable}
\begin{document}

\begin{tikzpicture}
\begin{axis}[compat=newest, xlabel=Premixed air flow rate (SLPM), ylabel=$p'_{rms}$ (Pa),xtick pos=left,ybar=0]
\pgfplotstableread{sa} \mydata;
\addplot[mark options={blue,solid},mark=*,only marks] table [x = x, y =y] {\mydata};
\pgfplotsextra{
\def\xA{0}
\def\yA{0}
\DTLforeach*{coordinates1}{\xB=x, \yB=y}{%
    \DTLiffirstrow{
    }{
    \draw[-latex,shorten >=0.05cm,] (axis cs:\xA,\yA) -- (axis cs:\xB,\yB);
    }
    \let\xA\xB
    \let\yA\yB
}
}
\end{axis}


\end{tikzpicture}
\end{document}

此解决方案使用datatool包并需要逗号分隔的数据版本。第一个数据点是 tex 代码中的 (xA,yA)。

\documentclass[margin=0.3cm]{standalone}
\usepackage{tikz}
\usepackage{datatool}
\usepackage{pgfplots}
\usetikzlibrary{arrows.meta}

\begin{filecontents}{sa}
x   y
1   2
2   4
3   3
4   1.5
\end{filecontents}


\begin{filecontents}{sa2}
x,y
2,4
3,3
4,1.5
\end{filecontents}

\pgfplotsset{compat=1.13}

\pgfplotsset{ytick style={draw=none}}
\def\axisdefaultwidth{9cm}
\def\axisdefaultheight{6cm}
\pgfplotsset{every axis/.style={scale only axis}}
\DTLloaddb[noheader=false]{coordinates1}{sa2}


\usepackage{pgfplotstable}
\begin{document}

\begin{tikzpicture}
\begin{axis}[compat=newest, xlabel=Premixed air flow rate (SLPM), ylabel=$p'_{rms}$ (Pa),xtick pos=left,ybar=0]
\pgfplotstableread{sa} \mydata;
\addplot[mark options={blue,solid},mark=*,only marks] table [x = x, y =y] {\mydata};
\pgfplotsextra{
\def\xA{1}
\def\yA{2}
\DTLforeach*{coordinates1}{\xB=x, \yB=y}{%
    \draw[-latex,shorten >=0.05cm,] (axis cs:\xA,\yA) -- (axis cs:\xB,\yB);
    \let\xA\xB
    \let\yA\yB
}
}
\end{axis}


\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容