代码之家  ›  专栏  ›  技术社区  ›  Madhurjya

GNUPlot中的高分辨率散点图?

  •  1
  • Madhurjya  · 技术社区  · 6 年前

    tikz-pgfplot 路由通过 gnuplot-lua 为研究论文绘制科学图形的界面。它通常工作得很好,我可以无缝地整合我的数字 latex 100,000 点数。

    如果我像往常一样 tikz pgfplot公司 路线,路线 乳胶 文件是在编译时生成的 pdflatex ,一个得到 tex memory exceeded... tex 他的记忆力不是个好主意。所以,我最终制作了一个 eps (封装的后记)数字,然后我把它包括在我的 文档通过 tikz pgfplot公司 渲染批注。它通常起作用,但结果很大 PDF 文件 2 MB 对于一个小人物和 读取器需要很长时间才能完全显示图形。

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

    1 回复  |  直到 6 年前
        1
  •  6
  •   Ethan    6 年前

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

    尽管默认字体可能不同,但这两种字体都使用latex作为绘图的文本部分。