[yt-users] How ot overplot star particles on density projections

Nathan Goldbaum nathan12343 at gmail.com
Sat Jul 20 18:00:59 PDT 2013


Hi Latif,

I've issued a pull request that should allow a plotting script similar to
the one you pasted to work.  The pull request is here:
https://bitbucket.org/yt_analysis/yt/pull-request/556

To merge the patch into your local copy, do the following:

$ cd $YT_HG
$ hg pull -r 6f91fb2 https://bitbucket.org/ngoldbaum/yt
$ python setup.py build_ext -i

Take a look at the multipanel plotting script I pasted into the PR
description.  I think something like that should work for your use case.

Hope that helps,

Nathan Goldbaum


On Fri, Jul 19, 2013 at 5:02 PM, Nathan Goldbaum <nathan12343 at gmail.com>wrote:

> Hi Latif,
>
> Unfortunately I don't think Matt's suggestion will work.  What happens for
> these plots is the matplotlib figure object doesn't persist whenever you
> make a modification or call _setup_pltos(). Instead, a new matplotlib
> figure is generated and the old one is discarded.  So what's happening in
> your script is the annotated plots are drawn on an entirely new figure
> object rather than the one you've assigned, while the original figure that
> you set up is left blank, yielding the blank plots you're seeing in the end.
>
> There might be a hacky way around this, but I still think the most natural
> way to do what you're doing is to add the particles to the plot by hand,
> following what happens in the original plot modification.
>
> I'd like to make it so manipulations like what you're trying to do and
> what Matt suggested will work by persisting figures as plots get modified,
> as this will make it much easier to set up animations and some other cool
> stuff, but it will require some modifications to yt's plotting
> infrastructure to ensure that figures are updated rather than just
> discarded.
>
> Hope that helps, sorry that I don't have a suggestion that will work using
> Matt's somewhat simpler suggestion.
>
> -Nathan
>
>
> On Fri, Jul 19, 2013 at 4:48 PM, Latif <latifne at gmail.com> wrote:
>
>> Hi Matt and Nathan,
>> Thank you for your help.  I think Matt's idea is very good and bit easy.
>> Unfortunately, I didn't get success with it yet.  I am getting empty
>> panels.  Matt, Is it close to what you suggested?  It is most likely that I
>> am messing up some thing due to my poor understanding.  Here is my script.
>> Do you guys know what is going wrong here.
>>
>> http://paste.yt-project.org/show/3708/
>>
>> Cheers
>> Latif
>>
>>
>> On Fri, Jul 19, 2013 at 3:53 PM, Matthew Turk <matthewturk at gmail.com>wrote:
>>
>>> Hi Latif,
>>>
>>> On Fri, Jul 19, 2013 at 9:48 AM, Latif <latifne at gmail.com> wrote:
>>> > Hi all,
>>> > Is there any way to annotate particles to the multi-plot
>>> porjections/slices?
>>> > I am using the following recipe from the webpage.
>>> >
>>> > http://yt-project.org/doc/cookbook/multi_plot_slice_and_proj.py
>>> >
>>> > thanks in advance,
>>> >
>>> > Cheers
>>> > Latif
>>>
>>> Unfortunately this is a lot harder, as the FRBs used there do not
>>> expose the same annotate_* methods that the sliceplot, projectionplot,
>>> etc do.
>>>
>>> However, you *may* be able to do something similar, although I have
>>> not tested it, by creating a ProjectionPlot or SlicePlot, then
>>> swapping out the .axes and .figure objects that resides on the plot
>>> object itself.  Then you can call ._setup_plots() on the
>>> ProjectionPlot or SlicePlot, and it should re-create all the necessary
>>> info.
>>>
>>> So it would look something like this, once you have the axes objects
>>> you're interested in from the recipe you linked to:
>>>
>>> p = ProjectionPlot( ... )
>>> p.plots["Density"].figure = fig
>>> p.plots["Density"].axes = dens_axes[0]
>>> p.annotate_whatever()
>>> p._setup_plots()
>>>
>>> Then you can call:
>>>
>>> fig.savefig("%s_3x2" % pf)
>>>
>>> This is all very rough, but I think it should get you there.
>>>
>>> -Matt
>>>
>>> >
>>> >
>>> > On Thu, Jul 4, 2013 at 9:43 PM, Latif <latifne at gmail.com> wrote:
>>> >>
>>> >> HI Matt,
>>> >> Thank you for a prompt and precise response.
>>> >> Cheers
>>> >> Latif
>>> >>
>>> >>
>>> >>
>>> >> On Thu, Jul 4, 2013 at 7:04 PM, Matthew Turk <matthewturk at gmail.com>
>>> >> wrote:
>>> >>>
>>> >>> Hi Latif,
>>> >>>
>>> >>> The callback you're looking for is "particles" and you can specify a
>>> >>> "ptype" argument for specifying the type of particles.  (If you're
>>> >>> using Enzo, this should be the number in the "particle_type" field
>>> you
>>> >>> are selecting.)  Note also that annotate_particles accepts a width
>>> >>> argument, in code units, which says how wide the selected region will
>>> >>> be around the center of the slice or the center of the box for
>>> >>> projections.  So if you are using a projection and you want the whole
>>> >>> box, you can do 1.0/pf['unitary'] to get the full domain.
>>> >>>
>>> >>> Here is an example:
>>> >>>
>>> >>> s = SlicePlot(pf, "x", "Density")
>>> >>> s.annotate_particles(1.0/pf['kpc'], p_size = 1.0, ptype = 1)
>>> >>>
>>> >>> which will choose particle_type = =1.
>>> >>>
>>> >>> -Matt
>>> >>>
>>> >>> On Thu, Jul 4, 2013 at 10:20 AM, Latif <latifne at gmail.com> wrote:
>>> >>> > Hi all,
>>> >>> > I want to overplot star particles on density projections/slices.
>>> It is
>>> >>> > probably a very simple question but could not figure out how to do
>>> it.
>>> >>> > Can
>>> >>> > I also get information about their position and velocities as well?
>>> >>> > thanks in advance,
>>> >>> > Cheers
>>> >>> > Latif
>>> >>> >
>>> >>> > _______________________________________________
>>> >>> > 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
>>> >>
>>> >>
>>> >
>>> >
>>> > _______________________________________________
>>> > 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
>>>
>>
>>
>> _______________________________________________
>> 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/20130720/32e5ea79/attachment.html>


More information about the yt-users mailing list