|
From: John H. <jd...@gm...> - 2012-07-14 16:49:14
|
I do not understand why in the following example, if I set patch_alpha=1.0,
I do not see the shadow effect. I would expect to see it for the the
rightmost four bars, where the original bars do not entirely occlude the
shadow, so even if alpha is 1.0, there are parts of the shadow that are not
behind the original bars and should still be visible.
import matplotlib.pyplot as plt
import matplotlib.patheffects as PathEffects
import numpy as np
np.random.seed(2358)
fig = plt.figure()
# sime bar shadows
x = np.random.randn(1000)
n, bins, patches = plt.hist(x, bins=7)
shadow = PathEffects.withSimplePatchShadow(offset_xy=(10,-10),
patch_alpha=0.8, shadow_rgbFace=(0.25,0.25,0.25))
for p in patches:
p.set_path_effects([shadow])
plt.show()
|
|
From: John H. <jd...@gm...> - 2012-07-14 16:55:11
|
On Sat, Jul 14, 2012 at 11:48 AM, John Hunter <jd...@gm...> wrote: > I do not understand why in the following example, if I set > patch_alpha=1.0, I do not see the shadow effect. I would expect to see it > for the the rightmost four bars, where the original bars do not entirely > occlude the shadow, so even if alpha is 1.0, there are parts of the shadow > that are not behind the original bars and should still be visible. > > > I now see that this line explains the behavior https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/patheffects.py#L183 gc0.set_alpha(1.-self._patch_alpha) so maybe I should amend my question: is this desirable that the shadow alpha is 1-patch_alpha, since an alpha of 1 on the patch does not imply that there is no visible shadow? |
|
From: Jae-Joon L. <lee...@gm...> - 2012-07-17 17:17:33
|
I think it is me who put that code there. But I cannot recall why I did it. I may have copied that behavior from other code, but cannot find which. Yes, I agree that the current behavior is not very desirable. So, anyone who have an idea how this should behave, please go ahead and fix this. Regards, -JJ On Sun, Jul 15, 2012 at 1:54 AM, John Hunter <jd...@gm...> wrote: > > > On Sat, Jul 14, 2012 at 11:48 AM, John Hunter <jd...@gm...> wrote: >> >> I do not understand why in the following example, if I set >> patch_alpha=1.0, I do not see the shadow effect. I would expect to see it >> for the the rightmost four bars, where the original bars do not entirely >> occlude the shadow, so even if alpha is 1.0, there are parts of the shadow >> that are not behind the original bars and should still be visible. >> >> > > > I now see that this line explains the behavior > > https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/patheffects.py#L183 > > gc0.set_alpha(1.-self._patch_alpha) > > so maybe I should amend my question: is this desirable that the shadow alpha > is 1-patch_alpha, since an alpha of 1 on the patch does not imply that there > is no visible shadow? > > |
|
From: Benjamin R. <ben...@ou...> - 2012-07-14 20:09:55
|
On Saturday, July 14, 2012, John Hunter wrote:
>
>
> On Sat, Jul 14, 2012 at 11:48 AM, John Hunter <jd...@gm...<javascript:_e({}, 'cvml', 'jd...@gm...');>
> > wrote:
>
>> I do not understand why in the following example, if I set
>> patch_alpha=1.0, I do not see the shadow effect. I would expect to see it
>> for the the rightmost four bars, where the original bars do not entirely
>> occlude the shadow, so even if alpha is 1.0, there are parts of the shadow
>> that are not behind the original bars and should still be visible.
>>
>>
>>
>
> I now see that this line explains the behavior
>
>
> https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/patheffects.py#L183
>
> gc0.set_alpha(1.-self._patch_alpha)
>
> so maybe I should amend my question: is this desirable that the shadow
> alpha is 1-patch_alpha, since an alpha of 1 on the patch does not imply
> that there is no visible shadow?
>
>
I would argue that the shadow's alpha should equal the patch's alpha. The
more opaque the patch, the less light that should get through. Could there
have been an alpha blending reason for this?
Ben Root
|
|
From: Damon M. <dam...@gm...> - 2012-07-14 20:18:49
|
On Sat, Jul 14, 2012 at 04:09:48PM -0400, Benjamin Root wrote:
> On Saturday, July 14, 2012, John Hunter wrote:
>
> >
> >
> > On Sat, Jul 14, 2012 at 11:48 AM, John Hunter <jd...@gm...<javascript:_e({}, 'cvml', 'jd...@gm...');>
> > > wrote:
> >
> >> I do not understand why in the following example, if I set
> >> patch_alpha=1.0, I do not see the shadow effect. I would expect to see it
> >> for the the rightmost four bars, where the original bars do not entirely
> >> occlude the shadow, so even if alpha is 1.0, there are parts of the shadow
> >> that are not behind the original bars and should still be visible.
> >>
> >>
> >>
> >
> > I now see that this line explains the behavior
> >
> >
> > https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/patheffects.py#L183
> >
> > gc0.set_alpha(1.-self._patch_alpha)
> >
> > so maybe I should amend my question: is this desirable that the shadow
> > alpha is 1-patch_alpha, since an alpha of 1 on the patch does not imply
> > that there is no visible shadow?
> >
> >
>
> I would argue that the shadow's alpha should equal the patch's alpha. The
> more opaque the patch, the less light that should get through. Could there
I am inclined to agree here. Should it instead be:
gc0.set_alpha(self._patch_alpha)?
> have been an alpha blending reason for this?
>
> Ben Root
--
Damon McDougall
http://damon-is-a-geek.com
B2.39
Mathematics Institute
University of Warwick
Coventry
West Midlands
CV4 7AL
United Kingdom
|