缺乏关键词在网上找了很久,没找到该如何在三维坐标中画二维曲线,用splot直接画,画出的都是一些3维曲面,并没有得到单纯的一条二维曲线。
上图是sin(x)在三维坐标中的曲面图,而目标是在特定的x或y值上的一条正弦曲线,还有一定差距,后来在Gnuplot的官方文档中找到了一丝端倪。如下:
这个图形已经很接近我们想要的了,只是一个是平面,一个是线,把这些平面去掉只保留曲线就是我们要找的实现方法。
通过网上查找很容易得到了Fence plots的代码示例。如下:
看的出,因为设置了函数样式为脉冲形式所以才有了曲线下方的填充,如果不设置这个属性那么我们就可以得到想要的曲线。
最后总结写出自己的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#以下代码可以直接全部复制运行 set view 66,56; set iso 500; set samp 500; set xrange[0:4]; set yrange [-4*pi:4*pi]; set zrange [-1:1]; xf(x,a)=(abs(x-a)<.01)?1:NaN; splot xf(x,2)*cos(y) lw 1; |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#注解专用区 set view 66,56 #设置查看角度; set iso 500 #设置分辨率; set samp 500 #设置样本点数; set xrange[0:4]; set yrange [-4*pi:4*pi]; set zrange [-1:1]; xf(x,a)=(abs(x-a)<.01)?1:NaN #过滤x!=a+-0.01的曲线; splot xf(x,2)*cos(y) lw 1 #画图,line width = 1; |
生成图像如下:
实际上,这仍然是曲面来的,只不过我们限定当x在2的附近时(x-2绝对值小于0.01),让xf函数值为1,其他地方都不取值,所以剩下很小的曲面看上去便像二维曲线。