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 -