http://matplotlib.sourceforge.net/api/ticker_api.html#matplotlib.ticker.FuncFormatter

2010/4/10 konstellationen <konstellatio...@gmail.com>:
>
> For future reference, the solution proposed by Gökhan and Diakronik is to
> replace the Latex tick-labels with strings:
>
>>import matplotlib.pyplt as plt
>>tick_locs = range(start, stop, increment)
>>plt.xticks(tick_locs, [r"$\mathbf{%s}$" % x for x in tick_locs])
>
> If you have twin x or y axes (my case), the solution I found was:
>
> (Note: this solution is essentially the same as the one above, with the
> distinction that every entry is set manually, which allows for more
> flexibility, but requires more work)
>
>
>>from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
>>from matplotlib.pylab import *   # For plotting graphs.
>>from matplotlib.pyplot import *
>
>>fig=figure(1)
>>host= SubplotHost(fig,111)
>>fig.add_subplot(host)
>>par=host.twiny()
>
>>host.axis["bottom"]
>>par.axis["top"]
>
>>hostv=[1e-14,1e-4,-1.5,1.5]
>>host.axis(hostv)
>>parv=[1e-8,1e2,-1.5,0.5]
>>par.axis(parv)
>
>>host.set_xticks([1e-14, ... ,1e-4])
>>x_labels = [r'\boldmath $10^{-14} $', ... ,r'\boldmath $ $']
>>host.set_xticklabels(x_labels)
>
>>par.set_xticks([1e-8, ... ,1e2])
>>parx_labels = [ r'\boldmath $10^{-8}$', ... ,r'\boldmath $ $' ]
>>par.set_xticklabels(parx_labels)
>
>>host.set_yticks([-1,0])
>>y_labels = [r'\boldmath $-1$', r'\boldmath $0$']
>>host.set_yticklabels(y_labels)
>
>
> Result:
>
> http://old.nabble.com/file/p28199345/Picture%2B7.png

There is another technique based on the FuncFormatter or the
FormatStrFormatter in matplotlib.ticker, see the link at the very top.
 It makes less efford when one can rely on the automatic ticking
mechanism and when one has access to the axis (with i) instances.  It
is:

To obtain math-formatted number output:

>>> formatter = matplotlib.ticker.FormatStrFormatter('$%g$')
>>> axes.xaxis.set_major_formatter(formatter)

The most important is that one has no longer to set the tick locations manually.

For exponential ticks, I would propose (but it's untested):

>>> def exp_fmt(loc):
        exponent = numpy.round(numpy.log10(loc))
        return '$10^%d$' % exponent
>>> formatter = matplotlib.ticker.FuncFormatter(exp_fmt)
>>> # And so on.

Note that using r'$\mathbf{%g}$' makes, for me, no difference.  It may
be that one needs matplotlib.rc('text', usetex = True) to make also
numbers bold by \mathbf{}, but iirc, also in LaTeX numbers are always
plain, also in \mathbf{}.  \boldmath$$ may be an exception from this
rule.

fwiw,
Friedrich

P.S.: I cannot test usetex = True at the moment, because I end up with
the error 'Could not obtain dvipng version'.

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to