pdf-generation - GNUPlot 中的高分辨率散点图?

标签 pdf-generation gnuplot scatter-plot pdflatex tikz

我通常使用tikz-pgfplot 路由通过gnuplot-lua 接口(interface)来为研究论文绘制科学图形。它通常工作得很好,我可以将我的图形无缝集成到 latex 文档中。由此产生的数字具有很高的分辨率和精致度。然而,障碍是大型数据集的高分辨率散点图 - 调整 100,000 点。

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

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

马杜尔

最佳答案

任何 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 作为绘图的文本部分。

关于pdf-generation - GNUPlot 中的高分辨率散点图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803589/

相关文章:

r - 通过一个函数绘制多个个体?

c# - ITextSharp PdfCopy 使用实例

objective-c - 如何使用保存的 .png 文件在创建 PDF 文件时插入分页符?

java - 使用java创建、编辑和删除pdf文件

PHP WkHtmlToPdf 无法添加多个页面

gnuplot - 在 Gnuplot 4.0 中选择线型和颜色

python - 将散点图中的标记正确调整为 Matplotlib 中的半径 R

linux - Gnuplot : 2 questions about my histograms X axis and add percentage

gnuplot:绘制并拟合具有两个变量的二维函数

javascript - 需要通过鼠标拖动选择google散点图中点的范围