Great, this is doing the job nicely, thanks ! I am not very clear as to what the 'subs' argument really does. In your example:
> #full control
> #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, 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 2, say) [1, 2, 4, 8, 16, ...] ? Is that easily done? I tried to obtain it based on the example custom_ticker1.py (in the examples subdirectory), but haven't been successful so far.
Thanks A LOT for the update of axes.py and ticker.py,
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 between
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:
#compatible with previous usage
gca().set_xscale('log') # major tick every 10**i, minor tick every range(2,10)*10**I
#Major tick every 16**i, minor tick every range(2,16)*16**i
#Major tick every 16**i, minor tick every subs*16**i
This gives me all the flexibility I need, and I feel it is a step in the
right direction, but:
-maybe a rework of log ticker is needed so that it use minor/major tick
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 subs
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
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 nice
framework to have fully automatic and nicely configurable log ticking
PS: the 2 modified files are included, I made my modif relative to
De : firstname.lastname@example.org [mailto:email@example.com] De la part de Dominique Orban
Envoyé : mardi 17 août 2004 18:57
À : firstname.lastname@example.org
Objet : [Matplotlib-users] Log plot in base b?
What would be the easiest way, in matplotlib, to achieve log scaling, along the x axis, say, in a base other than 10? I see in axes.py that semilog[xy] have LOG10 hardwired. I am using matplotlib 0.60.2.