![散点图超出内存容量](https://linux22.com/image/332567/%E6%95%A3%E7%82%B9%E5%9B%BE%E8%B6%85%E5%87%BA%E5%86%85%E5%AD%98%E5%AE%B9%E9%87%8F.png)
我正在尝试叠加散点图和条形图。当我尝试执行代码时,我得到“TeX 容量超出,抱歉 [主内存大小=3000000]”。\pgfplotsapplistXXpushback@smallbufoverfl ...toka
csv 文件在这里:文件1文件2 latex 能处理这些数据吗?Excel 可以,为什么 latex 不能?谢谢你的帮助。
\documentclass[tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots,tikz}
\usepackage{fixltx2e}
\usepackage{siunitx}
\usepackage{xcolor}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=newest,width=\textwidth,xlabel={fractions},ylabel={Phospho hits},cycle list name=color list,legend columns=2}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table [ybar,col sep=comma, x=fractions, y=Phospho] {SCX1.csv};
\addplot table [col sep=comma, x=min, y=mv] {SCX01-HPLC.csv};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
因为超出了内存。在第一个 csv 中,您有 39768 行,这可不少!有两种方法:
- 使用 lualatex 编译你的文档(在我的电脑上需要 8 秒)
- 使用这从旧 csv 中获得“仅”有 3060 个点的抽取 csv,并使用 pdflatex 进行编译(大约需要 2 秒):
你能看出有什么不同吗?我看不出来!
为了减少数据的采样,我使用了 Matlab,但我相信还有其他方法。假设您的 csv 表的名称是,data.csv
您可以将其复制并粘贴到 Matlab 上以打开数据导入向导,并将工作区中的内容放在我调用的矩阵变量中mydata
(第一行包含 -vector x
,第二列包含 -vector y
)。为了减少点数,您可以(Matlab 代码):
min=decimate(mydata(:,1),13);
mv=decimate(mydata(:,2),13);
要将输出转换为 csv 文件:
writetable(table(min,mv),'decimatedDATA.csv');
瞧!您有一组新的点,其数量减少了 13 倍,pdflatex 也可以处理。
个人说明:如果你只需要绘制此图,只需使用 lualatex,但请记住包含 pdf 而不是 tex 源。如果你有许多图(可能在同一个图中),即使 lualatex可能能够处理内存,编写报告需要很长时间,因此我会选择第二种选择。