GNUPLOT:绘制球体表面

时间:2015-02-20 10:51:42

标签: plot geometry gnuplot

我有一个依赖于phi和theta的函数,我想在一个球体的表面上绘制。 日期存储在.txt文件中,其中包含以下列:

1: x = R*sin(theta)*cos(phi)
2: y = R*sin(theta)*sin(phi)
3: z = R*cos(theta)
4: density

我使用以下gnuplot代码绘制:

set terminal wxt size 800,800
set mapping cartesian
set view equal xyz
set xlabel 'x'
set ylabel 'y'
set zlabel 'z'
splot "densityprofile_100.000.txt" u 1:2:3:4 with pm3d
pause -1

不幸的是,Gnuplot似乎无法正确表示球体上的颜色。似乎有一些阴影,我无法摆脱;看到这里的图片:

enter image description here

当我用鼠标转动球体时,阴影变得越来越小,但没有完全消失的位置。 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

我通过添加以下行找到了解决问题的方法:

set pm3d depthorder

答案 1 :(得分:0)

猜测,深度排序可能会造成一些麻烦。你试过pm3d“hidden3d”选项吗?

来自pm3d的gnuplot帮助:

  

选项hidden3d将线条样式作为参数   由设置样式线创建....(样式不需要出现时   设置pm3d,但在绘图时必须存在)。如果设置,则为行   使用指定的线条样式绘制,考虑隐藏线   去除。这比使用命令集更有效   hidden3d因为它没有真正计算隐藏线移除,但只是   以正确的顺序绘制填充的多边形。所以推荐   使用pm3d时的选择是

 set pm3d at s hidden3d 100
 set style line 100 lt 5 lw 0.5
 unset hidden3d
 unset surf
 splot x*x+y*y