gnuplot 变量 pointsize
gnuplot variable pointsize
我尝试用不同大小的点绘制文件,如下:
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)
行中的某些内容吗?
感谢大家。
不确定您为什么要采用这种复杂的方法,但我想这应该接近您想要实现的目标:
数据集
#1st cl 2nd cl 3rd cl
23. 0. 1.5
34. 0. 2.5
56. 0. 3.5
gnuplot 命令:
plot[ -1:7 ] 'data.dat' using 2:1:( column( 3 ) > 3 ? 3 : ( column( 3 ) < 2 ? 1 : 2 ) ) with points pt 7 ps var
图表:
您的代码不适用于非整数,因为 symbol(N)
returns 0 当 N
不同于 1、2 或 3 时:
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()) w p pt 7 ps var
我尝试用不同大小的点绘制文件,如下:
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)
行中的某些内容吗?
感谢大家。
不确定您为什么要采用这种复杂的方法,但我想这应该接近您想要实现的目标:
数据集
#1st cl 2nd cl 3rd cl
23. 0. 1.5
34. 0. 2.5
56. 0. 3.5
gnuplot 命令:
plot[ -1:7 ] 'data.dat' using 2:1:( column( 3 ) > 3 ? 3 : ( column( 3 ) < 2 ? 1 : 2 ) ) with points pt 7 ps var
图表:
您的代码不适用于非整数,因为 symbol(N)
returns 0 当 N
不同于 1、2 或 3 时:
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()) w p pt 7 ps var