我有一堆数据,其中 x 轴以秒为单位。我想绘制这些数据的片段,这意味着起点将是一个相当高的数字:
代码片段 test.csv 示例:
X Y
28600.13103 11
28602.81423 17
28605.80943 23
28606.85463 25
28607.89983 27
28608.75783 49
28609.77183 51
28610.80143 33
28612.09623 10
28614.73263 41
28617.08823 45
28618.38303 48
28619.84943 50
因此,如果这是具有以下 MWE 的 plottet:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{height=6cm,width=10cm,compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
scaled y ticks=false,
enlarge x limits=false]
\addplot +[mark=none] table[col sep=tab,x expr=\thisrowno{0},y={Y}] {test.csv};
\end{axis}
\end{tikzpicture}
\end{document}
x 轴分辨率变得很差:
而我没有空间容纳非缩短的值。
那么,有没有办法只绘制秒数的差异,然后在两端各有一个节点来告诉您当前处于哪个小时?
答案1
这够自动化了吗?我不知道你到底想要什么样的输出。
\documentclass[border=4mm]{standalone}
\usepackage{pgfplots,pgfplotstable,filecontents}
\pgfplotsset{height=6cm,width=10cm,compat=newest}
\begin{filecontents*}{data.dat}
X Y
28600.13103 11
28602.81423 17
28605.80943 23
28606.85463 25
28607.89983 27
28608.75783 49
28609.77183 51
28610.80143 33
28612.09623 10
28614.73263 41
28617.08823 45
28618.38303 48
28619.84943 50
\end{filecontents*}
\pgfplotstableread{data.dat}\mydata
\pgfplotstablegetelem{0}{X}\of{\mydata}
\pgfmathsetmacro{\startsec}{\pgfplotsretval}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
clip mode=individual,
scaled y ticks=false,
enlarge x limits=false]
\addplot +[mark=none] table[x expr={\thisrowno{0}-\startsec},y=Y] {\mydata};
\node [below=0.6cm,anchor=east] at (rel axis cs:1,0) {$+\startsec\,\mathrm{s}$};
\end{axis}
\end{tikzpicture}
\end{document}