On 2/5/07, Berthold Höllmann <[EMAIL PROTECTED]> wrote:

> I get a file 'test.eps'. Using matplotlib 0.87.7 the PS bounding box
> of the generated plot is far to wide. Is this a problem with my script
> or a Problem of FigureCanvasAgg (and FigureCanvasPS)? What can I do to
> get a tight bounding box?

This is a problem with the way PS computes the bounding box -- it uses
the bounding box of the Figure and ignores the fact that much of your
figure is whitespace.  It should compute the bounding box of the
visible figure elements, so this should be considered a bug.  To
workaround, you can set the figure size to be more like the size of
the content

  fig = Figure((3,7))  # set the width and height in inches
  canvas = FigureCanvas(fig)
  ax = fig.add_subplot(111)
  ax.plot([.5,.7],[1.5, 2.5])
  ax.add_artist(Rectangle((.5, 1.5), .2, 1, fill=False))
  ax.set_aspect("equal")
  canvas.print_figure('test.eps')

> Further, when I leave out the "ax.plot" line, the generated figure is
> missing the "Rectangle" and is showing only a pair of axes counting
> from 0 to 1. Is that a bug of matplotlib or something I have to fix in
> my script?

Use add_patch instead of add_artist.  add_artist is the most generic
method and Axes doesn't know how to query it's argument for it's data
limits, which it then feeds to the autoscaler.  If you use add_line to
add lines.Line2D and add_patch to add patches.Patch instances, then
Axes will know how to introspect them and update the autoscaler.  But
you will need to explicitly call "autoscale_view" before saving.
Something like

  ax = fig.add_subplot(111)
  ax.add_patch(Rectangle((.5, 1.5), .2, 1, edgecolor='red', fill=False))
  ax.set_aspect("equal")
  ax.autoscale_view()
  canvas.print_figure('test.eps')

Note if all you are doing is creating postscript, you don't need to
import Agg at all.  Just do

  from matplotlib.backends.backend_ps import FigureCanvasPS as FigureCanvas

JDH

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to