From: Dominique O. <Dom...@po...> - 2004-08-18 19:45:45
|
Great, this is doing the job nicely, thanks ! I am not very clear as to=20 what the 'subs' argument really does. In your example: > #full control > gca().set_xscale('log',base=3D100,subs=3D[10,20,50]) > #Major tick every 16**i, minor tick every subs*16**i (16 should be 100 right?). There's a major tick at 100, 100^2, 100^3,=20 etc. And you're saying there are minor tick marks at 10*100*i ?!? What if you'd want tick labels [0, 1, 2, 3, 4, ...] instead of (in base=20 2, say) [1, 2, 4, 8, 16, ...] ? Is that easily done? I tried to obtain=20 it based on the example custom_ticker1.py (in the examples=20 subdirectory), but haven't been successful so far. Thanks A LOT for the update of axes.py and ticker.py, Dominique Gregory Lielens wrote: > Hi, I though about this too and your message has convinced me it was > worth spending a few minutes adding this ;-) > I just patched loglocator and logformater to be able to use arbitrary > base, and also to use arbitrary "minor" ticks. Well, I put minor betwee= n > quotes because Logticker do not really use minor ticks, only discard > label for ticks that are not integer exponents of base... > Usage is like this: > Semilogx(x,y) >=20 > #compatible with previous usage > gca().set_xscale('log')=20 > # major tick every 10**i, minor tick every range(2,10)*10**I >=20 > #change base > gca().set_xscale('log',base=3D16) > #Major tick every 16**i, minor tick every range(2,16)*16**i=20 >=20 > #full control > gca().set_xscale('log',base=3D100,subs=3D[10,20,50]) > #Major tick every 16**i, minor tick every subs*16**i=20 >=20 >=20 > This gives me all the flexibility I need, and I feel it is a step in th= e > right direction, but: > -maybe a rework of log ticker is needed so that it use minor/major tic= k > mechanism? Current mechanism is not as clean as it could, imho > -maybe autoscale for loglocator should adjust the base/range to avoid > excessive ticking (A discussion I had with john, with a zoom out it is > possible to have very dense ticking)...Not so easy to do though, as sub= s > has to be adjusted too if one does not want too many minor ticks, as > this adjustment is not so easy to do if one want "usefull" minor ticks > in logscale... > I thing these 2 points are linked, I would not go to 2 if 1 is not done= , > but if one is done (using some kind of linear locator (with autoscale > capability) on 1 decade for minor ticks, and repeat this minor tick on > each decade as I have done with my subs, I think we can have a very nic= e > framework to have fully automatic and nicely configurable log ticking > :-)=20 >=20 >=20 > Best regards, >=20 > Greg. >=20 > PS: the 2 modified files are included, I made my modif relative to > CVS... >=20 >=20 >>-----Message d'origine----- >>De : mat...@li...=20 >>[mailto:mat...@li...] De la=20 >>part de Dominique Orban >>Envoy=E9 : mardi 17 ao=FBt 2004 18:57 >>=C0 : mat...@li... >>Objet : [Matplotlib-users] Log plot in base b? >> >> >>Hi, >> >>What would be the easiest way, in matplotlib, to achieve log scaling,=20 >>along the x axis, say, in a base other than 10? I see in axes.py that=20 >>semilog[xy] have LOG10 hardwired. I am using matplotlib 0.60.2. >> >>Thanks, >>Dominique |