2012-01-08 93 views
3
较大

我生成映射使用下面的配置文件(XRANGEYRANGE稍后设置)3D绘图如何使地块在GNUPLOT

#!/usr/bin/gnuplot  
reset 
set term postscript eps enhanced 

set size square 
set xlabel "X position" 
set ylabel "Y position" 

#Have a gradient of colors from blue (low) to red (high) 
set pm3d map 
set palette rgbformulae 22,13,-31 

set xrange [0 : XRANGE] 
set yrange [0 : YRANGE] 

set style line 1 lw 1 

unset key 

set dgrid3d 45,45 

set hidden3d 

splot "data.data" u 1:2:3 

产生的图像看起来像这样

GnuPlot Image

注:我已转换为jpg,因此质量较低,并且我在图像周围放置了边框。

大量的空间被浪费在上面和下面。这不是一个问题,直到我嵌入图像变成一个LaTeX文档,此时它看起来像这样(再次,pdf文件转换为jpg图像)

enter image description here

还创建右边的图像与GnuPlot,但它稍大(通过查看我在最前面的两个图像周围绘制的边界显而易见)。这是因为GnuPlot为顶部和底部的白色空间填充3D图。我如何删除这个,而不必手动编辑我拥有的所有50+图?

回答

2

因为我讨厌在gnuplot边缘玩耍,所以我也裁剪了边界框。我意识到,不知何故,eps2eps确实会调整边界框,但它也会将文本(标签等)转换为像素图形?!

我通常使用 “epstool” croping的BB时节省文本作为,我用的命令是:

epstool --copy --bbox in.eps out.eps

+0

Gnuplot有一些最糟糕的文档。可悲的是,有很少的选择。虽然'eps2eps'摆脱了边际,但它并没有解决潜在的问题:由于某种原因,gnuplot绘制的3D图形略小于2D图形。即使你调整了字体,以便在LaTex中拉伸到相同大小时,你也必须处理Latex子图不能分开的事实,所以你现在可以将两个图形放在一起。 – puk 2012-01-09 11:33:19

+0

@puk好吧,随时提出改进文档。 – Christoph 2014-09-24 07:28:04

+0

这工作得很好,而不是最初我将eps转换为pdf然后使用'pdfcrop'命令,但这是更好的。 – sikisis 2015-12-07 09:24:15

4

有两种解决方案,一种是不可靠的,另一种是黑客。

  1. 使用GnuPlot,margin settings可用于指定距适当边距的距离。例如,设置lmargin 0bmargin 0实际上将轴推离页面。可以将相似的值分配给tmarginrmargin以扩展图形。虽然这适用于2D图形,但它不适用于3D图形(我怀疑这与我将图形设置为正方形的事实有关)。

  2. 当图形设置为正方形尺寸时,Gnuplot still calculates for the entire screen。可以直接操作eps文件,通过寻找像%%BoundingBox: 50 50 410 302这样的行并将410更改为更小的内容来更改此文件。或者,这就是我所做的,你可以运行eps2eps in.eps out.eps,它会为你裁剪。只要确保in.eps而不是out.eps相同的文件或它不起作用。

1

使用<scale>参数set view,这将放大情节而不改变文字大小或标题位置。

在你的情况,因为你使用map视图,您需要:

set view 180,0,1.5 

其中180,0相当于map观点和1.5是缩放因子。

+1

作为一个说明:即将到来的5.0版本有一个'scale',这样你就可以使用'set pm3d map;设置视图比例1.2'。 – Christoph 2014-09-24 07:31:06