# No fillalpha after eps export?

Hey guys,

this is a slightly modified example from the sage help pages:

(plot(1+e^(-x^2), xmin=-2, xmax=2, ymin=0, ymax=2.5, fill=0.5, fillcolor='green', fillalpha=0.5)).save('t.eps')

It shows an exponential function which is filled from below by green color. The option fillalpha=0.5 should make this filling slightly transparent, which works perfectly when exporting to pdf, but repdroducably fails when exporting to eps. Is there any workaround?

edit retag close merge delete

Sort by » oldest newest most voted

Hi,

Not really a sage solution and far from optimal. You can try

sage: P=plot(1+e^(-x^2), xmin=-2, xmax=2, ymin=0, ymax=2.5, fill=0.5, fillcolor='green', fillalpha=0.5)
sage: P.save( 't.pdf')


And then

$pdftops t.pdf$ ps2eps t.ps

more

Long story short, (e)ps does not properly support alpha. So, this is probably the best solution at present. There is no automatic way to make figures with alpha in (e)ps.

( 2013-02-09 10:02:14 +0200 )edit

The problem is in our Polygon class - somehow it's not saving correctly. Compare these.

sage: polygon([(0,0), (1,1), (0,1)],alpha=.1).save('test.pdf')
sage: polygon([(0,0), (1,1), (0,1)],alpha=.1).save('test.eps')


If I can narrow it down a little more, I'll open a ticket. It's conceivable that it's a matplotlib issue, but I'd guess it's ours first.

more

See http://trac.sagemath.org/sage_trac/ticket/14074 - my guess is still that we are doing something wrong, but it could be an mpl bug, in principle.

( 2013-02-06 21:11:59 +0200 )edit

I have updated the ticket after opening an upstream mpl bug https://github.com/matplotlib/matplotlib/issues/1740

( 2013-02-08 04:11:36 +0200 )edit

And now matplotlib says this is actually not supported by ps.

( 2013-02-08 10:02:17 +0200 )edit

That is not correct. eps supports alpha channels. Here's proof: http://ompldr.org/vaGViZg/drawing.eps Ok. It is not so clear whether ps really really supports alpha. Some libraries use some tricks to get in some alpha support.

( 2013-02-08 10:34:04 +0200 )edit