我遇到了xrange问题。当我把'set autoscale xfix'图像放好但信息轴没有。当我把xrange [-1:1]我得到信息,但图像是损坏。第二个问题是翻转图像。在我的数据存储在文件的左上角是-1,在图像上是+1,为什么?
我的数据是:
-0.999770 -0.998743 0.946455 0.999678 0.999777
-0.699447 -0.999784 -0.999565 -0.076214 0.999467
0.999921 -0.717181 -0.999790 -0.999734 -0.959481
0.999943 0.999920 -0.733798 -0.999793 -0.999786
0.999943 0.999943 0.999920 -0.749453 -0.999794
我的代码是:
set terminal png transparent enhanced font "arial,10" fontscale 1.0 size 600, 400
set output 'out.png'
set xtics 0.25
set ytics 0.25
set xrange [-1:1]
set yrange [-1:1]
set cbrange [-1:1]
plot 'data.txt' matrix with image
我的图像是-1到1步0.5 如果我添加set xrange [-1:1]并设置yrange [-1:1]我得到
$ gnuplot -V
gnuplot 5.0 patchlevel 3
答案 0 :(得分:2)
问题在于您的数据文件被解释为统一matrix
。在这种情况下:
gnuplot> help matrix
Gnuplot can interpret matrix data input in two different ways.
The first of these assumes a uniform grid of x and y coordinates and assigns
each value in the input matrix to one element M[i,j] of this uniform grid.
The assigned x coordinates are the integers [0:NCOLS-1].
The assigned y coordinates are the integers [0:NROWS-1].
因此,这意味着文件第一行中的数据点将具有y
- 坐标设置为0,第二行1等。但是,因为y
- 轴默认指向上方,因此翻转所得到的图像。此外,这些点定义了图中基本颜色方块/框的中心。这就是"有效x / y范围"在您的情况下是[-0.5:4.5]
。
To" fix" y
- 轴,您可以使用
set yr [] reverse
此处,[]
指定轴仍处于自动调整状态。
最后,要将图像从[0,4]重新缩放到[-1,1]范围,您可以使用:
fn(x) = x/2. - 1
plot 'data.txt' matrix u (fn($1)):(fn($2)):3 w image
所以总的来说:
set terminal png transparent enhanced font "arial,10" fontscale 1.0 size 600, 400
set output 'out.png'
set xtics 0.25
set ytics 0.25
set xrange [-1:1]
set yrange [-1:1] reverse
set cbrange [-1:1]
fn(x)=x/2-1
plot 'data.txt' matrix u (fn($1)):(fn($2)):3 w image
修改强>:
还可以调整上面的脚本来处理先验未知大小的矩阵:
set terminal png transparent enhanced font "arial,10" fontscale 1.0 size 600, 400
set output 'out.png'
set xrange [-1:1]
set yrange [-1:1] reverse
set cbrange [-1:1]
fName = 'data.txt'
stats fName nooutput
N = STATS_records - 1
set xtics 1./N
set ytics 1./N
fn(x)=(2*x/N)-1
plot fName matrix u (fn($1)):(fn($2)):3 w image
此处,stats
命令首先扫描文件并将记录数存储到特殊变量STATS_records
中。然后,函数fn
会重新调整[0:STATS_records-1]
上的范围[-1:1]
。此外,x/y-
抽搐会自动调整。