MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Vertical tick labels in BarChart

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84092] Re: Vertical tick labels in BarChart
  • From: John Jowett <John.M.Jowett at gmail.com>
  • Date: Mon, 10 Dec 2007 04:35:14 -0500 (EST)
  • References: <fj8qal$jg5$1@smc.vnet.net> <fjavl3$rp3$1@smc.vnet.net>

Thanks sdw,
        This is a solution.  I didn't think of using FullGraphics.
One can make the rule apply more specifically with

ReplacePart[b, {1, 2} -> b[[1, 2]] /.
  Text[v_String, al_List, bl_List] ->
   Translate[Rotate[Text[v, {0, 0}, {1, 0}], \[Pi]/2, {0, 0}], al]]

or even by building a list of rules for the specific text labels that
are being used.
However I hope that a standard method for this will appear in due
course ...

To everyone who suggested horizontal bars:  Yes, in some cases
horizontal bars may look better but it's not really an option in my
application where vertical bars are traditional and people expect
them.    Also, these plots are often combined with plots of other
functions in a vertical stack.

John


On Dec 7, 9:18 am, sdw <nospam.warw... at jps.net> wrote:
> ok - here you go....
>
> (* create the bar chart with labels in the wrong orientation,  then
> convert the whole thing to primitives with FullGraphics to circumvent
> all of the graphics ticks bugs*)
>
> b = BarChart[vals, BarLabels -> labels] // FullGraphics ;  
>
> (* apply a transformation to all text primitives,  being careful to only
> modify the non-numeric ones since the numeric ones are the vertical axis
> text marks.
> The transformation replaces the offending label with a rotated and
> translated version of the label. *)
>
> b /. Text[ v_String, al_List, bl_List] ->  Translate[Rotate[Text[v, {0,
> 0}, {-1, 0}], -\[Pi]/2, {0, 0}], al]
>
> ---
>
>
>
> John Jowett wrote:
> > I would have thought this is a FAQ but it doesn't seem to be ...
>
> > Consider the following construction of simple Bar Charts where the bar
> > labels are strings.  The first one looks OK. In the second one, where
> > there are more bars, it's a mess because all the labels overlap
> > (unless the graphics is increased a lot in size):
>
> > Needs["BarCharts`"]
>
> > labels = {"MQM.A7L2B1", "MQMC.9R2.B1", "MQTLI.11R2.B1"};
> > vals = {5, 6, 7};
>
> > BarChart[vals, BarLabels -> labels]
>
> > vals = Flatten[Table[vals, {5}]];
> > labels = Flatten[Table[labels, {5}]];
>
> > BarChart[vals, BarLabels -> labels]
>
> > This could be neatly solved if the labels were oriented vertically
> > instead of horizontally (it's easy to do this, e.g., in certain
> > spreadsheet applications).  However I can't find any option that
> > allows it.
> > I suspect it might be possible using some special Ticks construction
> > but haven't taken the time to see.   But this should be easy ... does
> > anyone know how ?
>
> > Thanks,
> > John Jowett- Hide quoted text -
>
> - Show quoted text -



  • Prev by Date: A WorkLife FrameWork: December Discount
  • Next by Date: Bug in Print
  • Previous by thread: Re: Vertical tick labels in BarChart
  • Next by thread: Re: Vertical tick labels in BarChart