编译读取 csv 文件的简单 pgfplots 时内存不足

编译读取 csv 文件的简单 pgfplots 时内存不足

我有一个 csv 文件,其中存储了 320x160 图像的像素值。我尝试使用 tikz 在 pdf 中创建图形,但编译失败,出现超出内存错误。我不想尝试增加内存,因为我只做过一次,而且我认为我无法再进一步增加内存。相反,我想了解这段占用如此多内存的代码存在什么问题:

\documentclass[margin=5mm]{standalone}

\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=1.18}
\newcommand\n{320}
\newcommand\m{160}

\begin{document}
    
    \begin{tikzpicture}
        
        \pgfplotstableread[col sep=comma]{design.csv}\data
        
        \foreach \x[count=\xi from 0] in {1,...,\n}{
            \foreach \y[count=\yi from 0] in {1,...,\m}{
                \begin{scope}[shift={(\x,-\y)}]
                    \pgfplotstablegetelem{\yi}{\xi}\of{\data}
                    \pgfmathsetmacro{\scaled}{\pgfplotsretval*100}
                    \draw[draw=none,fill=black!\scaled] (0,0) rectangle (1,1);
                \end{scope}
            }
        }
        
    \end{tikzpicture}
\end{document}

csv 文件可以是找到这里

更新

我修改了代码并删除了范围,但仍然不起作用。这是新代码:

\documentclass[margin=5mm]{standalone}

\usepackage{pgfplots, pgfplotstable}
%\pgfplotsset{compat=1.18}

\newcommand\n{160}
\newcommand\m{80}

\begin{document}
    
\begin{tikzpicture}
    
  \pgfplotstableread[col sep=comma]{design_cnn_mbb_4.csv}\CNNbending
  
  \foreach \x[count=\xi from 0] in {1,...,\n}{
    \foreach \y[count=\yi from 0] in {1,...,\m}{    
        \pgfplotstablegetelem{\yi}{\xi}\of{\CNNbending}
        \pgfmathsetmacro{\scaled}{\pgfplotsretval*100}
        \draw[draw=none,fill=black!\scaled] (\x,\y) rectangle (\x+1,\y+1);
    }
  }
    
\end{tikzpicture}
\end{document}

更新2

我尝试使用另一种方法,这次使用内置的 pgfplots 功能,addplot同时读取 csv 格式的表格:

\documentclass[tikz]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    axis line style={draw=none},
    axis equal image,
    ticks=none,
    colormap/blackwhite,
    colormap={reverse blackwhite}{
        indices of colormap={
            \pgfplotscolormaplastindexof{blackwhite},...,0 of blackwhite}
    },
  point meta min=0,
  point meta max=1,
]
% Assuming you still want to use the same data file
\addplot+ [only marks, scatter, mark=square*, mark size=1.1, mark options={solid}, point meta={\thisrow{value}}, line width=0pt] table [x index=0,y index=1, z index=3, col sep=comma] {./design_xyz.csv};
\end{axis}
\end{tikzpicture}
\end{document}

这仍然不起作用,因为我得到了相同的内存不足错误。我使用的文件可以是找到这里

相关内容