1

I'm trying to make a 3d contour plot using countourfcommand in Matplotlib.

Here's the variable distribution:

My variable Distribution

I'm trying to plot the contour over 3 sides of a cube:

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

ax.pbaspect = [1.0, 1.0, 1.0]

levels = np.linspace(0,1,10)

cset = [[],[],[]]
n=0
for i in range(0,m-1):
    for j in range(0,m-1):
        znum[i,j]=DELTAcrit[n]
        n+=1
cset[0] = ax.contourf(xnum, ynum, znum, zdir='z', offset=2*np.pi,
                      levels=levels,cmap='jet',antialiased=True)

for i in range(0,m-1):
    for j in range(0,m-1):
        znum[i,j]=DELTAcrit[n]
        n+=1 
cset[1] = ax.contourf(znum, xnum, ynum, zdir='x', offset=2*np.pi,
                      levels=levels,cmap='jet',antialiased=True)

for i in range(0,m-1):
    for j in range(0,m-1):
        znum[i,j]=DELTAcrit[n]
        n+=1 
cset[2] = ax.contourf(xnum, znum, ynum, zdir='y', offset=2*np.pi,
                      levels=levels,cmap='jet',antialiased=True)

# setting 3D-axis-limits:    
ax.set_xlim3d(0,2*np.pi)
ax.set_ylim3d(0,2*np.pi)
ax.set_zlim3d(0,2*np.pi)
ax.set_xticks([0., .5*np.pi, np.pi, 1.5*np.pi, 2*np.pi])
ax.set_xticklabels(["$0$", r"$\frac{1}{2}\pi$",
                     r"$\pi$", r"$\frac{3}{2}\pi$", r"$2\pi$"])
ax.set_yticks([0., .5*np.pi, np.pi, 1.5*np.pi, 2*np.pi])
ax.set_yticklabels(["$0$", r"$\frac{1}{2}\pi$",
                     r"$\pi$", r"$\frac{3}{2}\pi$", r"$2\pi$"])
ax.set_zticks([0., .5*np.pi, np.pi, 1.5*np.pi, 2*np.pi])
ax.set_zticklabels(["$0$", r"$\frac{1}{2}\pi$",
                     r"$\pi$", r"$\frac{3}{2}\pi$", r"$2\pi$"])

ax.view_init(25, 45)

fig.subplots_adjust(bottom=-0.2,top=0.7)

cb = fig.colorbar(cset[0], shrink=0.7)

plt.show()

When I change the levels variable to a numpy.linspace with 3 or 5 levels it goes ok.

When I try like in the example with ten levels, like the one in the example I've just showed I got the following error:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\IPython\core\formatters.py in __call__(self, obj)
    339                 pass
    340             else:
--> 341                 return printer(obj)
    342             # Finally look for special method names
    343             method = get_real_method(obj, self.print_method)

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\IPython\core\pylabtools.py in <lambda>(fig)
    246 
    247     if 'png' in formats:
--> 248         png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
    249     if 'retina' in formats or 'png2x' in formats:
    250         png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\IPython\core\pylabtools.py in print_figure(fig, fmt, bbox_inches, **kwargs)
    130         FigureCanvasBase(fig)
    131 
--> 132     fig.canvas.print_figure(bytes_io, **kw)
    133     data = bytes_io.getvalue()
    134     if fmt == 'svg':

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\matplotlib\backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)
   2191                            else suppress())
   2192                     with ctx:
-> 2193                         self.figure.draw(renderer)
   2194 
   2195                     bbox_inches = self.figure.get_tightbbox(

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     39                 renderer.start_filter()
     40 
---> 41             return draw(artist, renderer, *args, **kwargs)
     42         finally:
     43             if artist.get_agg_filter() is not None:

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\matplotlib\figure.py in draw(self, renderer)
   1861 
   1862             self.patch.draw(renderer)
-> 1863             mimage._draw_list_compositing_images(
   1864                 renderer, self, artists, self.suppressComposite)
   1865 

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
    129     if not_composite or not has_images:
    130         for a in artists:
--> 131             a.draw(renderer)
    132     else:
    133         # Composite any adjacent images together

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
     39                 renderer.start_filter()
     40 
---> 41             return draw(artist, renderer, *args, **kwargs)
     42         finally:
     43             if artist.get_agg_filter() is not None:

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py in draw(self, renderer)
    443                             for axis in self._get_axis_list()) + 1
    444         for i, col in enumerate(
--> 445                 sorted(self.collections,
    446                        key=lambda col: col.do_3d_projection(renderer),
    447                        reverse=True)):

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py in <lambda>(col)
    444         for i, col in enumerate(
    445                 sorted(self.collections,
--> 446                        key=lambda col: col.do_3d_projection(renderer),
    447                        reverse=True)):
    448             col.zorder = zorder_offset + i

c:\users\rapha\pycharmprojects\vortexpy\venv\lib\site-packages\mpl_toolkits\mplot3d\art3d.py in do_3d_projection(self, renderer)
    766             key=lambda x: x[0], reverse=True)
    767 
--> 768         zzs, segments_2d, self._facecolors2d, self._edgecolors2d, idxs = \
    769             zip(*z_segments_2d)
    770 

ValueError: not enough values to unpack (expected 5, got 0)

Thanks for the help!

RaphaelDavid
  • 111
  • 2

0 Answers0