我正在尝试制作某种意大利面条图并从一个有 851 列的表中提取所有列(一列用于 z 坐标,其余用于高度函数的数量),以获得类似于这个 Python 驱动的图:
为此,我的代码大致如下所示。然而,非常慢。我的数据也有很多nan。
我如何才能加快使用 pgfplots 编译此类图的速度?我正在使用带有 lua 后端的 pgfplots 1.12。据我了解,plot gnuplot
它仅用于进行外部计算,因此在这种情况下没有帮助。
\documentclass[tikz]{standalone}
\input{plot_defs}
\begin{document}
\tikzpicturedependsonfile{plot_defs.tex}
\begin{tikzpicture}
\begin{axis}[spv,
name=pcprim]
\foreach \x in {1,2,...,850} {
\addplot table[y index=0, x index=\x]
{plotdata/sPV_comparison_z_prim.dat};
}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
我找到了该怎么做。在发布的代码中,表正在从磁盘读取在 for 循环的每次迭代中。要读取表格一次,请使用\pgfplotstableread
:
\documentclass[tikz]{standalone}
\input{plot_defs}
\begin{document}
\tikzpicturedependsonfile{plot_defs.tex}
\pgfplotstableread{plotdata/sPV_comparison_z_prim.dat}\tableprim
\begin{tikzpicture}
\begin{axis}[spv,
name=pcprim]
\foreach \x in {1,2,...,850} {
\addplot table[y index=0, x index=\x]
{\tableprim};
}
\end{axis}
\end{tikzpicture}
\end{document}
这戏剧性地加快编译速度。
之前的编译时间:23 分 25 秒
编译时间:1 分 21 秒