pgfplots,dateplot:如何在给定日期获取 xtick?

pgfplots,dateplot:如何在给定日期获取 xtick?

以下 mwe:

\documentclass[margin=3mm]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\pgfplotsset{compat=1.15}

\usepackage{filecontents}
\begin{filecontents*}{data.csv}
datum,       s,      zt,      st,      u
2017-09-26,  9.2,    144,     80,      62
2017-09-29,  8.8,    141,     76,      64
2017-10-03,  8.4,    137,     77,      67
2017-10-06,  7.8,    136,     82,      53
2017-10-10,  9.1,    135,     80,      60
2017-10-13,  8.1,    139,     75,      61
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
\centering
\begin{axis}[
    date coordinates in=x,
    xticklabel={\month-\day},
    x tick label style={rotate=45,anchor=north east},
    date ZERO=2017-09-26,
    grid=major, grid style=dashed,
    xlabel={Datum (mesec-dan)},
    ylabel={s},
]
\addplot table [x=datum, y=s, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

给出:

在此处输入图片描述

  • 我喜欢xtick与标记对齐,并且如果可能的话,无论日期是否等距分布(它们是周期性的,包含在每个星期二和星期五进行的测量)并且情节线(因此)不会中断。
  • 是否可以在用这些名称xtick进行扩展的方式将日期名称(星期二、星期五)添加到标签中?data.cvs

答案1

xtick=data也适用于日期图,因此只需将其添加到axis选项中即可在每个数据点处打勾。

要使数据点等距,您不能使用 dateplot 工具,而是设置x expr=\coordindex,然后使用xtick=data, xticklabels from table以获取您想要的任何刻度标签。这里我使用了日期列,您可以修改它以包括星期几。

代码输出

\documentclass[margin=3mm]{standalone}
\usepackage{pgfplotstable}
\usepgfplotslibrary{dateplot}
\pgfplotsset{compat=1.15}

\usepackage{filecontents}
\begin{filecontents*}{data.csv}
datum,       s,      zt,      st,      u
2017-09-26,  9.2,    144,     80,      62
2017-09-29,  8.8,    141,     76,      64
2017-10-03,  8.4,    137,     77,      67
2017-10-06,  7.8,    136,     82,      53
2017-10-10,  9.1,    135,     80,      60
2017-10-13,  8.1,    139,     75,      61
\end{filecontents*}

% xticklabels from table can't read comma separated file, I think, so read to macro
\pgfplotstableread[col sep=comma]{data.csv}\Data
\begin{document}
\begin{tikzpicture}
\centering
\begin{axis}[
    xtick=data,
    date coordinates in=x,
    xticklabel={\month-\day},
    x tick label style={rotate=45,anchor=north east},
    date ZERO=2017-09-26,
    grid=major, grid style=dashed,
    xlabel={Datum (mesec-dan)},
    ylabel={s},
]
\addplot table [x=datum, y=s, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
\centering
\begin{axis}[
    xtick=data,
    xticklabels from table={\Data}{datum},
    x tick label style={rotate=45,anchor=north east},
    grid=major, grid style=dashed,
    xlabel={Datum (mesec-dan)},
    ylabel={s},
]
\addplot table [x expr=\coordindex, y=s] {\Data};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容