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® 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