Happy New Year to you as well! I see now where part of the confusion lies -- even though you have specified the WxAgg backend, the Wx backend is being used for the printing. Though I didn't write this code, I assume this is by design -- WxAgg can only generate bitmaps, and we don't want to use those for printing. Unfortunately, Wx (non-Agg) has some limitations, as you've discovered. (For a list of the limitations, see http://matplotlib.sourceforge.net/backends.html). Given all those shortcomings, you may be better off generating a Postscript file and then send that to lpr. That should work on most modern Linux distributions even without a Postscript printer. You can do:
savefig("foo.ps") to use the matplotlib built-in Postscript backend. As for your other questions --> 1. You cannot set orientation to LANDSCAPE, it seems "SetOrientation" does not work. 2. When you set LANDSCAPE manually, only lower half part will be printed. I can't reproduce this. Your included example seems to produce correct LANDSCAPE pages for me. These are my relevant versions -- what are yours? wxPython: 2.8.6.1 gtk+: 2.10.9 RHEL4 3. Printing quality is far much worse than Windows's printing. I can confirm that the Postscript generated by Wx is storing a bitmap, and not vector data. This is probably the source of the quality loss. I can't quite figure out why this is happening, but I have experienced similar problems with another Wx project. Perhaps that's an inherent limitation of Wx printing? In any case, it's a little bit below the level of matplotlib, so perhaps a question on the wxPython mailing list would help... But my suggested workaround -- generating a Postscript file using matplotlib's built-in Postscript support, instead of the Wx printing framework -- and then printing that may be a better option for you. Cheers, Mike Johann Cohen-Tanugi wrote: > hi Mike, > no it is WxAgg, the code is here: > ----- > import wx > import os > import matplotlib > matplotlib.use('WxAgg') > from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as > FigCanvas > from matplotlib.figure import Figure > import matplotlib.numerix as numpy > > class PlotFrame(wx.Frame): > def __init__(self): > wx.Frame.__init__(self, None, -1, "Test Printing with WX Backend") > self.fig = Figure(None, 100) > self.canvas= FigCanvas(self, -1, self.fig) > self.axes = self.fig.add_axes([0.15,0.15,0.75,0.75]) > sizer = wx.BoxSizer(wx.VERTICAL) > sizer.Add(self.canvas, 1, wx.LEFT|wx.TOP|wx.GROW) > self.Fit() > self.Plot_Data() > > def Print_Data(self): > self.canvas.printerData.SetPaperId(wx.PAPER_A4) > self.canvas.printerData.SetOrientation(wx.LANDSCAPE) > dpi = self.canvas.figure.dpi.get() > self.canvas.figure.dpi.set(200) > self.canvas.Printer_Print() > self.canvas.figure.dpi.set(dpi) > self.canvas.draw() > > def Plot_Data(self): > t = numpy.arange(0.0,5.0,0.01) > s = numpy.sin(2.0*numpy.pi*t) > c = numpy.cos(0.4*numpy.pi*t) > self.axes.plot(t,s) > self.axes.plot(t,c) > > if __name__ == '__main__': > app = wx.PySimpleApp() > fig = PlotFrame() > fig.Show(True) > fig.Print_Data() > app.MainLoop() > --------------------- > > But you got a point with usetex : I set it to False and then no more > traceback, though the preview indicates that LANDSCAPE mode was not > applied. > So : WxAgg seems to have issues with usetex=True, and LANDSCAPE request > does not seem to be honored... I am using svn revision 4797. > > best, and happy New Year! > Johann > > Michael Droettboom wrote: >> From the traceback, it looks as if you are using the Wx backend, not >> the WxAgg backend, and you are using "usetex" (text rendering using >> (La)TeX). The Wx backend does not support usetex -- the WxAgg backend >> does. Check your matplotlibrc or your matplotlib.use command and make >> sure you're selecting the WxAgg backend. >> >> Cheers, >> Mike >> -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users