日期图的宽度无法跨越到线宽

日期图的宽度无法跨越到线宽

目的:

将图的宽度设置为\linewidth

当前状态:

width将环境选项设置axis为会\linewidth产生Dimension too large.错误。事实上,在生成的文档中,绘图并未跨越整个线宽。

问题:

我的代码是否有错误或者是否存在缺陷?

梅威瑟:

\documentclass{scrartcl}

\usepackage{pgfplots}
\usepackage{pgfplotstable}

\pgfplotsset{compat=newest}

\usepgfplotslibrary{dateplot} 

\begin{document}

\pgfplotstableread[col sep=comma, row sep=\\]{
   2015-11-11 14:00, 0.2\\
   2015-11-11 14:01, 0.217\\
   2015-11-11 14:02, 0.255\\
   2015-11-11 14:03, 0.288\\
   2015-11-11 14:06, 0.58\\
   2015-11-11 14:07, 0.91\\
   2015-11-11 14:08, 1.02\\
   2015-11-11 14:10, 1.05\\
   2015-11-11 14:12, 0.92\\
   2015-11-11 14:13, 0.78\\
   2015-11-11 14:15, 0.56\\
   2015-11-11 14:17, 1.1\\
}\datatable

\begin{tikzpicture}
   \begin{axis}[
      height={5cm},
      width={\linewidth},
      xmin={2015-11-11 14:00},
      xmax={2015-11-11 14:20},
      ytick={0.25,0.5,0.75,1},
      yticklabels={,,,,,,,,},
      date coordinates in=x,
      axis x line=bottom,
      axis y line=left,
      xticklabel={\hour:\minute\,Uhr},
      xtick={2015-11-11 14:05,2015-11-11 14:10,2015-11-11 14:15},
      enlarge y limits=0.2,
      enlarge x limits=0.1,
      grid,
   ]
      \addplot[smooth,blue,line width=1pt] table  {\datatable};
   \end{axis}
\end{tikzpicture}

\end{document}

答案1

dateplot库需要将日期范围映射到整数(TeX 没有 long...)。为了充分利用可用的、有限的数据范围,它使用date ZERO来校准数字。

如果您设置date ZERO为接近数据范围的任何日期,则绘图就很好。

实际缩放需要scale only axispgfplots支持轴矩形的精确缩放(否则使用轴描述的常数猜测)。此外,您可能希望使用trim axis left,trim axis right作为选项来tikzpicture剪掉左侧或右侧的任何边界框伪影。最后,您应该\noindent在图片之前使用(用于左对齐)并在图片之后删除尾随空格\end{tikzpicture}以避免出现虚假空格(常见的 LaTeX 问题)。

经过所有这些改变,我得出

\documentclass{scrartcl}

\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{lipsum}

\pgfplotsset{compat=newest}

\usepgfplotslibrary{dateplot} 

\begin{document}

\pgfplotstableread[col sep=comma, row sep=\\]{
   2015-11-11 14:00, 0.2\\
   2015-11-11 14:01, 0.217\\
   2015-11-11 14:02, 0.255\\
   2015-11-11 14:03, 0.288\\
   2015-11-11 14:06, 0.58\\
   2015-11-11 14:07, 0.91\\
   2015-11-11 14:08, 1.02\\
   2015-11-11 14:10, 1.05\\
   2015-11-11 14:12, 0.92\\
   2015-11-11 14:13, 0.78\\
   2015-11-11 14:15, 0.56\\
   2015-11-11 14:17, 1.1\\
}\datatable

\noindent
\begin{tikzpicture}[trim axis left,trim axis right]
   \begin{axis}[
      height={5cm},
      width={\linewidth},
      xmin={2015-11-11 14:00},
      xmax={2015-11-11 14:20},
      ytick={0.25,0.5,0.75,1},
      yticklabels={,,,,,,,,},
      date coordinates in=x,
      axis x line=bottom,
      axis y line=left,
      xticklabel={\hour:\minute\,Uhr},
      xtick={2015-11-11 14:05,2015-11-11 14:10,2015-11-11 14:15},
      enlarge y limits=0.2,
      enlarge x limits=0.1,
      grid,
      date ZERO=2015-11-00,
      scale only axis,
   ]
      \addplot[smooth,blue,line width=1pt] table  {\datatable};
   \end{axis}
\end{tikzpicture}%

\lipsum

\end{document}

在此处输入图片描述

相关内容