在matplotlib 3D表面上实现连续阴影
在matplotlib的3D图中,我可以通过设置行数和列数来决定表面上可见的面总数,具体的设置方法是:
s=ax.plot_surface(x,y,z, color='gray', shade=True, rstride=1,cstride=1)
这里的rstride和cstride数字越小,面就越小。因为我还在这个表面上绘制了流线或轨迹,所以我想去掉这些面的边缘。现在,使用:
s.set_linewidth(0)
并将rstride和cstride设置为较小的值,我几乎达到了我想要的效果,也就是表面上颜色几乎是连续变化的,这样看起来有很好的3D效果。
可惜的是,线条还是存在的,形成了面之间的空隙。有没有办法解决这个问题?也许我只是漏掉了一个简单的命令……
补充:生成这个表面的代码比较长,没法在这里详细列出。我附上了一个结果的快照,展示了上面提到的解决方法。
1 个回答
11
你有没有试过在里面加上 antialiased=False
呢?
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, linewidth=0)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, linewidth=0, antialiased=False)