Dear Martin,

I worked out a similar example for your reference as I don't catch your
example very well.

fig =
plt.figure()
ax1 =
fig.add_subplot(211)
ax2 =
fig.add_subplot(212)
arrlist = [np.random.normal(size=100) for i in
range(50)]
ret =
ax1.hist(arrlist,histtype='barstacked')
reclist = [patchlist[0] for patchlist in
ret[2]]
labellist = ['data'+str(i) for i in
range(50)]
ax2.legend(reclist,labellist,loc='upper
left',bbox_to_anchor=(0,0,1,1),borderaxespad=0.,ncol=5,mode='expand')
ax2.set_frame_on(False)

ax2.tick_params(bottom='off',left='off',right='off',top='off')

plt.setp(ax2.get_yticklabels(),visible=False)

plt.setp(ax2.get_xticklabels(),visible=False)


you're asking some object-oriented way, I personally don't think using
pylab and set_tight_layout are the good way
to be "object-oriented" as pylab is only a bounding wrapper by my
understanding (maybe I am wrong!). legend and
hist are all matplotlib.axes.Axes method.

Also, I think it's unrealistic to ask the figure do a nice job for you if
there are 50 legned handlers and you want to show
them in 2 columns with a very high width/height ratio of the figure....

hope it could be of a bit help,

cheers,

Chao


On Mon, May 20, 2013 at 6:43 PM, Martin Mokrejs [via matplotlib] <
ml-node+s1069221n41090...@n5.nabble.com> wrote:

> Hi Ben,
>
> Benjamin Root wrote:
>
> >
> >
> >
> > On Mon, May 20, 2013 at 12:02 PM, Martin Mokrejs <[hidden 
> > email]<http://user/SendEmail.jtp?type=node&node=41090&i=0><mailto:[hidden
> email] <http://user/SendEmail.jtp?type=node&node=41090&i=1>>> wrote:
> >
> >     Hi,
> >       I am having trouble to get space allocated for a long legend text,
> >     lets say spanning 2/3 - 3/4 of the whole output. I would like to
> have
> >     stacked barchart as 1st subplot and the place of remaining 3
> subplots
> >     to be actually allocated by the legend. Alternatively, could I get
> the
> >     legend saved into a separate figure?
> >
> >     Or could the space for legend text be allocated automatically
> minimizing
> >     output figure size? For example, the width would be 1120px while
> height
> >     be multiples of 840px (840 for each subplot)?
> >
> >       Attached is a quick example. It shows also that I tried
> tight_layout()
> >     but wasn't successful with this either. I would be glad for some
> help,
> >     ideally converting the whole thing into an object-oriented approach.
> >     I am generating several figures in a row and would like to
> clear()/del()
> >     any previously used data ASAP.
> >
> >
> >     Thank you,
> >     Martin
> >     Am using mpl-1.2.2
> >
> >
> > Try "fig.savefig('foobar.png', bbox_inches='tight')" when saving the
> > image. It will make the figure size such that all the visible
> > elements of the figure will fit into the saved output. tight_layout()
> > is meant to make sure the elements don't overlap each other, but does
> > nothing about making sure nothing gets clipped.
> Ah, would be nice to make this clear in the docs. So far was doing
>
>
> import pylab
> F = pylab.gcf()
> F.set_tight_layout(True)
>
> which as you say does not help the way I thought.
>
>
> Unfortunately, while
>
> fig.savefig('foobar.png', bbox_inches='tight')
>
> helped to get everything into the .png file (attached), the barchart
> itself
> should span according to the code I posted just 1/2 of the figure. But
> somehow
> it is enlarged and rescaled so that it occupies *more than* 1/2 of the
> figure.
> What in pylab is resizing my image? Note: the final image is 625x1075.
>
> Martin
>
> ------------------------------------------------------------------------------
>
> AlienVault Unified Security Management (USM) platform delivers complete
> security visibility with the essential security capabilities. Easily and
> efficiently configure, manage, and operate all of your security controls
> from a single console and one unified framework. Download a free trial.
> http://p.sf.net/sfu/alienvault_d2d
> _______________________________________________
> Matplotlib-users mailing list
> [hidden email] <http://user/SendEmail.jtp?type=node&node=41090&i=2>
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
> *foobar.png* (132K) Download 
> Attachment<http://matplotlib.1069221.n5.nabble.com/attachment/41090/0/foobar.png>
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://matplotlib.1069221.n5.nabble.com/Making-space-for-a-long-legend-outside-of-a-barchart-tp41088p41090.html
>  To start a new topic under matplotlib - users, email
> ml-node+s1069221n...@n5.nabble.com
> To unsubscribe from matplotlib, click 
> here<http://matplotlib.1069221.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=2&code=Y2hhb3l1ZWpveUBnbWFpbC5jb218MnwxMzg1NzAzMzQx>
> .
> NAML<http://matplotlib.1069221.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>



-- 
***********************************************************************************
Chao YUE
Laboratoire des Sciences du Climat et de l'Environnement (LSCE-IPSL)
UMR 1572 CEA-CNRS-UVSQ
Batiment 712 - Pe 119
91191 GIF Sur YVETTE Cedex
Tel: (33) 01 69 08 29 02; Fax:01.69.08.77.16
************************************************************************************




--
View this message in context: 
http://matplotlib.1069221.n5.nabble.com/Making-space-for-a-long-legend-outside-of-a-barchart-tp41088p41102.html
Sent from the matplotlib - users mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to