Gnuplot:使用非均匀网格的大输出文件问题(mollweide投影)

时间:2016-06-06 08:07:19

标签: plot output gnuplot

我使用gnuplot中的cairolatex终端使用Mollweide projection制作一个数字。我可以在AstroJCT中找到代码,结果看起来很漂亮:

enter image description here

但是,eps文件重17 MB,图像的pdf文件重2 MB。如果我想在我的工作中包含几个图表,这是非常大的。问题是(我猜)数据文件有~90000点,并且正在绘制每个点。

前段时间我遇到了类似的问题,使用plot with image使文件外观相同而且要小得多,但事实并非如此,因为我没有统一的网格。数据文件在每一行中都有经度和纬度,我发现的代码将其转换为x和y坐标。

我已尝试使用set table然后使用splot with pm3d,但结果看起来并不像以前那么好(pdf版本看起来更糟,重量接近2 MB因此没有解决任何问题):

enter image description here

我怎样才能获得像第一个一样但更轻的情节?绘制更少量的点不是一种选择,因为那时图中有空白点。 非常感谢。

我的第一个剧情程序的Gnuplot代码示例:

set term cairolatex
set output "depth_ecuatorial.tex"

set border 0
unset xtics
unset ytics
set nokey

mwhigh(x) = 1.0 + -0.919061*(abs(1.0-x))**0.674635
mwmed(x) = mwhigh(x) -0.0807765 + 0.161136*x -0.0796311*x**2
mwlow(x) = mwmed(x) -3.53551e-05 + 0.000645749*x
mwst(x) = x < 0.2 ? mwlow(x) : (x < 0.9 ? mwmed(x) : mwhigh(x) )
mwt(b) = b>0 ? asin(mwst(sin(abs(b)))) : -asin(mwst(sin(abs(b))))
mwx(b,l) = 2.0*sqrt(2.0) * l * cos(mwt(b))
mwy(b,l) = sqrt(2.0) * sin(mwt(b))
lconv(l) = l < pi ? l : l - 2*pi

plot "depth_ecuatorial.txt" using (mwx($2,lconv($1))):(mwy($2,lconv($1))):($3) palette pt 9

数据文件中的一些行:

0.0 -1.57079632679  0.004206772736096981
0.0210139976829 -1.57079632679  0.004206772736096981
0.0420279953657 -1.57079632679  0.004206772736096981
0.0630419930486 -1.57079632679  0.004206772736096981
0.0840559907315 -1.57079632679  0.004206772736096981
0.105069988414  -1.57079632679  0.004206772736096981
0.126083986097  -1.57079632679  0.004206772736096981
0.14709798378   -1.57079632679  0.004206772736096981
0.168111981463  -1.57079632679  0.004206772736096981
0.189125979146  -1.57079632679  0.004206772736096981

1 个答案:

答案 0 :(得分:0)

经过一番挖掘后,我可以找到https://tex.stackexchange.com/a/131106/107530中完全符合我需要的脚本。使用它,pdf plot版本的大小从几MB减少到100 KB。

该脚本可用于任何具有大输出文件的绘图。