设置单位向量比率会导致“尺寸太大”错误

设置单位向量比率会导致“尺寸太大”错误

我在 MATLAB 中生成了一个 Delaunay 三角剖分曲面,我更愿意在 tikz 中渲染它。我使用 Nico Schlömer 的matlab2tikz脚本来生成独立的 tex 文件。

MATLAB 结果如下所示:

matlab 输出

但是,当我编译 matlab2tikz 生成的独立 .tex 文件时,它看起来像这样:

matlab2tikz

在 MATLAB 图像中,数据纵横比用 MATLAB 的命令设置daspect,如下所示:

daspect([1000 1000 1])

我曾尝试使用 pgfplots 完成相同的操作unit vector ratio。但是,无论我如何设置它都没有区别。在每种情况下,我都会收到此错误:

! Dimension too large.
<to be read again> 
\relax 
l.7398 \end{axis}

这些 pgfplots 设置中的任何一个都会导致错误:

unit vector ratio 1 1 1
unit vector ratio 1 1
unit vector ratio 1000 1000 1
unit vector ratio 1 1 0.001

或以上任何带有 * 的

而且,为了进行实验(我不想要 1 1 1 的比例,它只会给我一个平坦的表面):

axis equal
axis equal image

plot box ratio方法从这里也不起作用-同样的错误。

我认为它一定可以工作。除此之外,tikz 渲染看起来非常好。数据集大约有 7000 行,所以我无法在此处发布,而且无论如何它无需单位向量变换即可工作,因此我认为数据不是问题所在。

这是轴的代码(省略了大色彩图!):

\begin{axis}[%
%width=6.82222222222222in,
%height=3.40720720720721in,
area legend,
unit vector ratio = 1 1,
view={-37.5}{30},
scale only axis,
xmin=545550,
xmax=584400,
xlabel={Ost [m]},
xmajorgrids,
ymin=5542050,
ymax=5569500,
ylabel={Nord [m]},
ymajorgrids,
zmin=8.46471544296322,
zmax=16.9194594285807,
zlabel={$\text{U [ms}^{\text{-1}}\text{]}$},
zmajorgrids,
axis x line*=bottom,
axis y line*=left,
axis z line*=left

完整来源可能是在这里获得。

答案1

x您可以通过自己明确提供和y单位向量来解决该问题z

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}

\begin{axis}[%
area legend,
xlabel={Ost [m]},
xmajorgrids,
ylabel={Nord [m]},
x={(0.0001cm,0.00005cm)}, y={(-0.0001cm,0.00005cm)}, z={(0cm,0.2cm)},
ymajorgrids,
zmin=8.46471544296322,
zmax=16.9194594285807,
zlabel={$\text{U [ms}^{\text{-1}}\text{]}$},
zmajorgrids,
axis lines*=left,
colormap/violet
]

\addplot3[patch,forget plot]  table[point meta=\thisrow{c}]{data.dat};

\end{axis}

\end{tikzpicture}

\end{document}

答案2

我找到了一个更令人满意的解决方案,它plot box ratio最终利用了。事实证明,您不能使用 中的值来daspect设置容积率:它们太大了。

那么哪些价值观你用?

MATLAB 中的当前轴对象给出了答案。使用要导出的当前图形(通过调用figure(<figurehandle>)或单击图形),获取轴句柄。该属性PlotBoxAspectRatio在功能上等同于plot box ratio。在调用之前,您需要此值matlab2tikz。以下是 MATLAB 代码:

a1 = gca;
plotBoxAspect = get(a1,'PlotBoxAspectRatio');
plotBoxStr = sprintf('plot box ratio = %d %d %d',plotBoxAspect(1),plotBoxAspect(2),plotBoxAspect(3));
matlab2tikz('outputfile.tex','standalone',true,'extraAxisOptions',plotBoxStr);

结果与您可以合理预期的原始 MATLAB 曲面图非常接近:

pgfplots 已更正

使用这种方法,不需要手动设置单位向量。

相关内容