[yt-users] trouble with callback on phase plot

j s oishi jsoishi at gmail.com
Fri Sep 23 15:55:46 PDT 2011


Hi Christine,

Yup, this is definitely a fairly deep bug. Could you please file a
ticket at the bitbucket site (hg.yt-project.org)? Just record the
problem you're having, and I'll fill in the details below.

It seems that phase plots actually use matplotlib's pcolormesh to
plot, and this does not have the same image shape as imshow or other
plots; it seems to store the image as a 1D array rather than a 2D
array. This breaks the way the text call back attempts to place text.
Unfortunately, I don't see an easy fix, and I don't have the time at
the moment to sort it out.

I can offer you a workaround, which is slightly more verbose, but
should do the same thing. If you try

from yt.mods import *
import yt.visualization.profile_plotter as pp

phase = pp.PhasePlotter(r200[j],'kpc',["Density","Temperature","CellMassMsun"],weight
= None)
figure, axes = phase.to_mpl()

axes.hold(True)
axes.text([0.92,0.92],redshift_string,transform = axes.transAxes )


from yt.visualization._mpl_imports import \
    FigureCanvasAgg, FigureCanvasPdf
canvas = FigureCanvasPdf(figure)
canvas.print_figure("blah.pdf")
canvas = FigureCanvasAgg(figure)
canvas.print_figure("blah.png")

that should work. Sorry for the verbosity of this method; it is
somewhat new, but I can say that Matt and I have successfully used it
for exactly this purpose (as seen here:
http://www.slac.stanford.edu/~jsoishi/images/plot.png; those \rho^4/3
labels were done exactly this way).

Let me know if you need more help.

j
On Fri, Sep 23, 2011 at 3:16 PM, Christine Simpson
<csimpson at astro.columbia.edu> wrote:
> Hi all,
>
> I'm having trouble adding text through a callback onto a phase plot.
>
> I tried this code:
>
> pc.add_phase_sphere(r200[j],'kpc',["Density","Temperature","CellMassMsun"],weight = None)
> pc.set_zlim(1.0e-2,1.0e5)
> pc.set_xlim(1.0e-30,5.0e-19)
> pc.set_ylim(10.0,1.0e7)
> pc.plots[-1].modify["text"]([0.92,0.92],redshift_string)
>
> pc.save("output_%(file_num)s_branch_%yt-users at lists.spacepope.org(br)i"
> % {"file_num":fn,"axis":ax,"br":branch_index[j]})
>
> And I get this error:
>
> Traceback (most recent call last):
>  File "test_phase_plots.py", line 41, in <module>
>    pc.save("output_%(file_num)s_branch_%(br)i" %
> {"file_num":fn,"axis":ax,"br":branch_index[j]})
>  File
> "/share/home/01112/tg803911/yt_17May2011/yt-x86_64/src/yt-hg/yt/visualization/plot_collection.py", line 157, in save
>    override=override, force_save=force_save))
>  File
> "/share/home/01112/tg803911/yt_17May2011/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py", line 108, in save_image
>    self._redraw_image()
>  File
> "/share/home/01112/tg803911/yt_17May2011/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py", line 903, in _redraw_image
>    self._run_callbacks()
>  File
> "/share/home/01112/tg803911/yt_17May2011/yt-x86_64/src/yt-hg/yt/visualization/plot_types.py", line 800, in _run_callbacks
>    cb(self)
>  File
> "/share/home/01112/tg803911/yt_17May2011/yt-x86_64/src/yt-hg/yt/visualization/plot_modifications.py", line 910, in __call__
>    y = plot.image._A.shape[1] * self.pos[1]
> IndexError: tuple index out of range
>
>
> The error arises in the save command, but the problem only happens when
> I add the modify["text"] command.  Any ideas?
>
> Christine
>
> _______________________________________________
> 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