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

Nathan Goldbaum nathan12343 at gmail.com
Fri Jul 19 17:02:38 PDT 2013


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/20130719/65d6857c/attachment.html>


More information about the yt-users mailing list