[Possible BUG:] SVG renderer;

Hello,

I’ve just encountered the same situation with SVG rendering where I repeatedly generate a changed SVG plot and only the first time does it render properly. I traced the problem to the SVG renderer failing to include “ClipPath” information in generated SVG files after the first one, and fixed it in my case by changing backend_svg.RendererSVG to deal with _clipd as self._clipd in both its init method (i.e., initialized to {}) and its _get_gc_clip_svg method (i.e., _clipd changed to self._clipd). Just before RendererSVG is defined, _clipd is declared as a module-scope entity, and this is the problem, so comment it out…

If anyone is interested in my modified backend_svg.py please let me know where to send it.

Regards,

Norm Petterson

···

----- Original Message -----

From:
Haibao Tang

To: matplotlib-users@…431…ists.sourceforge.net

Sent: Monday, December 06, 2004 4:55 PM

Subject: [Matplotlib-users] [Possible BUG:] SVG renderer;

Hi, I’ve run into a problem using matplotlib renderer to generate files. My example is huge, so I implement it in another way to give the idea.

  • o - o - o - o - o - o - o - o - o - o - o - o - o - o

from matplotlib.matlab import *

def draw_box(i):
root = axes([0,0,1,1])
root.bar(.2,.5,.5,.2)
root.text(.2, .1, “Give me a box %02i”%i)
xlim(0,1)
ylim(0,1)
savefig(“c:\svg\%02i.svg”%i)

for i in xrange(1,10):
clf()
draw_box(i)

  • o - o - o - o - o - o - o - o - o - o - o - o - o - o

The resulting files are generated, yet except the first one, all the rest miss the bar();

BUT, if I change the format to .png, no problem exists.

Is it a bug? or am I doing it right?

Much appreciated if you can point the problem out.

Bao