MCPcopy Index your code
hub / github.com/matplotlib/matplotlib / HTMLWriter

Class HTMLWriter

lib/matplotlib/animation.py:747–852  ·  view source on GitHub ↗

Writer for JavaScript-based HTML movies.

Source from the content-addressed store, hash-verified

745
746@writers.register('html')
747class HTMLWriter(FileMovieWriter):
748 """Writer for JavaScript-based HTML movies."""
749
750 supported_formats = ['png', 'jpeg', 'tiff', 'svg']
751
752 @classmethod
753 def isAvailable(cls):
754 return True
755
756 def __init__(self, fps=30, codec=None, bitrate=None, extra_args=None,
757 metadata=None, embed_frames=False, default_mode='loop',
758 embed_limit=None):
759
760 if extra_args:
761 _log.warning("HTMLWriter ignores 'extra_args'")
762 extra_args = () # Don't lookup nonexistent rcParam[args_key].
763 self.embed_frames = embed_frames
764 self.default_mode = default_mode.lower()
765 _api.check_in_list(['loop', 'once', 'reflect'],
766 default_mode=self.default_mode)
767
768 # Save embed limit, which is given in MB
769 self._bytes_limit = mpl._val_or_rc(embed_limit, 'animation.embed_limit')
770 # Convert from MB to bytes
771 self._bytes_limit *= 1024 * 1024
772
773 super().__init__(fps, codec, bitrate, extra_args, metadata)
774
775 def setup(self, fig, outfile, dpi=None, frame_dir=None):
776 outfile = Path(outfile)
777 _api.check_in_list(['.html', '.htm'], outfile_extension=outfile.suffix)
778
779 self._saved_frames = []
780 self._total_bytes = 0
781 self._hit_limit = False
782
783 if not self.embed_frames:
784 if frame_dir is None:
785 frame_dir = outfile.with_name(outfile.stem + '_frames')
786 frame_dir.mkdir(parents=True, exist_ok=True)
787 frame_prefix = frame_dir / 'frame'
788 else:
789 frame_prefix = None
790
791 super().setup(fig, outfile, dpi, frame_prefix)
792 self._clear_temp = False
793
794 def grab_frame(self, **savefig_kwargs):
795 _validate_grabframe_kwargs(savefig_kwargs)
796 if self.embed_frames:
797 # Just stop processing if we hit the limit
798 if self._hit_limit:
799 return
800 f = BytesIO()
801 self.fig.savefig(f, format=self.frame_format,
802 dpi=self.dpi, **savefig_kwargs)
803 imgdata64 = base64.encodebytes(f.getvalue()).decode('ascii')
804 self._total_bytes += len(imgdata64)

Callers 1

to_jshtmlMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…