Bug in mplot3D with PolyCollection: (0, 0) data point is always inserted into the data set. #2533

danieljfarrell opened this Issue Oct 21, 2013 · 3 comments


None yet

3 participants


This a a bug related to stacked xy-plots example,

matplotlib seems to be inserting a vertex at (0,0) into the data set.

  • Is there a different way to plot stacked xy-plots that avoids this bug?
  • Maybe the fix is fairly simple, if all that is happening is that an additional vertex is getting inserted?

The following example is based on the poly3d_demo script linked above. If we change the data set so that the data doesn't include a point at x=0, for example change line 12 from,

xs = np.arange(0, 10, 0.4)


xs = np.arange(5, 10, 0.4)

A erroneous line is drawn from the data set to the (0,0) point.

The following script produces the result(s) below, using matplotlib 1.3.0.

Example 1

When the x-axis is changed to only include the range of the data set the result look even worse,

Example 2

from mpl_toolkits.mplot3d import Axes3D
from matplotlib.collections import PolyCollection
from matplotlib.colors import colorConverter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')

cc = lambda arg: colorConverter.to_rgba(arg, alpha=0.6)

xs = np.arange(5, 10, 0.4) # The data x-range has been changed to run between 5--10
verts = []
zs = [0.0, 1.0, 2.0, 3.0]
for z in zs:
    ys = np.random.rand(len(xs))
    ys[0], ys[-1] = 0, 0
    verts.append(list(zip(xs, ys)))

poly = PolyCollection(verts, facecolors = [cc('r'), cc('g'), cc('b'),
ax.add_collection3d(poly, zs=zs, zdir='y')

ax.set_xlim3d(5, 10) # This has been changed to 5 to adjust the axis range to the data
ax.set_ylim3d(-1, 4)
ax.set_zlim3d(0, 1)

mdboom commented Oct 21, 2013

@WeatherGod: any thoughts?


closed by #3239

@tacaswell tacaswell closed this Jul 12, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment