Skip to content

Commit d6c3885

Browse files
committed
Add description for metadata argument of savefig
1 parent c552bdc commit d6c3885

File tree

3 files changed

+65
-4
lines changed

3 files changed

+65
-4
lines changed

lib/matplotlib/backends/backend_agg.py

+51-3
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ def restore_region(self, region, bbox=None, xy=None):
410410

411411
def draw(self):
412412
"""
413-
Draw the figure using the renderer
413+
Draw the figure using the renderer.
414414
"""
415415
self.renderer = self.get_renderer(cleared=True)
416416
# acquire a lock on the shared font cache
@@ -440,7 +440,7 @@ def get_renderer(self, cleared=False):
440440
return self.renderer
441441

442442
def tostring_rgb(self):
443-
'''Get the image as an RGB byte string
443+
'''Get the image as an RGB byte string.
444444
445445
`draw` must be called at least once before this function will work and
446446
to update the renderer for any subsequent changes to the Figure.
@@ -465,7 +465,7 @@ def tostring_argb(self):
465465
return self.renderer.tostring_argb()
466466

467467
def buffer_rgba(self):
468-
'''Get the image as an RGBA byte string
468+
'''Get the image as an RGBA byte string.
469469
470470
`draw` must be called at least once before this function will work and
471471
to update the renderer for any subsequent changes to the Figure.
@@ -485,6 +485,47 @@ def print_raw(self, filename_or_obj, *args, **kwargs):
485485
print_rgba = print_raw
486486

487487
def print_png(self, filename_or_obj, *args, **kwargs):
488+
"""
489+
Write the figure to a PNG file.
490+
491+
Parameters
492+
----------
493+
filename_or_obj : str or PathLike or file-like object
494+
The file to write to.
495+
496+
metadata : dict, optional
497+
Metadata in the PNG file as key-value pairs of bytes or latin-1
498+
encodable strings.
499+
According to the PNG specification, keys must be shorter than 79
500+
chars.
501+
502+
The `PNG specification`_ defines some common keywords that may be
503+
used as appropriate:
504+
505+
- Title: Short (one line) title or caption for image.
506+
- Author: Name of image's creator.
507+
- Description: Description of image (possibly long).
508+
- Copyright: Copyright notice.
509+
- Creation Time: Time of original image creation
510+
(usually RFC 1123 format).
511+
- Software: Software used to create the image.
512+
- Disclaimer: Legal disclaimer.
513+
- Warning: Warning of nature of content.
514+
- Source: Device used to create the image.
515+
- Comment: Miscellaneous comment;
516+
conversion from other image format.
517+
518+
Other keywords may be invented for other purposes.
519+
520+
If 'Software' is not given, an autogenerated value for matplotlib
521+
will be used.
522+
523+
For more details see the `PNG specification`_.
524+
525+
.. _PNG specification: \
526+
https://www.w3.org/TR/2003/REC-PNG-20031110/#11keywords
527+
528+
"""
488529
FigureCanvasAgg.draw(self)
489530
renderer = self.get_renderer()
490531

@@ -511,6 +552,13 @@ def print_to_buffer(self):
511552
# add JPEG support
512553
def print_jpg(self, filename_or_obj, *args, dryrun=False, **kwargs):
513554
"""
555+
Write the figure to a JPEG file.
556+
557+
Parameters
558+
----------
559+
filename_or_obj : str or PathLike or file-like object
560+
The file to write to.
561+
514562
Other Parameters
515563
----------------
516564
quality : int

lib/matplotlib/figure.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -1979,7 +1979,7 @@ def savefig(self, fname, *, frameon=None, transparent=None, **kwargs):
19791979
savefig(fname, dpi=None, facecolor='w', edgecolor='w',
19801980
orientation='portrait', papertype=None, format=None,
19811981
transparent=False, bbox_inches=None, pad_inches=0.1,
1982-
frameon=None)
1982+
frameon=None, metadata=None)
19831983
19841984
The output formats available depend on the backend being used.
19851985
@@ -2059,6 +2059,16 @@ def savefig(self, fname, *, frameon=None, transparent=None, **kwargs):
20592059
A list of extra artists that will be considered when the
20602060
tight bbox is calculated.
20612061
2062+
metadata : dict, optional
2063+
Key/value pairs to store in the image metadata. The supported keys
2064+
and defaults depend on the image format and backend:
2065+
2066+
- 'png' with Agg backend: See the parameter ``metadata`` of
2067+
`~.FigureCanvasAgg.print_png`.
2068+
- 'pdf' with pdf backend: See the parameter ``metadata`` of
2069+
`~.backend_pdf.PdfPages`.
2070+
- 'eps' and 'ps' with PS backend: Only 'Creator' is supported.
2071+
20622072
"""
20632073
kwargs.setdefault('dpi', rcParams['savefig.dpi'])
20642074
if frameon is None:

src/_png.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ const char *Py_write_png__doc__ =
128128
" - Comment: Miscellaneous comment; conversion\n"
129129
" from other image format\n"
130130
"\n"
131+
" For more details see the PNG specification:\n"
132+
" https://www.w3.org/TR/2003/REC-PNG-20031110/#11keywords\n"
133+
"\n"
131134
"Returns\n"
132135
"-------\n"
133136
"buffer : bytes or None\n"

0 commit comments

Comments
 (0)