GNUPlot中的高分辨率散点图?

Mad*_*jya 1 pdf-generation gnuplot scatter-plot pdflatex tikz

我通常tikz-pgfplot通过gnuplot-lua界面来绘制研究论文的科学数据.它通常非常好,我可以将我的数字无缝地整合到latex文档中.由此产生的数字是非常高的分辨率和精细的.然而,绊脚石是大数据集的高分辨率散点图 - 调整100,000点.

如果我按照我的惯常tikz-pgfplot路线latex生成文件,但在编译时pdflatex,会得到tex memory exceeded...错误.我也知道增加tex记忆并不是一个好主意.所以,我最终生成了一个eps(封装的postscript)图,然后我将其包含在我的latex文档中tikz-pgfplot以呈现注释.它通常可以工作,但会产生一个非常大的PDF文件,2 MB以便为一个小图而且PDF读者需要很长时间才能完全显示图形.

我想知道,是否还有其他方法可以生成大型数据集的高分辨率散点图?任何指针都将受到高度赞赏.

Madhur

Eth*_*han 5

任何10 ^ 5点的矢量格式表示必然会很大,因为每个点都是分开描述的,即使它位于许多其他点的顶部或下面.通用的解决方案是为绘图使用位图格式,因为无论位于其上的多少点,绘图中的每个像素都可以设置或不设置.输出表示的大小是第一近似值,不依赖于点的数量.

坚持使用gnuplot,我可能会使用set terminal cairolatex png standalone生成初始绘图描述,然后使用pdflatex生成最终的pdf,其中嵌入了位图.例如:

# create a bitmapped version
set term cairolatex png standalone size 10cm, 7cm
set output 'cairolatex+png.tex'
set xrange [0:1]
set sample 100000
plot '+' using (rand(0)):(rand(0)) with dots
unset output
system("pdflatex cairolatex+png")

# create a vector version
set term tikz standalone size 10cm, 7cm
set output 'tikz.tex'
set sample 10000
replot
unset output
system("pdflatex tikz")
Run Code Online (Sandbox Code Playgroud)

第一个绘图立即完成并生成一个较小的文件.第二个图需要几分钟,并产生一个更大的文件,尽管只包含1/10的点数.

[236] ls -s1 *.pdf
416 cairolatex+png.pdf
844 tikz.pdf
Run Code Online (Sandbox Code Playgroud)

尽管默认字体可能不相同,但两者都使用乳胶作为绘图的文本部分.