我有一些数据作为时间函数。我使用包dateplot
中的数据绘制它pgfplots
。我希望有 x 个以小时和分钟为单位的标签。对于每一天,我希望有一个额外的DD.MM.YYYY
标签。这个条目每天只应出现一次,这样刻度标签就不会太杂乱。(请参阅下面的 MWE 带图片)
问题 1:有没有办法每三个小时自动获取一个 x 刻度标签?现在,我必须提供包含所有 x 刻度标签的完整列表。
问题 2:我能以某种方式自动添加日期标签吗?
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{dateplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[compat=1.5.1,
date coordinates in=x,
xticklabel={\hour:\minute},
xticklabel style= {rotate=45,anchor=north east},
xtick={
{2010-06-22 9:00},
{2010-06-22 12:00},
{2010-06-22 15:00},
{2010-06-22 18:00},
{2010-06-22 21:00},
{2010-06-23 00:00},
{2010-06-23 03:00},
{2010-06-23 06:00},
{2010-06-23 09:00}
},
date ZERO=2010-06-22,
xlabel=Date and time,
xlabel shift=20pt,
ylabel=Random stuff,
xmin={2010-06-22 9:00},
xmax ={2010-06-23 07:25},
minor x tick num = 2,
clip=false
]
\addplot coordinates {
(2010-06-22 09:06:03,0.1)
(2010-06-22 16:14:07,0.8)
(2010-06-23 07:00:25,1)
};
\node[anchor=north] at (xticklabel cs:0.1) {22.06.2010};
\node[anchor=north] at (xticklabel cs:0.75) {22.06.2010};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
这主要是针对问题2的回答:如何自动放置日期标签:
您可以使用它extra x ticks
来简化这些标签的生成:它允许您将所需的位置与它们的外观分开。
您可以通过添加以下行来实现
xlabel shift=10pt,
extra x ticks={2010-06-22 9:00,2010-06-23},
extra x tick style={
xticklabel=\day.\month.\year,
every x tick label/.style={anchor=north west,yshift=-35pt},
},
关于您的第一个问题(我如何每 3 小时生成一次刻度位置):目前没有办法按照要求的方式调整刻度标签生成(1,2,...,5
据我所知,pgfplots 的标准使用方式不适用于日期 - 至少不适用于日期时间)。