谈谈gnuplot(二十五):简单 3D 函数绘图||| 终于谈到 3D 绘图了。大多数情况下普通 3D 曲面绘图并不是一个好的选择,因为投影会使这样的绘图很难表达定量关系,通常只能定性的显示一下函数或者数据趋势。这种情况下,往往需要其他图像的配合才能展示定量的关系。我们从简单的函数图像入手,介绍一下 gnuplot 的 3D 绘图功能。
在 3D 情况下,gnuplot 的绘图命令是 splot: gnuplot> f(x,y)=sin(sqrt(x*x+y*y))/sqrt(x*x+y*y) gnuplot> set xlabel "X" gnuplot> set ylabel "Y" gnuplot> set zlabel "Z" gnuplot> unset key gnuplot> splot f(x,y) 显然,默认的网格有点过大,无法显示函数细节。这个网格大小可以通过 isosamples 参数来调节。另外,底部平面似乎离曲面太远了,留了很大一段空白,我们想把这个空白缩小一些。底部平面的位置由 xyplane 参数来控制,可以用: set xyplane at <z坐标> 来设定底部平面的绝对位置,也可以用: set xyplane <相对比例> 来设定空白部分相对于 zrange 的比例。 下面是例子: gnuplot> set isosamples 50 gnuplot> set xyplane 0.2 gnuplot> replot 由于网格是透明的,因此网格重叠部分显得比较混乱。为了更清楚的显示函数图像,我们让后面被遮挡的部分隐藏起来: gnuplot> set hidden3d gnuplot> replot 除了用网格表示曲面,我们还可以用色彩来表示不同的 z 值,gnuplot 把这种表示方式叫做 pm3d(palette-mapped 3d): gnuplot> set pm3d gnuplot> replot 最后,既然是 3D 图像,就要涉及视角问题。gnuplot 里的 3D 视角用 set view 命令控制,默认视角是 60, 30,分别表示绕 x 轴和 z 轴的旋转角度。另外,一些 terminal 例如 wxt,支持直接用鼠标拖动图像改变视角。 gnuplot> set view 45,20 gnuplot> replot |
|