[yt-users] how to make a SlicePlot colorbar use mathtext?

Nathan Goldbaum nathan12343 at gmail.com
Wed Aug 20 10:16:12 PDT 2014


Hi Mike,

It will use MathText if you ask for a logarithmically scaled colorbar.

There's probably a way to do it by spelunking a bit inside the matplotlib
API, but I don't know of an easy way to do it off-hand.

If all you care about is the font, you can also use the 'stixgeneral' font
family, which is actually the font that matplotlib uses internally to
display mathtext.  You can change the font globally by updating your
matplotlibrc or changing your matplotlib configuration at the top of your
script.

Sorry I can't be more helpful.  Let us know if you come up with a solution
here.

-Nathan


On Wed, Aug 20, 2014 at 8:38 AM, Michael Zingale <
michael.zingale at stonybrook.edu> wrote:

> here's my script (also here:
> http://bender.astro.sunysb.edu/random/slice3plot.py )
>
> #!/bin/env python
>
> import argparse
>
> import yt
>
> import matplotlib
> import matplotlib.pyplot as plt
> from mpl_toolkits.axes_grid1 import AxesGrid
>
> def doit(file, var, log):
>
>     # load the data
>     ds = yt.load(file)
>     dd = ds.all_data()
>
>     center = 0.5*(ds.domain_left_edge + ds.domain_right_edge)
>
>     # see
> http://yt-project.org/docs/3.0/cookbook/complex_plots.html#multipanel-with-axes-labels
>
>     fig = plt.figure()
>
>     grid = AxesGrid(fig, (0.1, 0.1, 0.85, 0.85),
>                     nrows_ncols = (1, 3),
>                     axes_pad = 1.1,
>                      label_mode = "all",
>                     share_all = False,
>                     cbar_location = "right",
>                     cbar_mode = "each",
>                     cbar_size = "3%",
>                     cbar_pad = "0%")
>
>     formatter = matplotlib.ticker.ScalarFormatter(useMathText=True)
>     formatter.set_powerlimits((-3,3))
>
>     for i, d in enumerate(["x", "y", "z"]):
>
>         p = yt.SlicePlot(ds, d, var, center=(center[0], center[1],
> center[2]),
>                          origin="native", fontsize=10)
>         p.set_log(var, log)
>
>         plot = p.plots[var]
>         plot.figure = fig
>         plot.axes = grid[i].axes
>         plot.cax = grid.cbar_axes[i]
>
>         #cb.formatter.set_scientific(True)
>         #cb.formatter.set_powerlimits((-3,3))
>         #plot.cax.yaxis.set_major_formatter(formatter)
>
>         cb = plot.cb
>         cb.formatter = formatter
>         cb.update_ticks()
>
>
>         p._setup_plots()
>
>         ax = plot.axes
>         ax.xaxis.set_major_formatter(formatter)
>         ax.yaxis.set_major_formatter(formatter)
>
>         ax.xaxis.offsetText.set_fontsize("small")
>         ax.yaxis.offsetText.set_fontsize("small")
>
>
>     fig.set_size_inches(12.80, 7.20)
>
>     plt.savefig("test.png")
>
>
>
>
> if __name__ == "__main__":
>
>     parser = argparse.ArgumentParser()
>
>     parser.add_argument("--log", help="plot the log of the variable",
> action="store_true")
>
>     parser.add_argument("file", help="the name of the file to read",
> type=str)
>     parser.add_argument("var", help="the name of the variable to plot",
> type=str)
>
>     args = parser.parse_args()
>
>     doit(args.file, args.var, args.log)
>
>
>
> On Wed, Aug 20, 2014 at 11:34 AM, Michael Zingale <
> michael.zingale at stonybrook.edu> wrote:
>
>> yeah, I was doing that -- it doesn't have an effect.
>>
>>
>> On Wed, Aug 20, 2014 at 11:33 AM, Chris Malone <chris.m.malone at gmail.com>
>> wrote:
>>
>>> Hey Mike,
>>>
>>> I'm not sure if this is the issue or not, but after you apply your
>>> formatter to the colorbar, you need to call cbar.update_ticks() for them to
>>> actually change.
>>>
>>> Chris
>>>
>>>
>>> On Wed, Aug 20, 2014 at 9:12 AM, Michael Zingale <
>>> michael.zingale at stonybrook.edu> wrote:
>>>
>>>> Does anyone know how to make a SlicePlot colorbar from yt use mathtext
>>>> in the tick labels?  I am doing the following in a loop over x, y, z planes:
>>>>
>>>>
>>>>         p = yt.SlicePlot(ds, d, var, center=(center[0], center[1],
>>>> center[2]),
>>>>                          origin="native", fontsize=10)
>>>>         p.set_log(var, log)
>>>>
>>>>         plot = p.plots[var]
>>>>         plot.figure = fig
>>>>         plot.axes = grid[i].axes
>>>>         plot.cax = grid.cbar_axes[i]
>>>>
>>>> I can get at the colorbar object via cb = plot.cb, but I can't seem to
>>>> turn on mathtext.  I can modify the axes to use my formatter so they look
>>>> pretty, but I've tried to set a colorbar formatter with no success.
>>>>
>>>> Here's my image:
>>>>
>>>> http://bender.astro.sunysb.edu/random/test.png
>>>>
>>>> Notice that the offset text for the colorbar is "1.e6" instead of in
>>>> latex (I still have to remove the offset text for the two rightmost y-axes
>>>> later, but I know how to do that).
>>>>
>>>> Mike
>>>>
>>>> --
>>>> Michael Zingale
>>>> Associate Professor
>>>>
>>>> Dept. of Physics & Astronomy • Stony Brook University • Stony Brook, NY
>>>> 11794-3800
>>>>  *phone*:  631-632-8225
>>>> *e-mail*: Michael.Zingale at stonybrook.edu
>>>> *web*: http://www.astro.sunysb.edu/mzingale
>>>>
>>>> _______________________________________________
>>>> yt-users mailing list
>>>> yt-users at lists.spacepope.org
>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>>
>>>>
>>>
>>> _______________________________________________
>>> yt-users mailing list
>>> yt-users at lists.spacepope.org
>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>>>
>>
>>
>> --
>> Michael Zingale
>> Associate Professor
>>
>> Dept. of Physics & Astronomy • Stony Brook University • Stony Brook, NY
>> 11794-3800
>> *phone*:  631-632-8225
>> *e-mail*: Michael.Zingale at stonybrook.edu
>> *web*: http://www.astro.sunysb.edu/mzingale
>>
>
>
>
> --
> Michael Zingale
> Associate Professor
>
> Dept. of Physics & Astronomy • Stony Brook University • Stony Brook, NY
> 11794-3800
> *phone*:  631-632-8225
> *e-mail*: Michael.Zingale at stonybrook.edu
> *web*: http://www.astro.sunysb.edu/mzingale
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20140820/b1649737/attachment.htm>
-------------- next part --------------
_______________________________________________
yt-users mailing list
yt-users at lists.spacepope.org
http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org


More information about the yt-users mailing list