【问题标题】:High resolution scatterplot in GNUPlot?GNUPlot 中的高分辨率散点图?
【发布时间】:2018-10-14 14:20:11
【问题描述】:

我通常通过gnuplot-lua接口走tikz-pgfplot的路线,为研究论文绘制科学数字。它通常效果很好,我可以将我的数字无缝集成到latex 文档中。由此产生的数字非常高分辨率和精致。然而,绊脚石是大型数据集的高分辨率散点图 - 调整 100,000 点。

如果我遵循我通常的tikz-pgfplot 路线,则会生成latex 文件,但是在通过pdflatex 编译时,会出现tex memory exceeded... 错误。我也开始知道增加tex的内存不是一个好主意。因此,我最终生成了一个 eps(封装后记)图形,然后通过 tikz-pgfplot 将其包含在我的 latex 文档中以呈现注释。它通常可以工作,但会生成一个非常大的 PDF 文件,而 2 MB 对于一个小图形和 PDF 阅读器需要很长时间才能完全显示图形。

我想知道,是否还有其他方法可以生成大型数据集的高分辨率散点图?任何指针将不胜感激。

马杜尔

【问题讨论】:

    标签: pdf-generation gnuplot scatter-plot pdflatex tikz


    【解决方案1】:

    任何 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")
    

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

    [236] ls -s1 *.pdf
    416 cairolatex+png.pdf
    844 tikz.pdf
    

    虽然默认字体可能不同,但两者都使用乳胶作为绘图的文本部分。

    【讨论】:

    • 感谢您的回答。但是,出于某种原因,我没有gnuplotcairolatex 终端的png 选项。所以,我使用了cairopng 终端,它产生了相同的图形,现在我最终的pdf 图形大小约为18 KB,而不是之前的1.8 MB!谢谢!
    猜你喜欢
    • 2011-11-19
    • 2011-04-07
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2013-08-25
    相关资源
    最近更新 更多