【发布时间】:2013-07-18 15:07:25
【问题描述】:
我正在 gnuplot 中绘制一个 600px*600px 的图像,我想让 xtics 对应于与像素系统不同的坐标系。实际上,xtics 为 0、100、200、...、500、600。我想让它们位于同一个地方,但具有不同的值。有没有办法让抽动得到统一修改,比如 xtic[i] = (xtic[i]*c1) + c2?
编辑:这是我的代码。另外,我应该澄清一下,我要做的是让 xtics 和 ytics 专门对应于经度和纬度。因此,例如,我想添加一个转换,例如 xtic=0 -> xtic=$minlat 和 xtic=$maxx -> xtic=$maxlat。
#!/bin/sh
inputfilename=$1
outputfilename=$2
minlat=$3
maxlat=$4
minlon=$5
maxlon=$6
imagexsize=$7
imageysize=$8
maxx=$(($imagexsize - 1))
maxy=$(($imageysize - 1))
windowxsize=$(($imagexsize+5+5))
windowysize=$(($imageysize+5+5))
imagename=${inputfilename%.*}
gnuplot <<EOF
set terminal png size $windowxsize,$windowysize
unset key
unset colorbox
set output "$outputfilename"
set lmargin 5
set bmargin 5
set rmargin 5
set tmargin 5
set size square
set xrange [0:${maxx}]
set yrange [0:${maxy}]
set palette grey
set label "$imagename" at screen 0.3,0.95
plot "$inputfilename" binary array=${imagexsize}x${imageysize} format='%ushort' with image
EOF
【问题讨论】:
-
你能展示你正在使用的脚本吗?通常你可以重新缩放你传递给 gnuplot 的 x 值。
-
@mgilson 我添加了源代码并进行了澄清。我不想更改 x 值,因为它是图像。我想将 xtics 更改为对应于经度而不是像素索引。这有意义吗?
-
“我不想更改 x 值,因为它是图像”。我不明白那个说法。似乎您可以通过将
origin、dx和dy关键字组合成二进制来完成您想要的。例如plot "file" binary array=(100,100) origin=(minx,miny) dx=(maxx-minx)/100 ... -
我担心我的问题没有很清楚地表达出来,让我用一个例子来解释一下。所以在这种情况下,minlon=-120.54 和 maxlon=-119.94,而我要绘制的图像的索引是 minx=0 和 maxx=599。现在,默认行为使得 xtics 为 0,100,200,...,600。我希望 xtics 改为 -120.54,-120.34,...,-119.94。事实上,如果我按照你的建议,我会得到一张空白图像,因为它正在寻找索引为 -120 的像素(至少,这就是我认为我得到一张空白图像的原因)。