From: Eric F. <ef...@ha...> - 2010-04-30 08:55:20
|
T J wrote: > On Wed, Apr 28, 2010 at 12:22 PM, Eric Firing <ef...@ha...> wrote: >> It's a bug, made more confusing by the trickery that is done when printing a >> figure. DPI, facecolor, and edgecolor that are set for a figure object are >> used only for screen display, and are overridden when the figure is saved. >> The overriding values can be supplied to the savefig call or via rcParams. >> >> I think I have fixed the bug in svn, so that "transparent" will work as >> advertised. In addition, I made a change so that even with >> transparent=True, if you supply facecolor and/or edgecolor to the savefig >> call, those values should be used for the figure patch when the figure is >> saved. This might be useful if you want to keep the line around the figure, >> for example. >> > > This still does not work for me. I dug around a bit and found an > issue. Figure.savefig() sets the 'edgecolor' and 'facecolor' of the > axis patches but delegates the patches of the figure to the actual > print command. It does this by setting the edgecolor and facecolor > values in the kwargs dict. However, self.canvas.print_figure() > expects edgecolor and facecolor as args, not kwargs. So > print_figure() uses the default value: 'w' instead of 'none'. This is > a bit inconsistent, it seems, especially b/c the PS backend (which is > called after print_figure()) expects facecolor and edgecolor as > kwargs. I don't see this in the version as I changed it in svn r8282. Are you sure you installed and built from svn after I made the change? Using the attached script, I get the two attached (gzipped) eps files. The first with transparent=True, has no fill operations other than for generation of the glyphs; the second differs from the first in having two extra fill operations, one for the axes patch, the other for the figure patch. When I use your transeps.tex, run latex, and then dvips, the resulting ps file (also gzipped and attached) has the figure with a red background, sitting on a white page. I presume this is what you expect, and so the figure and axes really are transparent. Eric > > I went ahead and changed this, hoping it'd fix the issue, but it does > not. At least now, I can see that the edgecolor and facecolor are > both set to 'none' all the way until self.figure.draw(renderer) is > called. So somehow, the draw() command is unaffected by this still. > > What next? > > ------------------------------------------------------------------------------ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users |