我使用 matlab2tikz 和 pgfplots 将绘图从 MATLAB 导出到 TeX。我的大多数绘图都包含“序列日期数字”,即自 0000 年 1 月 0 日以来的天数。正如您所猜测的,这些数字相当高,而数据点之间的差异相对较小。
以下示例引发了“尺寸太大”错误。但是,我已经可以编译一些类似的图形,例如这一。
我的 MWE 如下:
\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{figure}
\centering
\input{example.tikz}
\end{figure}
\end{document}
删除后的内容example.tikz
如下:
% This file was created by matlab2tikz v0.4.7 running on MATLAB 8.3.
% Copyright (c) 2008--2014, Nico Schlömer <[email protected]>
% All rights reserved.
% Minimal pgfplots version: 1.3
%
% The latest updates can be retrieved from
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz
% where you can also make suggestions and rate matlab2tikz.
%
\begin{tikzpicture}
\begin{axis}[%
width=15cm,
height=10cm,
scale only axis,
xmin=735784.472,
xmax=735784.6382,
xtick={735784.5,735784.5625,735784.625},
xticklabels={{04.06. 12:00:00},{04.06. 13:30:00},{04.06 15:00:00}},
ymin=-0.15,
ymax=3.5
]
\addplot [color=red,only marks,mark=x,mark options={solid},forget plot]
table[row sep=crcr]{%
735784.472210648 0\\
735784.563194444 3.09\\
735784.6125 0.54\\
735784.638194444 0\\
};
\addplot [color=blue,solid,forget plot]
table[row sep=crcr]{%
735784.474305556 0\\
735784.522222222 2.92188333278572\\
735784.578472222 3.08013114814648\\
735784.635416667 0\\
};
\end{axis}
\end{tikzpicture}%
我已经尝试过,restrict x to domain
但没有成功。
答案1
原因是由于数字很大但差异很小,在某些时候内部计算超出了TeX 中的尺寸限制。一个可能的解决方案是将坐标转换为较小的域。这可以通过添加来实现
\pgfplotsset{x coord trafo/.code={\pgfmathparse{#1-735784.4}\pgfmathresult}}
其中最后一个数字必须根据您的情况进行调整。不知何故,这仍然只有在删除 x 限制和刻度后才有效,结果是example.tikz
:
% This file was created by matlab2tikz v0.4.7 running on MATLAB 8.3.
% Copyright (c) 2008--2014, Nico Schlömer <[email protected]>
% All rights reserved.
% Minimal pgfplots version: 1.3
%
% The latest updates can be retrieved from
% http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz
% where you can also make suggestions and rate matlab2tikz.
%
\begin{tikzpicture}
\pgfplotsset{
x coord trafo/.code={\pgfmathparse{#1-735784.4}\pgfmathresult}}
\begin{axis}[%
width=15cm,
height=10cm,
scale only axis,
ymin=-0.15,
ymax=3.5
]
\addplot [color=red,only marks,mark=x,mark options={solid},forget plot]
table[row sep=crcr]{%
735784.472210648 0\\
735784.563194444 3.09\\
735784.6125 0.54\\
735784.638194444 0\\
};
\addplot [color=blue,solid,forget plot]
table[row sep=crcr]{%
735784.474305556 0\\
735784.522222222 2.92188333278572\\
735784.578472222 3.08013114814648\\
735784.635416667 0\\
};
\end{axis}
\end{tikzpicture}%
不过,如果能改变限制和刻度就更好了。如果你知道怎么做,请随意添加!