On Wed, Dec 17, 2008 at 1:07 PM, Jae-Joon Lee <lee.j.joon@...> wrote:
> On Wed, Dec 17, 2008 at 9:09 AM, Ken Schutte <kts.lists@...> wrote:
> > On Wed, Dec 17, 2008 at 1:49 AM, Jae-Joon Lee <lee.j.joon@...>
> wrote:
> >>
> >> This is a correct way indeed.
> >> I believe that you considered it as a plain line because the arrow
> >> head is too small.
> >> You need to adjust the mutation_scale parameter. Try
> >>
> >> c = matplotlib.patches.FancyArrowPatch((0.2, 0.2), (0.5, 0.5),
> >> arrowstyle="->", mutation_scale=20.)
> >>
> >> Maybe the defaults need to be changed.
> >
> > Great. Is there a way to draw filled in arrow heads?
> >
> > I'm thinking of arrows like those made by graphviz, such as,
> > http://www.graphviz.org/Gallery/directed/fsm.html
> >
> > The closest I can seem to get is like this,
> > c = matplotlib.patches.FancyArrowPatch((0.2, 0.2), (0.5, 0.5),
> > arrowstyle="simple", linewidth=0.1, fc='k',mutation_scale=20.)
> >
> > (a) I don't know if this is possible if the whole arrow is implemented as
> a
> > single polygon (i.e. to draw line with a triangle head), and (b) I'm a
> bit
> > confused about the kwargs to the different things like axes.arrow,
> > FancyArrowPatch, ArrowStyle, etc. (for example, arrow takes 'headwidth',
> > but FancyArrowPatch does not.).
> >
>
> (a) As of now, there is no arrowclass that meets your need. The arrow
> is implemented as a single path, and it IS still possible to draw a
> line+a triangle. But, the artist only has a single "fill" mode and it
> is impossible to fill only a part of the path. It may be relatively
> easy to support. I'll take a look into it.
>
>
> (b) The FancyArrowPatch was very recently introduced and it's argument
> is not consistent with previous ones (Arrow,FancyArrow, YAArrow).
> Unlike other classes, FancyArrowPatch itself does not know how to draw
> an arrow. It delegates it to ArrowStyle. So, If you want to use
> FancyArrowPatch, "headwidth" should be given to ArrowStyle not to
> FancyArrowPatch itself. I agree this can be a bit confusing, but all
> the arrow-related parameters should be given to the style class.
>
> Take a look at "annotation_demo2.py" and see how it specifies the
> arrowstyle (and also connectionstyle). The 'arrowprops' parameter in
> the annotate function is mostly consumed by FancyArrowPatch class.
>
> Regards,
>
> -JJ
>
Thanks for the reply. I will be taking a look at the code, and if I come up
with anything useful, I can post it. (It might be nice if eventually there
were extra styles, e.g. "-|>", "<|-|>" for single lines with solid
arrowheads).
Ken
|