pgfplot 在 x 轴上绘制差异

pgfplot 在 x 轴上绘制差异

我有一堆数据,其中 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}

相关内容