使用 gnuplot 中的 x y 文件绘制圆柱坐标
plot cylindrical coordinate using an x y file in gnuplot
我想使用 interface.txt 文件 (File) 使用 gnuplot 制作 3D 图。
知道我有y轴旋转不变性。
此图表示二维截面(plot 'interface.txt' u 2:1)
这是我想用 gnuplot 得到的东西,但我不知道如何绘制它。
我想得到这张照片,但对于 theta = [0:2*pi]。
我试过这段代码,但现在我不知道如何绘制它
reset
set angles degrees
set mapping cylindrical
splot for [t=1:360:2] 'interface.txt' u t:1:(sqrt(**2+**2))
如果你有什么想法?
谢谢!
我不确定下面的示例是否满足您的期望。
由于您的原始曲线未闭合,因此这不是物体而是表面。
对于 pm3d
在旋转曲线之间执行 "connections",我猜你必须在旋转曲线之间添加一个空行。您可以通过 "trick" 绘制一个包含一个元素的虚拟数组来获得此信息:plot A u ("") w table
。希望有更好的解决办法。
代码:
### rotation of a curve
reset session
set angle degrees
set table $Rotation
array A[1] # dummy array for plotting a single empty line
do for [i=0:360:15] {
plot "interface.txt" u (*cos(i)):(*sin(i)):1 w table
plot A u ("") w table
}
unset table
set pm3d hidden3d depthorder
# set view equal xyz # uncomment to have equal x,y,z scales
set view 30,50,1.3 # scale 1.3 to reduce white space around
splot $Rotation u 1:2:3 w pm3d lt -2 notitle
### end of code
结果:
谢谢你,这几乎是完美的。
现在它尝试关闭我的 2 个表面。
所以我们需要link曲线的边缘得到一个body。
为此,我使用统计数据:
然后是最终代码:
### rotation of a curve
reset session
set print $interface
stats 'interface.txt' nooutput
print sprintf("%g %g", STATS_max_y, STATS_pos_max_y)
print sprintf("%g %g", STATS_max_y, -STATS_pos_max_y)
set angle degrees
set table $Rotation
array A[1] # dummy array for plotting a single empty line
do for [i=0:360:10] {
plot "interface.txt" u (*cos(i)):(*sin(i)):1 w table
plot "interface.txt" u (*cos(i)):(*sin(i)):(-) w table
plot $interface u (*cos(i)):(*sin(i)):2 w table
plot A u ("") w table
}
unset table
unset key
set border
set style fill solid 1.00 border -1
set view 62, 8, 1.245, 1.0
set ticslevel 0
set pm3d depthorder interpolate 4,4 lighting specular 0.6 at s
# set view equal xyz # uncomment to have equal x,y,z scales
splot $Rotation u 1:2:3 w pm3d lt -2 notitle
### end of code
我想使用 interface.txt 文件 (File) 使用 gnuplot 制作 3D 图。
知道我有y轴旋转不变性。
此图表示二维截面(plot 'interface.txt' u 2:1)
这是我想用 gnuplot 得到的东西,但我不知道如何绘制它。
我想得到这张照片,但对于 theta = [0:2*pi]。
reset
set angles degrees
set mapping cylindrical
splot for [t=1:360:2] 'interface.txt' u t:1:(sqrt(**2+**2))
如果你有什么想法? 谢谢!
我不确定下面的示例是否满足您的期望。
由于您的原始曲线未闭合,因此这不是物体而是表面。
对于 pm3d
在旋转曲线之间执行 "connections",我猜你必须在旋转曲线之间添加一个空行。您可以通过 "trick" 绘制一个包含一个元素的虚拟数组来获得此信息:plot A u ("") w table
。希望有更好的解决办法。
代码:
### rotation of a curve
reset session
set angle degrees
set table $Rotation
array A[1] # dummy array for plotting a single empty line
do for [i=0:360:15] {
plot "interface.txt" u (*cos(i)):(*sin(i)):1 w table
plot A u ("") w table
}
unset table
set pm3d hidden3d depthorder
# set view equal xyz # uncomment to have equal x,y,z scales
set view 30,50,1.3 # scale 1.3 to reduce white space around
splot $Rotation u 1:2:3 w pm3d lt -2 notitle
### end of code
结果:
谢谢你,这几乎是完美的。
现在它尝试关闭我的 2 个表面。
所以我们需要link曲线的边缘得到一个body。 为此,我使用统计数据:
然后是最终代码:
### rotation of a curve
reset session
set print $interface
stats 'interface.txt' nooutput
print sprintf("%g %g", STATS_max_y, STATS_pos_max_y)
print sprintf("%g %g", STATS_max_y, -STATS_pos_max_y)
set angle degrees
set table $Rotation
array A[1] # dummy array for plotting a single empty line
do for [i=0:360:10] {
plot "interface.txt" u (*cos(i)):(*sin(i)):1 w table
plot "interface.txt" u (*cos(i)):(*sin(i)):(-) w table
plot $interface u (*cos(i)):(*sin(i)):2 w table
plot A u ("") w table
}
unset table
unset key
set border
set style fill solid 1.00 border -1
set view 62, 8, 1.245, 1.0
set ticslevel 0
set pm3d depthorder interpolate 4,4 lighting specular 0.6 at s
# set view equal xyz # uncomment to have equal x,y,z scales
splot $Rotation u 1:2:3 w pm3d lt -2 notitle
### end of code