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

Michael Zingale michael.zingale at stonybrook.edu
Wed Aug 20 08:38:01 PDT 2014


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20140820/f264b1eb/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