Chinmay Kanchi
Chinmay Kanchi

Reputation: 65903

Getting rid of artifacts/grid-lines when plotting 3d surfaces

When plotting surfaces using mpl_toolkits.mplot3d.Axes3D.plot_surface(), lines appear that seem to follow the curve of the surfaces being plotted. For example:

X, Y = numpy.meshgrid(numpy.arange(some_range), numpy.arange(some_other_range))
Z1, Z2 = numpy.array(getRate()) 
#getRate is a function that returns an array of shape (len(some_range), len(some_other_range)  

fig = pyplot.figure()
ax = mplot3d.Axes3D(fig)

ax.plot_surface(X, Y, Z1, color='w', alpha=0.2)
ax.plot_surface(X, Y, Z2, color='b', alpha=0.2)

pyplot.show()

Is there any way to get rid of the bloody things so you just have a smooth surface? I've attached an image to show what I mean. enter image description here

Upvotes: 8

Views: 8747

Answers (1)

JAB
JAB

Reputation: 21089

Try

ax.plot_surface(X, Y, Z1, color='w', alpha=0.2, linewidth=0)
ax.plot_surface(X, Y, Z2, color='b', alpha=0.2, linewidth=0)

You may want to increase your alpha values a bit, though, if taking away the lines makes parts of the surfaces too hard to see.

Upvotes: 8

Related Questions