Hi again Khanh,

With the 1st 3 lines in [12], plt.show at the end of the new [13]moved to [14] and fig.savefig moved to [15] the show at [14] does not give a plot but does not throw an error. The save fails in [15] with this error trace which I think should be expected since there is no rendered plot:

---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-15-213539d3fe02> in <module>
----> 1 fig.savefig('viz/weight.png')

~\Anaconda3\lib\site-packages\matplotlib\figure.py in savefig(self, fname, frameon, transparent, **kwargs)
2092 self.set_frameon(frameon)
2093
-> 2094 self.canvas.print_figure(fname, **kwargs)
2095
2096 if frameon:

~\Anaconda3\lib\site-packages\matplotlib\backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, **kwargs)
2073 orientation=orientation,
2074 bbox_inches_restore=_bbox_inches_restore,
-> 2075 **kwargs)
2076 finally:
2077 if bbox_inches and restore_bbox:

~\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py in print_png(self, filename_or_obj, *args, **kwargs)
508
509 """
--> 510 FigureCanvasAgg.draw(self)
511 renderer = self.get_renderer()
512

~\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py in draw(self)
400 toolbar = self.toolbar
401 try:
--> 402 self.figure.draw(self.renderer)
403 # A GUI class may be need to update a window using this draw, so
404 # don't forget to call the superclass.

~\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
48 renderer.start_filter()
49
---> 50 return draw(artist, renderer, *args, **kwargs)
51 finally:
52 if artist.get_agg_filter() is not None:

~\Anaconda3\lib\site-packages\matplotlib\figure.py in draw(self, renderer)
1647
1648 mimage._draw_list_compositing_images(
-> 1649 renderer, self, artists, self.suppressComposite)
1650
1651 renderer.close_group('figure')

~\Anaconda3\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
136 if not_composite or not has_images:
137 for a in artists:
--> 138 a.draw(renderer)
139 else:
140 # Composite any adjacent images together

~\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
48 renderer.start_filter()
49
---> 50 return draw(artist, renderer, *args, **kwargs)
51 finally:
52 if artist.get_agg_filter() is not None:

~\Anaconda3\lib\site-packages\matplotlib\axes\_base.py in draw(self, renderer, inframe)
2626 renderer.stop_rasterizing()
2627
-> 2628 mimage._draw_list_compositing_images(renderer, self, artists)
2629
2630 renderer.close_group('axes')

~\Anaconda3\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
136 if not_composite or not has_images:
137 for a in artists:
--> 138 a.draw(renderer)
139 else:
140 # Composite any adjacent images together

~\Anaconda3\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
48 renderer.start_filter()
49
---> 50 return draw(artist, renderer, *args, **kwargs)
51 finally:
52 if artist.get_agg_filter() is not None:

~\Anaconda3\lib\site-packages\matplotlib\axis.py in draw(self, renderer, *args, **kwargs)
1185 ticks_to_draw = self._update_ticks(renderer)
1186 ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw,
-> 1187 renderer)
1188
1189 for tick in ticks_to_draw:

~\Anaconda3\lib\site-packages\matplotlib\axis.py in _get_tick_bboxes(self, ticks, renderer)
1123 for tick in ticks:
1124 if tick.label1On and tick.label1.get_visible():
-> 1125 extent = tick.label1.get_window_extent(renderer)
1126 ticklabelBoxes.append(extent)
1127 if tick.label2On and tick.label2.get_visible():

~\Anaconda3\lib\site-packages\matplotlib\text.py in get_window_extent(self, renderer, dpi)
928 raise RuntimeError('Cannot get window extent w/o renderer')
929
--> 930 bbox, info, descent = self._get_layout(self._renderer)
931 x, y = self.get_unitless_position()
932 x, y = self.get_transform().transform_point((x, y))

~\Anaconda3\lib\site-packages\matplotlib\text.py in _get_layout(self, renderer)
311 w, h, d = renderer.get_text_width_height_descent(clean_line,
312 self._fontproperties,
--> 313 ismath=ismath)
314 else:
315 w, h, d = 0, 0, 0

~\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py in get_text_width_height_descent(self, s, prop, ismath)
207 fontsize = prop.get_size_in_points()
208 w, h, d = texmanager.get_text_width_height_descent(
--> 209 s, fontsize, renderer=self)
210 return w, h, d
211

~\Anaconda3\lib\site-packages\matplotlib\texmanager.py in get_text_width_height_descent(self, tex, fontsize, renderer)
462 else:
463 # use dviread. It sometimes returns a wrong descent.
--> 464 dvifile = self.make_dvi(tex, fontsize)
465 with dviread.Dvi(dvifile, 72 * dpi_fraction) as dvi:
466 page = next(iter(dvi))

~\Anaconda3\lib\site-packages\matplotlib\texmanager.py in make_dvi(self, tex, fontsize)
326 self._run_checked_subprocess(
327 ["latex", "-interaction=nonstopmode", "--halt-on-error",
--> 328 texfile], tex)
329 for fname in glob.glob(basefile + '*'):
330 if not fname.endswith(('dvi', 'tex')):

~\Anaconda3\lib\site-packages\matplotlib\texmanager.py in _run_checked_subprocess(self, command, tex)
296 report = subprocess.check_output(command,
297 cwd=self.texcache,
--> 298 stderr=subprocess.STDOUT)
299 except subprocess.CalledProcessError as exc:
300 raise RuntimeError(

~\Anaconda3\lib\subprocess.py in check_output(timeout, *popenargs, **kwargs)
354
355 return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
--> 356 **kwargs).stdout
357
358

~\Anaconda3\lib\subprocess.py in run(input, timeout, check, *popenargs, **kwargs)
421 kwargs['stdin'] = PIPE
422
--> 423 with Popen(*popenargs, **kwargs) as process:
424 try:
425 stdout, stderr = process.communicate(input, timeout=timeout)

~\Anaconda3\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors)
727 c2pread, c2pwrite,
728 errread, errwrite,
--> 729 restore_signals, start_new_session)
730 except:
731 # Cleanup if the child failed starting.

~\Anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
1015 env,
1016 os.fspath(cwd) if cwd is not None else None,
-> 1017 startupinfo)
1018 finally:
1019 # Child is launched. Close the parent's copy of those pipe

FileNotFoundError: [WinError 2] The system cannot find the file specified

Thanks again,

Dave

Retired and living my golden years in a world full of angry people.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store