无法使用`set log x`,`set log y`在`gnuplot`下绘制第一个点

时间:2011-11-02 03:57:37

标签: scale gnuplot logarithm

我正在尝试使用同一数据文件中的不同列绘制两个图表。由于一个图的范围远大于另一个图,我将y轴设置为对数标度。由于两个图的值域也非常小,我也将x轴设置为对数刻度。

绘制图表没有问题,只是gnuplot没有绘制数据文件中的第一个点(x = 0)。

我用来绘制图表的代码是:

set xrange [1:2500]
set yrange [1:2000]
set log x
set log y
plot "datafile.txt" using 1:2 with lines, "datafile.txt" using 1:3 with lines

请注意,因为我对两个轴使用对数刻度,所以我不能在任一范围内包含零值。

我正在使用的数据文件的摘录是:

Table of Results: Range: {-50...50}
Dim #AvgP   #AvgNP
0   0   1743
1   0   564
2   0   914
3   0   1040
4   0   1072
5   0   1005
6   0   815
7   1   689
8   3   525
9   4   433
10  3   350
11  0   255
12  1   216
13  2   140
14  2   84
15  1   57
16  0   38
17  0   16
18  0   15
19  1   7
20  0   2
21  0   1
22  0   1
23  0   0
24  0   0
25  0   0
.   .   .
.   .   .
.   .   .

因此绘制的文件为:

enter image description here

注意如何绘制第二张图的第一个值。

1 个答案:

答案 0 :(得分:0)

如您所知, x = 0 点未在对数轴上定义,因此省略它是您应该发生的事情。如果要强制包含该点,请通过向每个值添加1来移动 x 值,并提供适当的轴标签以明确其绘制内容。

plot "datafile.txt" using ($1+1):2 with lines, "datafile.txt" using ($1+1):3 with lines

有了这个,你应该看到绿线上的缺失点。红线将保持不变,因为值 y = 0 也不能绘制。如果需要,您也可以移动 y 值。

以下是它的外观: curve shifted to show first point.