如何在 gnuplot 4.0 中制作圆圈
How to make circle in gnuplot 4.0
由于我必须使用旧版本的gnuplot 4.0,所以我发现圆圈样式不可用。谁能建议我如何根据这样的数据绘制不同大小的圆:
x y size
0.000000 -18.595474 2.752
0.154186 -18.574680 0.752
0.308371 -18.513723 0.752
0.462557 -18.416941 3.753
0.616743 -18.291512 1.754
0.770928 -18.147374 2.755
0.925114 -17.996800 2.757
1.079300 -17.853565 0.759
1.233485 -17.731370 4.761
1.387671 -17.642539 0.763
1.541857 -17.605154 1.763
我使用这样的命令,但它告诉我一个错误,未定义变量:变量
plot "data0" u 1:2:3 with points pt 7 lt 1 ps variable title 'total'
非常感谢!
哎呀,我想说这并不简单。此功能(使用来自数据的变量 pointsize)和许多其他有用的功能(循环、绘图命令中的表达式、数组等)来创建 "easy" 变通方法在 gnuplot 的更高版本中引入。
在 gnuplot 5.2.6 中,这只是
plot 'Data.dat' u 1:2:3 w p ps var
但是,对于 gnuplot 4.0,您可以使用
创建一个奇怪的解决方法
- 固定的 x-y 范围
multiplot
reread
子程序
- 拟合数据以将第三列的值放入变量中(很奇怪)
- 如果您还想要最后一个必须添加的数据点
最后有一些虚拟数据线
使用 windows 终端在 Win 7 上使用 gnuplot 4.0 进行测试。也许我忽略了一种更简单的方法,但是使用 gnuplot 4.0 你的功能非常有限。您必须有充分的理由不想或不能更新到较新的版本。
数据:tbCirclesV4.dat
# x y size
0.000000 -18.595474 2.752
0.154186 -18.574680 0.752
0.308371 -18.513723 0.752
0.462557 -18.416941 3.753
0.616743 -18.291512 1.754
0.770928 -18.147374 2.755
0.925114 -17.996800 2.757
1.079300 -17.853565 0.759
1.233485 -17.731370 4.761
1.387671 -17.642539 0.763
1.541857 -17.605154 1.763
0.000000 0.000000 0.000
主程序: tbCirclesV4.plt
### mimic "plot 1:2:3 w p ps var" in gnuplot V4.0
reset
set term windows
set multiplot
set xrange[-0.1:1.6]
set yrange[-19:-17]
i=0
Max=11
f(x) = a*x + b
load 'tbCirclesV4Loop.plt'
unset multiplot
### end of code
子例程: tbCirclesV4Loop.plt
### sub-routine
a=1
b=1
fit [*:*][*:*] f(x) 'tbCirclesV4.dat' every ::i::i+1 u 0:3 via a,b
print "Size: ", i, b
# use pointsize b*2 to enlarge the circles a little
plot 'tbCirclesV4.dat' u 1:2 every ::i::i w lp pt 8 ps b*2 lt i+1 notitle
i=i+1
if (i<Max) reread
### end of sub-routine
结果:
由于我必须使用旧版本的gnuplot 4.0,所以我发现圆圈样式不可用。谁能建议我如何根据这样的数据绘制不同大小的圆:
x y size
0.000000 -18.595474 2.752
0.154186 -18.574680 0.752
0.308371 -18.513723 0.752
0.462557 -18.416941 3.753
0.616743 -18.291512 1.754
0.770928 -18.147374 2.755
0.925114 -17.996800 2.757
1.079300 -17.853565 0.759
1.233485 -17.731370 4.761
1.387671 -17.642539 0.763
1.541857 -17.605154 1.763
我使用这样的命令,但它告诉我一个错误,未定义变量:变量
plot "data0" u 1:2:3 with points pt 7 lt 1 ps variable title 'total'
非常感谢!
哎呀,我想说这并不简单。此功能(使用来自数据的变量 pointsize)和许多其他有用的功能(循环、绘图命令中的表达式、数组等)来创建 "easy" 变通方法在 gnuplot 的更高版本中引入。
在 gnuplot 5.2.6 中,这只是
plot 'Data.dat' u 1:2:3 w p ps var
但是,对于 gnuplot 4.0,您可以使用
创建一个奇怪的解决方法- 固定的 x-y 范围
multiplot
reread
子程序- 拟合数据以将第三列的值放入变量中(很奇怪)
- 如果您还想要最后一个必须添加的数据点 最后有一些虚拟数据线
使用 windows 终端在 Win 7 上使用 gnuplot 4.0 进行测试。也许我忽略了一种更简单的方法,但是使用 gnuplot 4.0 你的功能非常有限。您必须有充分的理由不想或不能更新到较新的版本。
数据:tbCirclesV4.dat
# x y size
0.000000 -18.595474 2.752
0.154186 -18.574680 0.752
0.308371 -18.513723 0.752
0.462557 -18.416941 3.753
0.616743 -18.291512 1.754
0.770928 -18.147374 2.755
0.925114 -17.996800 2.757
1.079300 -17.853565 0.759
1.233485 -17.731370 4.761
1.387671 -17.642539 0.763
1.541857 -17.605154 1.763
0.000000 0.000000 0.000
主程序: tbCirclesV4.plt
### mimic "plot 1:2:3 w p ps var" in gnuplot V4.0
reset
set term windows
set multiplot
set xrange[-0.1:1.6]
set yrange[-19:-17]
i=0
Max=11
f(x) = a*x + b
load 'tbCirclesV4Loop.plt'
unset multiplot
### end of code
子例程: tbCirclesV4Loop.plt
### sub-routine
a=1
b=1
fit [*:*][*:*] f(x) 'tbCirclesV4.dat' every ::i::i+1 u 0:3 via a,b
print "Size: ", i, b
# use pointsize b*2 to enlarge the circles a little
plot 'tbCirclesV4.dat' u 1:2 every ::i::i w lp pt 8 ps b*2 lt i+1 notitle
i=i+1
if (i<Max) reread
### end of sub-routine
结果: