It sounds like you were using the right approach, you just got a bit lost
on what some of the keyword parameters to annotate, etc do.

Here's an example that should do what you want:

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

fig, ax = plt.subplots()

# Set the axis limits as you wanted...
ax.set_ylim([-0.6, 1.1])

# Set major and minor tick intervals
# We could just set the tick locations manually, but this way you'll keep
the
# same intervals when you zoom/pan/etc.
ax.yaxis.set_major_locator(MultipleLocator(1))
ax.yaxis.set_minor_locator(MultipleLocator(0.1))

# Make the bottom spine "float" instead of being at the bottom of the plot
ax.spines['bottom'].set_position(('data', 0))

# Hide the top and right spines (Similar to your sketch)
for position in ['right', 'top']:
    ax.spines[position].set_visible(False)

# Turn off the top, right, and bottom major and minor ticks (as in your
sketch)
ax.tick_params(which='both', top=False, right=False, bottom=False,
               labelbottom=False)

# Draw a 15 point long arrow that will always be at the top-left corner of
# the axes.  The key is that we're specifying a location of (0,1) in
# "axes fraction" coordinates.  We then place an empty text string 15
_points_
# above this (the `xytext` parameter controls the amount, `textcoords`
controls
# how it's interpreted).  Then, we draw an arrow connecting the top left
corner
# of the axes to the (empty and not drawn) text string.
ax.annotate('', xy=(0,1), xycoords='axes fraction', xytext=(0,15),
            textcoords='offset points', ha='center',
            arrowprops=dict(arrowstyle='<|-', shrinkA=0, shrinkB=0,
                           facecolor='black'))
plt.show()


Hope that helps!
-Joe

On Fri, Jun 15, 2012 at 7:34 AM, Asbach, Mark <
mark.asb...@iais.fraunhofer.de> wrote:

>  Hi there,
>
> I'm sorry to ask such a newbie question, but I'd like to format a custom
> box plot and although there are numerous examples on the web and tons of
> docstrings in matplotlib, I'm stuck somehow. My problems center around axes
> / spines. In detail, my problems are:
>
> 1) I want an y-axis on the left that spans from -0.6 to 1.1, ends in an
> arrow, has major ticks at 0 and 1 and minor ticks at [0.1...0.9]
> As far as I understand, there is no option to let spines end in an arrow
> head, so I have to draw the myself. I get the ticks to appear at the right
> positions and the y-range to be as desired - however, the spine line is not
> drawn over the full y-range, but only where there is data in the diagram.
> Also, I copied the arrow annotation code blindly from an older post on this
> list, but do not understand how I can adapt the arrow head to appear at a
> data position (instead of at the corner of the Axes area). One problem is,
> that I get ticks on the right although that spine was disabled.
>
> 2) I want some kind of x-axis at y==0, without ticks and without arrow
> Using some methods on the spines, I can disable the top spine and move the
> bottom spine to zero. However, as with the y-axis, I cannot control from
> where to where the line itself is drawn.
>
> As attachments, you'll find a hand sketch of what my graph should look
> like and matplotlib code that goes nearly all the way.
>
> I would be very happy about a hint on how to fix the problems left.
>
> Thanks an advance,
> Mark
>
>
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to