我遇到了一个类似的问题,超过 10^6 点的散点图导致 PDF 文件大于 100 MB。这些点以非常低的不透明度 (1%) 绘制,因此根本只有许多分层点可见,从而产生更平滑的密度分布而不是散点图。因此,我非常不愿意听从 Raphael Roth 的建议并精简数据。
pngcairo
相反,我发现创建一个单独的 Gnuplot 脚本以使用终端将数据绘制为具有足够分辨率的 PNG 位图图像很有用。该图没有轴,没有抽动,没有边框,也没有边距——只有在适当坐标中绘制的数据:
set terminal pngcairo transparent size 400,400
set output 'foo.png'
set margins 0,0,0,0
set border 0
unset xtics
unset ytics
# set xrange, yrange appropriately
plot ... with points notitle
然后,在实际绘图中(我使用了cairolatex
终端),我绘制了这个 PNG 图像:
set terminal cairolatex pdf
# regular setup, using the same xrange and yrange
plot 'foo.png' binary filetype=png with rgbalpha axes x2y2
请注意,我使用另一组(无刻度)轴进行绘图,以确保图像填充图形区域而没有任何边框,因此 x1y1 轴上的 tic 与散点图中点的实际位置相匹配。
PNG 最终只有几十 KB,而 PDF 则只有几 MB。我认为rgbalpha
情节风格(类似于with image
)不是最有效的,但这对我来说已经足够了。
希望有人会发现这很有用。