加快绘制多列数据的速度

加快绘制多列数据的速度

我正在尝试制作某种意大利面条图并从一个有 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 秒

相关内容