mplot3d输出中缺少窄样条曲面

时间:2014-08-12 18:33:23

标签: python matplotlib

我已经设置了mplot3d来提供每个示例的3D表面图。 当我绘制数据时,我发现表面上的表面缺少表面(见图)。我注意到表面填充似乎跟随步幅,但网格线使得在较小步长时难以观察。

from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm, pyplot
import numpy

Z = data[-300::]
X,Y = numpy.mgrid[:len(Z), :len(Z[0])]

fig = pyplot.figure(figsize=(20, 10), dpi=800)
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X,
                       Y,
                       Z,
                       rstride=len(Z)/5, 
                       cstride=len(Z[0])/10, 
                       alpha=.6, 
                       linewidths=(.5,), 
                       antialiased=True, 
                       cmap=cm.coolwarm,
                       vmin=124,
                       vmax=186
                       )



cset = ax.contourf(X, Y, Z, zdir='z', offset=130, cmap=cm.coolwarm, vmin=124, vmax=186)

ax.set_xlim(len(Z) * 1.2, 0)
ax.set_ylim(0, len(Z[0]) * 1.2)

ax.elev = 25
ax.azim = 20

cb = fig.colorbar(surf, shrink=0.5, aspect=5)

Plot result

有没有办法填补缺失的表面?

1 个答案:

答案 0 :(得分:0)

我发现实现这一目标的唯一方法是将步幅设置为1,将线宽设置为0.这样做的缺点是我似乎丢失了网格覆盖。

surf = ax.plot_surface(X,
                       Y,
                       Z,
                       shade=True,
                       rstride=1, cstride=1, linewidth=0, 
                       linewidths=(.5,), 
                       antialiased=True, 
                       )