我尝试绘制一个不同大小的文件,如下所示:
N = 3
symbol(N) = strcol(N) eq "3" ? 3 : ( strcol(N) eq "2" ? 2 : (strcol(N) eq "1" ? 1 : 0) )
set xrange [0:6]
plot 'data.dat' using 2:1:(symbol(N)*1) with points pt 7 ps var
实际上,如果第三列是由整数(即:1,2,5)构成的,但如果文件的格式为:
,这是正确的。#1st cl 2nd cl 3rd cl
23. 0. 4.21
34. 0. 1.2
56. 0. 1.92
我无法画出任何东西。是因为我必须改变symbol(N)
行中的某些内容吗?
感谢所有人。
答案 0 :(得分:2)
您的代码不适用于非整数,因为symbol(N)
在N
与1,2或3不同时返回0:
gnuplot> symbol(N) = ( N==3 ? 3 : (N==2 ? 2 : (N==1 ? 1 : 0) ) )
gnuplot> print symbol(1.0), symbol(3.0), symbol(4.21), symbol(1.2)
1 3 0 0
这些功能的一些变体可能会对您有所帮助:
symbol(N) = (floor(N) == N ? N : 0.5) # return N if N is an integer; return 0.5 otherwise
symbol(N) = floor(N) # return largest integer not greater than N
symbol(N) = ceil(N) # return smallest integer not less than N
symbol(N) = N # just return N, doh'
请注意,我在没有symbol(N)
的情况下定义了strcol(N)
,因此您可以将此函数称为:
plot 'data.dat' using 2:1:(symbol($3)) w p pt 7 ps var
答案 1 :(得分:1)