我有相当大的数据集,其中包含结构密集的数据,如果不丢失结构,我无法对其进行大量下采样。我在 Ubuntu 14.04LTS 上使用 TexMaker。我使用
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{compat=1.9}
\usepgfplotslibrary{external}
\tikzexternalize
和
\tikzsetnextfilename{figs/test1}
将图形外部化。使用 进行编译效果很好pdflatex -shell-escape
。但随着数据变得太大,我的内存不足了。我尝试使用LuaLaTeX -shell-escape
而不是 pdfLatex 进行编译,但收到以下错误消息:
! Package tikz Error: Sorry, the system call 'pdflatex -halt-on-error -interact
ion=batchmode -jobname "figs/test1" "\def\tikzexternalrealjob{article}\input{ar
ticle}"' did NOT result in a usable output file 'figs/test1' (expected one of .
pdf:.jpg:.jpeg:.png:). Please verify that you have enabled system calls. For pd
flatex, this is 'pdflatex -shell-escape'. Sometimes it is also named 'write 18'
or something like that. Or maybe the command simply failed?
因此pgfPlots
似乎pdfLatex
在没有适当-shell-escape
标志的情况下调用,也没有我指定它。我怎样才能让它在编译中LuaLatex
?或者我可以只编译中的数字,LuaLatex
其余的在编译中pdfLatex
(与现在发生的情况相反)?我发现这和这例如,但都没有帮助我......
谢谢您的帮助,我也感谢任何可以帮助我解决在 pgfplots 中绘制更大数据集的问题的一般建议。
干杯/J
答案1
因此,我借助 pgfplots 手册第 470-2 页的帮助解决了这个问题,并且这另一个问题。我在序言中提到了这一点:
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{compat=1.9}
%\usetikzlibrary{external}
\usepgfplotslibrary{external}
\tikzexternalize
\tikzset{external/system call={lualatex -shell-escape -halt-on-error -interact
ion=batchmode -jobname "\image" "\texsource"}}
\usepackage{luaotfload}
\usepackage[EU2]{fontenc}
\usepackage{lmodern}
我lualatex -shell-escape article.tex
从命令行编译或-shell-escape
在 lualatex 编译选项中添加texMaker
,使其变为lualatex -shell-escape -interaction=nonstopmode %.tex
。调整图像的位大小以平衡编译时间的另一个有用方法是在 pgfplots 中使用 gnuplot 并使用语句every
减少数据的采样,即使只编译一次。像这样:
\addplot gnuplot
[raw gnuplot, mark=none, color=red]
{plot '../0/cf/cf3p-bw/cross.dat' every 10};
这是另一个问题中提出的建议,我现在找不到。在我的情况下,使用every 100
使文档即使在经过调整的序言中也可以在 pdflatex 中编译,但对图的扭曲太大。使用 pdflatex (使用every 1
) 编译文档对我来说不起作用,因为尽管有声明,但来自 tikz 的系统调用被定向到 pdfplots 而不是 lualatex \tikzset
。