我想用 tikz 绘制 .dat 或 .csv 数据集。第一列是时间,第二列是电压。由于数据集非常庞大,我已经通过只读取其中的每 100 个值来减小其大小。为此,我使用了 gnuplot,如下所示。我用示波器测量了数据集,因此 x 和 y 坐标存在偏移。我现在的问题是减去这个偏移,如“$1-firstvalueofthiscolumn”(要从列中的每个值中减去偏移)。已经可以减去固定值,如“$1-0.1”,但由于我有很多数据文件,因此需要花费大量精力才能找出每个偏移量。有没有办法读取数据文件的第一列值并减去这个?
我的想法是先读取数据文件,然后将每列的第一个值保存为变量,以便以后绘图时使用。但不幸的是,我没能成功运行。
我非常感谢你的帮助
编辑:我已经在此处上传了示波器测量的数据集: https://www.filemail.com/d/qtulzcvctxmtleh
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot [no markers] gnuplot [raw gnuplot] {
plot "Test/rising_edge_cap.dat" using ($1):($2) every 100;
};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
由于您没有提供任何数据(除了外部链接),我只做了一些随机数。情节被移动,以便它从(0,0)
- 我猜这就是您想要的。
\documentclass[tikz, border=1 cm]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.dat}
10 1000
22 2369
33 3837
44 6819
55 7124
66 4849
\end{filecontents*}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot [red, mark=*] gnuplot [raw gnuplot] {plot "\jobname.dat" using 1:2 };
\addplot [green, mark=*] gnuplot [raw gnuplot] {plot "\jobname.dat" using ($0==0?(offsetx=$1)-offsetx:$1-offsetx):($0==0?(offsety=$2)-offsety:$2-offsety) };
\end{axis}
\end{tikzpicture}
\end{document}