有没有简单的方法可以自动在从表中读取的两个连续数据点之间创建箭头?(除了添加标记)。请参阅附图。
对于大型数据集,我发现添加节点太过繁琐。
平均能量损失
\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
答案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}