[Matplotlib-users] Problem using plot_surface.
Hi, I have three variables I would like to plot using plot_surface but I keep getting the error given at the bottom. Anyone know what I am doing wrong?? My code is as follows, fig3 = plt.figure() ax = Axes3D(fig3) X = np.zeros((78,1)) Y = np.zeros((78,1)) Z = np.zeros((78,1)) for p in range(len(data)): X[p,0] = data[p][1] #distance Y[p,0] = data[p][3] #azimuth Z[p,0] = data[p][4] #snr X, Y = np.meshgrid(X, Y) surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) ValueErrorTraceback (most recent call last) /home/davcra/python_scripts/plot_snr_az.py in () 48 Z[p,0] = data[p][4] #snr 49 X, Y = np.meshgrid(X, Y) ---> 50 surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) 51 #fig.colorbar(surf, shrink=0.5, aspect=5) 52 #plt.show() /usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/axes3d.pyc in plot_surface(self, X, Y, Z, *args, **kwargs) 616 normals.append(np.cross(v1, v2)) 617 --> 618 polyc = art3d.Poly3DCollection(polys, *args, **kwargs) 619 if cmap is not None: 620 polyc.set_array(np.array(avgz)) /usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyc in __init__(self, verts, *args, **kwargs) 282 ''' 283 --> 284 PolyCollection.__init__(self, verts, *args, **kwargs) 285 self._zsort = 1 286 self._sort_zpos = None /usr/lib64/python2.6/site-packages/matplotlib/collections.pyc in __init__(self, verts, sizes, closed, **kwargs) 666 Collection.__init__(self,**kwargs) 667 self._sizes = sizes --> 668 self.set_verts(verts, closed) 669 __init__.__doc__ = cbook.dedent(__init__.__doc__) % artist.kwdocd 670 /usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyc in set_verts(self, verts, closed) 304 def set_verts(self, verts, closed=True): 305 '''Set 3D vertices.''' --> 306 self.get_vector(verts) 307 # 2D verts will be updated at draw time 308 PolyCollection.set_verts(self, [], closed) /usr/lib64/python2.6/site-packages/mpl_toolkits/mplot3d/art3d.pyc in get_vector(self, segments3d) 297 segis.append((si, ei)) 298 si = ei --> 299 xs, ys, zs = zip(*points) 300 ones = np.ones(len(xs)) 301 self._vec = np.array([xs, ys, zs, ones]) ValueError: need more than 0 values to unpack WARNING: Failure executing file: thanks, David -- This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure ___ Matplotlib-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Problem using plot_surface.
The shapes of X, Y, and Z must match. After the mesh grid, Z no longer matches X and Y. Ben Root (I will be out of contact for at least a week, sorry I won't be able to help any further till then.) -- This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure___ Matplotlib-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] Clearing figures from memory
I am having problems clearing figures from memory. After saving the
figure, I use pyplot.close() on the figure handle and then del all of
the data and figure, as shown here:
fig.savefig('plots/%(record_id)05i' % recording)
plt.close(fig)
del accel, fourier_amp, fig, time, disp
gc.collect()
Despite this, the figures don't appear to be closing. I am trying to
make 30k plots and I have to kill script every couple thousand and
restart because I run out of memory.
Any suggestions?
Albert
--
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
___
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Clearing figures from memory
On 03/23/2012 08:05 AM, Albert Kottke wrote:
> I am having problems clearing figures from memory. After saving the
> figure, I use pyplot.close() on the figure handle and then del all of
> the data and figure, as shown here:
>
> fig.savefig('plots/%(record_id)05i' % recording)
> plt.close(fig)
>
> del accel, fourier_amp, fig, time, disp
> gc.collect()
>
> Despite this, the figures don't appear to be closing. I am trying to
> make 30k plots and I have to kill script every couple thousand and
> restart because I run out of memory.
>
> Any suggestions?
You are running a standalone script, correct? Make sure you are using
only the agg backend. Before the first import of pyplot, do
import matplotlib
matplotlib.use("agg")
I don't know if that will help, but it can't hurt.
You might find matplotlib.cbook.report_memory() to be useful in tracking
down the problem.
Eric
>
>
> Albert
>
> --
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here
> http://p.sf.net/sfu/sfd2d-msazure
> ___
> Matplotlib-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
___
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] RuntimeError: Could not open facefile
Hi,
I'm running into this RuntimeError: Could not open facefile
c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf;
Cannot_Open_Resource when I'm trying to save out a series of *.png files in
a loop. It crashes on this error after many passes through the loop and
successful files get created, but then always on the same pass it does
this. The full traceback is here:
File
"C:\Users\E440710\Desktop\PythonTransfer\fittslaw_ThroughputCalc_AS_break.py",
line 744, in
fig.savefig(fname, transparent = True)
File "c:\Python32\lib\site-packages\matplotlib\figure.py", line 1174, in
savefig
self.canvas.print_figure(*args, **kwargs)
File "c:\Python32\lib\site-packages\matplotlib\backend_bases.py", line
2027, in print_figure
**kwargs)
File "c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
line 451, in print_png
FigureCanvasAgg.draw(self)
File "c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
line 400, in draw
self.figure.draw(self.renderer)
File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56, in
draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "c:\Python32\lib\site-packages\matplotlib\figure.py", line 887, in
draw
func(*args)
File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56, in
draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "c:\Python32\lib\site-packages\matplotlib\axes.py", line 1985, in
draw
a.draw(renderer)
File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56, in
draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "c:\Python32\lib\site-packages\matplotlib\axis.py", line 1043, in
draw
ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw,
renderer)
File "c:\Python32\lib\site-packages\matplotlib\axis.py", line 994, in
_get_tick_bboxes
extent = tick.label1.get_window_extent(renderer)
File "c:\Python32\lib\site-packages\matplotlib\text.py", line 743, in
get_window_extent
bbox, info = self._get_layout(self._renderer)
File "c:\Python32\lib\site-packages\matplotlib\text.py", line 296, in
_get_layout
ismath=False)
File "c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
line 182, in get_text_width_height_descent
font = self._get_agg_font(prop)
File "c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
line 223, in _get_agg_font
font = FT2Font(str(fname))
RuntimeError: Could not open facefile
c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf;
Cannot_Open_Resource
I've tried the various fixes that have been suggested - removing the
fontList.py3k.cache and even the removing the .matplotlib directory.
However when I run my script that's producing the error the directory gets
recreated along with the fontList.py3k.cache which must be pointing to the
wrong path?
When I check the path
c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf where
matplotlib is looking for the resource it cannot open - the Vera.ttf is
there.
This only happens after many iterations through the loop that is saving out
the *.png files and I have no idea why.
The relevant code from my script is here:
for p in plotData[k]["data"]:
#print("p in plotData[k]:",p)
a = numpy.array((loc[0],loc[1]))
b = numpy.array((p[0],p[1]))
distValue = (numpy.sqrt(numpy.sum((a-b)**2) ))/86.0 #divide by
86 because that was the ppi on the display used to collect the data
if p[2] == 1:
hit_x.append(loc[0]-p[0])
hit_y.append(loc[1]-p[1])
frame_hit_x = loc[0]-p[0]
frame_hit_y = loc[1]-p[1]
print("frame_x:", frame_hit_x)
files = []
if size == (0.25,0.25) and makeMovie:
fig = plt.figure()
print("fig:", fig)
plt.plot(frame_hit_x,frame_hit_y,color='green',marker='o',linestyle='')
plt.axis('scaled')
plt.axis([-100,100,-100,100])
fname =
"subj{:g}_size{:g}_hit_x{:g}.png".format(Subject,btnSize,frame_hit_x)
print('saving frame', fname)
fig.savefig(fname, transparent = True)
files.append(fname)
I'm on a Win7 64bit using python 3.2 and matplotlib version 1.2.x
Any help would be greatly appreciated!
Andy
--
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure___
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] RuntimeError: Could not open facefile
This is a known bug on Windows where it runs out of file handles after a
while.
This commit was an attempt to fix it, but it doesn't seem to work:
https://github.com/matplotlib/matplotlib/commit/4cb2aaa87b0aa9efe7178d7510d3d091ef5206df
I think we need a Windows user/developer/expert to get to the bottom of
why file handles are not being freed to the OS.
Mike
On 03/23/2012 04:35 PM, Andrew Smart wrote:
Hi,
I'm running into this RuntimeError: Could not open facefile
c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf;
Cannot_Open_Resource when I'm trying to save out a series of *.png
files in a loop. It crashes on this error after many passes through
the loop and successful files get created, but then always on the same
pass it does this. The full traceback is here:
File
"C:\Users\E440710\Desktop\PythonTransfer\fittslaw_ThroughputCalc_AS_break.py",
line 744, in
fig.savefig(fname, transparent = True)
File "c:\Python32\lib\site-packages\matplotlib\figure.py", line
1174, in savefig
self.canvas.print_figure(*args, **kwargs)
File "c:\Python32\lib\site-packages\matplotlib\backend_bases.py",
line 2027, in print_figure
**kwargs)
File
"c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
line 451, in print_png
FigureCanvasAgg.draw(self)
File
"c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
line 400, in draw
self.figure.draw(self.renderer)
File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56,
in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "c:\Python32\lib\site-packages\matplotlib\figure.py", line 887,
in draw
func(*args)
File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56,
in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "c:\Python32\lib\site-packages\matplotlib\axes.py", line 1985,
in draw
a.draw(renderer)
File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56,
in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "c:\Python32\lib\site-packages\matplotlib\axis.py", line 1043,
in draw
ticklabelBoxes, ticklabelBoxes2 =
self._get_tick_bboxes(ticks_to_draw, renderer)
File "c:\Python32\lib\site-packages\matplotlib\axis.py", line 994,
in _get_tick_bboxes
extent = tick.label1.get_window_extent(renderer)
File "c:\Python32\lib\site-packages\matplotlib\text.py", line 743,
in get_window_extent
bbox, info = self._get_layout(self._renderer)
File "c:\Python32\lib\site-packages\matplotlib\text.py", line 296,
in _get_layout
ismath=False)
File
"c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
line 182, in get_text_width_height_descent
font = self._get_agg_font(prop)
File
"c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
line 223, in _get_agg_font
font = FT2Font(str(fname))
RuntimeError: Could not open facefile
c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf;
Cannot_Open_Resource
I've tried the various fixes that have been suggested - removing the
fontList.py3k.cache and even the removing the .matplotlib directory.
However when I run my script that's producing the error the directory
gets recreated along with the fontList.py3k.cache which must be
pointing to the wrong path?
When I check the path
c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf
where matplotlib is looking for the resource it cannot open - the
Vera.ttf is there.
This only happens after many iterations through the loop that is
saving out the *.png files and I have no idea why.
The relevant code from my script is here:
for p in plotData[k]["data"]:
#print("p in plotData[k]:",p)
a = numpy.array((loc[0],loc[1]))
b = numpy.array((p[0],p[1]))
distValue = (numpy.sqrt(numpy.sum((a-b)**2) ))/86.0
#divide by 86 because that was the ppi on the display used to collect
the data
if p[2] == 1:
hit_x.append(loc[0]-p[0])
hit_y.append(loc[1]-p[1])
frame_hit_x = loc[0]-p[0]
frame_hit_y = loc[1]-p[1]
print("frame_x:", frame_hit_x)
files = []
if size == (0.25,0.25) and makeMovie:
fig = plt.figure()
print("fig:", fig)
plt.plot(frame_hit_x,frame_hit_y,color='green',marker='o',linestyle='')
plt.axis('scaled')
plt.axis([-100,100,-100,100])
fname =
"subj{:g}_size{:g}_hit_x{:g}.png".format(Subject,btnSize,frame_hit_x)
print('saving frame', fname)
fig.savefig(fname, transparent = True)
files.append(fname)
I'm on a Win7 64bit using python 3.2 and matplotlib version 1.2.x
Any help would be greatly appreciated!
Andy
---
Re: [Matplotlib-users] RuntimeError: Could not open facefile
Ok thank you - so one way to work around it is to just generate the files I
want in batches so Windows won't run out of file handles - but is there a
way to know how many handles are available? I'm trying to animate some data
and I don't really know how many frames there are - could be thousands.
Andy
On Fri, Mar 23, 2012 at 3:45 PM, Michael Droettboom wrote:
> This is a known bug on Windows where it runs out of file handles after a
> while.
>
> This commit was an attempt to fix it, but it doesn't seem to work:
>
>
> https://github.com/matplotlib/matplotlib/commit/4cb2aaa87b0aa9efe7178d7510d3d091ef5206df
>
> I think we need a Windows user/developer/expert to get to the bottom of
> why file handles are not being freed to the OS.
>
> Mike
>
>
> On 03/23/2012 04:35 PM, Andrew Smart wrote:
>
> Hi,
> I'm running into this RuntimeError: Could not open facefile
> c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf;
> Cannot_Open_Resource when I'm trying to save out a series of *.png files in
> a loop. It crashes on this error after many passes through the loop and
> successful files get created, but then always on the same pass it does
> this. The full traceback is here:
>
> File
> "C:\Users\E440710\Desktop\PythonTransfer\fittslaw_ThroughputCalc_AS_break.py",
> line 744, in
> fig.savefig(fname, transparent = True)
> File "c:\Python32\lib\site-packages\matplotlib\figure.py", line 1174, in
> savefig
> self.canvas.print_figure(*args, **kwargs)
> File "c:\Python32\lib\site-packages\matplotlib\backend_bases.py", line
> 2027, in print_figure
> **kwargs)
> File "c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
> line 451, in print_png
> FigureCanvasAgg.draw(self)
> File "c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
> line 400, in draw
> self.figure.draw(self.renderer)
> File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56, in
> draw_wrapper
> draw(artist, renderer, *args, **kwargs)
> File "c:\Python32\lib\site-packages\matplotlib\figure.py", line 887, in
> draw
> func(*args)
> File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56, in
> draw_wrapper
> draw(artist, renderer, *args, **kwargs)
> File "c:\Python32\lib\site-packages\matplotlib\axes.py", line 1985, in
> draw
> a.draw(renderer)
> File "c:\Python32\lib\site-packages\matplotlib\artist.py", line 56, in
> draw_wrapper
> draw(artist, renderer, *args, **kwargs)
> File "c:\Python32\lib\site-packages\matplotlib\axis.py", line 1043, in
> draw
> ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw,
> renderer)
> File "c:\Python32\lib\site-packages\matplotlib\axis.py", line 994, in
> _get_tick_bboxes
> extent = tick.label1.get_window_extent(renderer)
> File "c:\Python32\lib\site-packages\matplotlib\text.py", line 743, in
> get_window_extent
> bbox, info = self._get_layout(self._renderer)
> File "c:\Python32\lib\site-packages\matplotlib\text.py", line 296, in
> _get_layout
> ismath=False)
> File "c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
> line 182, in get_text_width_height_descent
> font = self._get_agg_font(prop)
> File "c:\Python32\lib\site-packages\matplotlib\backends\backend_agg.py",
> line 223, in _get_agg_font
> font = FT2Font(str(fname))
> RuntimeError: Could not open facefile
> c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf;
> Cannot_Open_Resource
>
> I've tried the various fixes that have been suggested - removing the
> fontList.py3k.cache and even the removing the .matplotlib directory.
> However when I run my script that's producing the error the directory gets
> recreated along with the fontList.py3k.cache which must be pointing to the
> wrong path?
>
> When I check the path
> c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf where
> matplotlib is looking for the resource it cannot open - the Vera.ttf is
> there.
>
> This only happens after many iterations through the loop that is saving
> out the *.png files and I have no idea why.
>
> The relevant code from my script is here:
>
> for p in plotData[k]["data"]:
> #print("p in plotData[k]:",p)
> a = numpy.array((loc[0],loc[1]))
> b = numpy.array((p[0],p[1]))
> distValue = (numpy.sqrt(numpy.sum((a-b)**2) ))/86.0 #divide by
> 86 because that was the ppi on the display used to collect the data
> if p[2] == 1:
> hit_x.append(loc[0]-p[0])
>
> hit_y.append(loc[1]-p[1])
>
> frame_hit_x = loc[0]-p[0]
> frame_hit_y = loc[1]-p[1]
> print("frame_x:", frame_hit_x)
> files = []
> if size == (0.25,0.25) and makeMovie:
>
> fig = plt.figure()
> print("fig:", fig)
>
> plt.plot(frame_hit_x,frame_hit_y,color='green',marker='o',linestyle='')
>
>
Re: [Matplotlib-users] RuntimeError: Could not open facefile
On Fri, Mar 23, 2012 at 3:35 PM, Andrew Smart wrote:
> Hi,
> I'm running into this RuntimeError: Could not open facefile
> c:\Python32\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf;
> Cannot_Open_Resource when I'm trying to save out a series of *.png files in
> a loop. It crashes on this error after many passes through the loop and
> successful files get created, but then always on the same pass it does
> this. The full traceback is here:
>
> I wonder if the solution is as simple as doing font caching at the class
level rather than instance level. Andrew, could you try editing
matplotlib/backends/backend_agg.py and replace
class RendererAgg(RendererBase):
"""
The renderer handles all the drawing primitives using a graphics
context instance that controls the colors/styles
"""
debug=1
def __init__(self, width, height, dpi):
if __debug__: verbose.report('RendererAgg.__init__',
'debug-annoying')
RendererBase.__init__(self)
self.texd = maxdict(50) # a cache of tex image rasters
self._fontd = maxdict(50)
with
class RendererAgg(RendererBase):
"""
The renderer handles all the drawing primitives using a graphics
context instance that controls the colors/styles
"""
debug=1
_fontd = maxdict(50)
texd = maxdict(50) # a cache of tex image rasters
def __init__(self, width, height, dpi):
if __debug__: verbose.report('RendererAgg.__init__',
'debug-annoying')
RendererBase.__init__(self)
Does anyone see an issue with doing this caching at the class level? If
this works, we should have *many* fewer font files parsed.
w/o modifying the src code, a related way to test this idea is to reuse the
same figure instance and clear it at the start of the loop. Ie, rather than
for i in range(N):
fig = plt.figure()
plot_something
fig.savefig(...)
do
fig = plt.figure()
for i in range(N):
fig.clf()
plot_something
fig.savefig(...)
I would try the latter first, and if that works I would appreciate it if
you test the src code modification unless someone chimes in and tells us
that is a really bad idea.
JDH
--
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure___
Matplotlib-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
