Graphics gnuplot变量pointsize
我尝试用不同大小的点绘制一个文件,如下所示:Graphics gnuplot变量pointsize,graphics,gnuplot,Graphics,Gnuplot,我尝试用不同大小的点绘制一个文件,如下所示: 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
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
我不会画任何东西。是因为我必须更改符号(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
plot[-1:7]“data.dat”使用2:1:(第(3)列>3?3:(第(3)列<2?1:2))点pt 7 ps变量
图表:
您的代码不能处理非整数,因为
符号(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'
请注意,我在没有strcol(N)的情况下定义了symbol(N)
,因此您可以将此函数调用为:
plot 'data.dat' using 2:1:(symbol($3)) w p pt 7 ps var
为什么不使用点pt 7 ps var的2:1:3绘制“data.dat”?如果您检查是否相等,并且没有提供等于“1”、“2”或“3”的数据,则没有任何内容可显示。。。