Gnuplot:使用不均匀网格(mollweide 投影)的大输出文件问题
Gnuplot: Big output file issue using a non-uniform grid (mollweide projection)
我在 gnuplot 中使用 cairolatex 终端用 Mollweide projection. I could find the code in AstroJCT 制作图形,结果看起来很漂亮:
但是,eps 文件重 17 MB,图片的 pdf 文件重 2 MB。如果我想在我的作品中包含多个情节,这就相当大了。问题是(我猜)数据文件有 ~ 90000 个点,每个点都被绘制出来。
前段时间我遇到了类似的问题,使用 plot with image
使文件看起来一样而且小得多,但情况并非如此,因为我没有统一的网格。数据文件的每一行都有经度和纬度,我找到的代码将其转换为 x 和 y 坐标。
我尝试过使用 set table
然后使用 splot with pm3d
但结果看起来不如以前那么好(pdf 版本看起来更糟,重量将近 2 MB,因此什么都解决不了):
我怎样才能得到像第一个一样但更轻的情节?绘制更少数量的点不是一种选择,因为那时绘图内有空白点。
非常感谢。
我的第一个绘图程序的 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(,lconv())):(mwy(,lconv())):() 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
经过一些挖掘,我可以从 https://tex.stackexchange.com/a/131106/107530 中找到完全符合我需要的脚本。使用它,pdf 绘图版本的大小从几 MB 下降到 100 KB。
该脚本可用于任何具有大输出文件的绘图。
我在 gnuplot 中使用 cairolatex 终端用 Mollweide projection. I could find the code in AstroJCT 制作图形,结果看起来很漂亮:
但是,eps 文件重 17 MB,图片的 pdf 文件重 2 MB。如果我想在我的作品中包含多个情节,这就相当大了。问题是(我猜)数据文件有 ~ 90000 个点,每个点都被绘制出来。
前段时间我遇到了类似的问题,使用 plot with image
使文件看起来一样而且小得多,但情况并非如此,因为我没有统一的网格。数据文件的每一行都有经度和纬度,我找到的代码将其转换为 x 和 y 坐标。
我尝试过使用 set table
然后使用 splot with pm3d
但结果看起来不如以前那么好(pdf 版本看起来更糟,重量将近 2 MB,因此什么都解决不了):
我怎样才能得到像第一个一样但更轻的情节?绘制更少数量的点不是一种选择,因为那时绘图内有空白点。 非常感谢。
我的第一个绘图程序的 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(,lconv())):(mwy(,lconv())):() 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
经过一些挖掘,我可以从 https://tex.stackexchange.com/a/131106/107530 中找到完全符合我需要的脚本。使用它,pdf 绘图版本的大小从几 MB 下降到 100 KB。
该脚本可用于任何具有大输出文件的绘图。