Skip to content

Commit 751c9af

Browse files
authored
Merge pull request matplotlib#9124 from anntzer/savefig
MNT: Use savefig instead of print_figure in GUIs when save button is pressed
2 parents 83fa71f + 9bc08c2 commit 751c9af

File tree

11 files changed

+49
-60
lines changed

11 files changed

+49
-60
lines changed

examples/api/agg_oo_sgskip.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,21 @@
33
The object-oriented interface
44
=============================
55
6-
A pure OO (look Ma, no pylab!) example using the agg backend
7-
6+
A pure OO (look Ma, no pyplot!) example using the agg backend.
87
"""
8+
99
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
1010
from matplotlib.figure import Figure
1111

1212
fig = Figure()
13-
canvas = FigureCanvas(fig)
13+
# A canvas must be manually attached to the figure (pyplot would automatically
14+
# do it). This is done by instanciating the canvas with the figure as
15+
# argument.
16+
FigureCanvas(fig)
1417
ax = fig.add_subplot(111)
1518
ax.plot([1, 2, 3])
1619
ax.set_title('hi mom')
1720
ax.grid(True)
1821
ax.set_xlabel('time')
1922
ax.set_ylabel('volts')
20-
canvas.print_figure('test')
23+
fig.savefig('test')

examples/misc/hyperlinks_sgskip.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
f = plt.figure()
2121
s = plt.scatter([1, 2, 3], [4, 5, 6])
2222
s.set_urls(['http://www.bbc.co.uk/news', 'http://www.google.com', None])
23-
f.canvas.print_figure('scatter.svg')
23+
f.savefig('scatter.svg')
2424

2525
###############################################################################
2626

@@ -36,4 +36,4 @@
3636
origin='lower', extent=[-3, 3, -3, 3])
3737

3838
im.set_url('http://www.google.com')
39-
f.canvas.print_figure('image.svg')
39+
f.savefig('image.svg')

examples/user_interfaces/embedding_webagg_sgskip.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def get(self, fmt):
153153
self.set_header('Content-Type', mimetypes.get(fmt, 'binary'))
154154

155155
buff = io.BytesIO()
156-
manager.canvas.print_figure(buff, format=fmt)
156+
manager.canvas.figure.savefig(buff, format=fmt)
157157
self.write(buff.getvalue())
158158

159159
class WebSocket(tornado.websocket.WebSocketHandler):

lib/matplotlib/backend_bases.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2303,7 +2303,7 @@ def get_default_filename(self):
23032303
default_filetype = self.get_default_filetype()
23042304
default_filename = default_basename + '.' + default_filetype
23052305

2306-
save_dir = os.path.expanduser(rcParams.get('savefig.directory', ''))
2306+
save_dir = os.path.expanduser(rcParams['savefig.directory'])
23072307

23082308
# ensure non-existing filename in save dir
23092309
i = 1

lib/matplotlib/backends/backend_gtk.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,7 @@ def get_filechooser(self):
707707
fc = FileChooserDialog(
708708
title='Save the figure',
709709
parent=self.win,
710-
path=os.path.expanduser(rcParams.get('savefig.directory', '')),
710+
path=os.path.expanduser(rcParams['savefig.directory']),
711711
filetypes=self.canvas.get_supported_filetypes(),
712712
default_filetype=self.canvas.get_default_filetype())
713713
fc.set_current_name(self.canvas.get_default_filename())
@@ -718,15 +718,12 @@ def save_figure(self, *args):
718718
fname, format = chooser.get_filename_from_user()
719719
chooser.destroy()
720720
if fname:
721-
startpath = os.path.expanduser(rcParams.get('savefig.directory', ''))
722-
if startpath == '':
723-
# explicitly missing key or empty str signals to use cwd
724-
rcParams['savefig.directory'] = startpath
725-
else:
726-
# save dir for next time
727-
rcParams['savefig.directory'] = os.path.dirname(six.text_type(fname))
721+
# Save dir for next time, unless empty str (i.e., use cwd).
722+
if startpath != "":
723+
rcParams['savefig.directory'] = (
724+
os.path.dirname(six.text_type(fname)))
728725
try:
729-
self.canvas.print_figure(fname, format=format)
726+
self.canvas.figure.savefig(fname, format=format)
730727
except Exception as e:
731728
error_msg_gtk(str(e), parent=self)
732729

lib/matplotlib/backends/backend_gtk3.py

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ def get_filechooser(self):
561561
fc = FileChooserDialog(
562562
title='Save the figure',
563563
parent=self.win,
564-
path=os.path.expanduser(rcParams.get('savefig.directory', '')),
564+
path=os.path.expanduser(rcParams['savefig.directory']),
565565
filetypes=self.canvas.get_supported_filetypes(),
566566
default_filetype=self.canvas.get_default_filetype())
567567
fc.set_current_name(self.canvas.get_default_filename())
@@ -572,15 +572,13 @@ def save_figure(self, *args):
572572
fname, format = chooser.get_filename_from_user()
573573
chooser.destroy()
574574
if fname:
575-
startpath = os.path.expanduser(rcParams.get('savefig.directory', ''))
576-
if startpath == '':
577-
# explicitly missing key or empty str signals to use cwd
578-
rcParams['savefig.directory'] = startpath
579-
else:
580-
# save dir for next time
581-
rcParams['savefig.directory'] = os.path.dirname(six.text_type(fname))
575+
startpath = os.path.expanduser(rcParams['savefig.directory'])
576+
# Save dir for next time, unless empty str (i.e., use cwd).
577+
if startpath != "":
578+
rcParams['savefig.directory'] = (
579+
os.path.dirname(six.text_type(fname)))
582580
try:
583-
self.canvas.print_figure(fname, format=format)
581+
self.canvas.figure.savefig(fname, format=format)
584582
except Exception as e:
585583
error_msg_gtk(str(e), parent=self)
586584

@@ -814,7 +812,7 @@ def get_filechooser(self):
814812
fc = FileChooserDialog(
815813
title='Save the figure',
816814
parent=self.figure.canvas.manager.window,
817-
path=os.path.expanduser(rcParams.get('savefig.directory', '')),
815+
path=os.path.expanduser(rcParams['savefig.directory']),
818816
filetypes=self.figure.canvas.get_supported_filetypes(),
819817
default_filetype=self.figure.canvas.get_default_filetype())
820818
fc.set_current_name(self.figure.canvas.get_default_filename())
@@ -825,8 +823,7 @@ def trigger(self, *args, **kwargs):
825823
fname, format_ = chooser.get_filename_from_user()
826824
chooser.destroy()
827825
if fname:
828-
startpath = os.path.expanduser(
829-
rcParams.get('savefig.directory', ''))
826+
startpath = os.path.expanduser(rcParams['savefig.directory'])
830827
if startpath == '':
831828
# explicitly missing key or empty str signals to use cwd
832829
rcParams['savefig.directory'] = startpath

lib/matplotlib/backends/backend_macosx.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ def save_figure(self, *args):
192192
self.canvas.get_default_filename())
193193
if filename is None: # Cancel
194194
return
195-
self.canvas.print_figure(filename)
195+
self.canvas.figure.savefig(filename)
196196

197197
def prepare_configure_subplots(self):
198198
toolfig = Figure(figsize=(6,3))

lib/matplotlib/backends/backend_qt5.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -725,8 +725,8 @@ def save_figure(self, *args):
725725
sorted_filetypes = sorted(six.iteritems(filetypes))
726726
default_filetype = self.canvas.get_default_filetype()
727727

728-
startpath = matplotlib.rcParams.get('savefig.directory', '')
729-
startpath = os.path.expanduser(startpath)
728+
startpath = os.path.expanduser(
729+
matplotlib.rcParams['savefig.directory'])
730730
start = os.path.join(startpath, self.canvas.get_default_filename())
731731
filters = []
732732
selectedFilter = None
@@ -742,15 +742,12 @@ def save_figure(self, *args):
742742
"Choose a filename to save to",
743743
start, filters, selectedFilter)
744744
if fname:
745-
if startpath == '':
746-
# explicitly missing key or empty str signals to use cwd
747-
matplotlib.rcParams['savefig.directory'] = startpath
748-
else:
749-
# save dir for next time
750-
savefig_dir = os.path.dirname(six.text_type(fname))
751-
matplotlib.rcParams['savefig.directory'] = savefig_dir
745+
# Save dir for next time, unless empty str (i.e., use cwd).
746+
if startpath != "":
747+
matplotlib.rcParams['savefig.directory'] = (
748+
os.path.dirname(six.text_type(fname)))
752749
try:
753-
self.canvas.print_figure(six.text_type(fname))
750+
self.canvas.figure.savefig(six.text_type(fname))
754751
except Exception as e:
755752
QtWidgets.QMessageBox.critical(
756753
self, "Error saving file", six.text_type(e),

lib/matplotlib/backends/backend_tkagg.py

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -768,8 +768,7 @@ def save_figure(self, *args):
768768
# work - JDH!
769769
#defaultextension = self.canvas.get_default_filetype()
770770
defaultextension = ''
771-
initialdir = rcParams.get('savefig.directory', '')
772-
initialdir = os.path.expanduser(initialdir)
771+
initialdir = os.path.expanduser(rcParams['savefig.directory'])
773772
initialfile = self.canvas.get_default_filename()
774773
fname = tkinter_tkfiledialog.asksaveasfilename(
775774
master=self.window,
@@ -780,20 +779,17 @@ def save_figure(self, *args):
780779
initialfile=initialfile,
781780
)
782781

783-
if fname == "" or fname == ():
782+
if fname in ["", ()]:
784783
return
785-
else:
786-
if initialdir == '':
787-
# explicitly missing key or empty str signals to use cwd
788-
rcParams['savefig.directory'] = initialdir
789-
else:
790-
# save dir for next time
791-
rcParams['savefig.directory'] = os.path.dirname(six.text_type(fname))
792-
try:
793-
# This method will handle the delegation to the correct type
794-
self.canvas.print_figure(fname)
795-
except Exception as e:
796-
tkinter_messagebox.showerror("Error saving file", str(e))
784+
# Save dir for next time, unless empty str (i.e., use cwd).
785+
if initialdir != "":
786+
rcParams['savefig.directory'] = (
787+
os.path.dirname(six.text_type(fname)))
788+
try:
789+
# This method will handle the delegation to the correct type
790+
self.canvas.figure.savefig(fname)
791+
except Exception as e:
792+
tkinter_messagebox.showerror("Error saving file", str(e))
797793

798794
def set_active(self, ind):
799795
self._ind = ind
@@ -984,8 +980,7 @@ def trigger(self, *args):
984980
# work - JDH!
985981
# defaultextension = self.figure.canvas.get_default_filetype()
986982
defaultextension = ''
987-
initialdir = rcParams.get('savefig.directory', '')
988-
initialdir = os.path.expanduser(initialdir)
983+
initialdir = os.path.expanduser(rcParams['savefig.directory'])
989984
initialfile = self.figure.canvas.get_default_filename()
990985
fname = tkinter_tkfiledialog.asksaveasfilename(
991986
master=self.figure.canvas.manager.window,
@@ -1008,7 +1003,7 @@ def trigger(self, *args):
10081003
six.text_type(fname))
10091004
try:
10101005
# This method will handle the delegation to the correct type
1011-
self.figure.canvas.print_figure(fname)
1006+
self.figure.savefig(fname)
10121007
except Exception as e:
10131008
tkinter_messagebox.showerror("Error saving file", str(e))
10141009

lib/matplotlib/backends/backend_webagg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def get(self, fignum, fmt):
151151
self.set_header('Content-Type', mimetypes.get(fmt, 'binary'))
152152

153153
buff = six.BytesIO()
154-
manager.canvas.print_figure(buff, format=fmt)
154+
manager.canvas.figure.savefig(buff, format=fmt)
155155
self.write(buff.getvalue())
156156

157157
class WebSocket(tornado.websocket.WebSocketHandler):

0 commit comments

Comments
 (0)