以下 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}