Matt:<div><br></div><div>I'm using pylab.  One thing I'm going to change is modify it so that it gets the resolution of the image, then sets the pylab figure size based off that.  I'd also rather have this go through freetype, but the development time for that for me is >> (time left this afternoon).  I'd be +1 to porting to freetype.  </div>

<div><br></div><div>This is _very_ loosely coupled to the interactive camera.  I'm going to (right now) move it over to the general camera class, and make it have the API:</div><div><br></div><div>cam.save_annotated(fn, im=None, enhance=True)</div>

<div><br></div><div>This will take the filename, the previously produced image array or try to get the cam.image array (which exists for some variants of the camera), and then apply the standard deviation clipping that is presence in the enhance.py on the hub.  I'm going to strongly encourage the enhance=True.  I've been making movies that use the same normalization and have been happy with all of them.</div>

<div><br></div><div>While I'm at it, I'll add a cam.save(fn, im, enhance=True) that skips the annotation.</div><div><br></div><div>+/- 1 on those additions?  Requests?</div><div><br></div><div>All others: Thanks for the enthusiastic response!</div>

<div><br></div><div>Sam</div><br><div class="gmail_quote">On Fri, Jun 8, 2012 at 3:28 PM, Christopher Moody <span dir="ltr"><<a href="mailto:cemoody@ucsc.edu" target="_blank">cemoody@ucsc.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Beautiful, +1!<br>
<br>
chris<br>
<div class="HOEnZb"><div class="h5"><br>
On Fri, Jun 8, 2012 at 2:22 PM, Cameron Hummels<br>
<<a href="mailto:chummels@astro.columbia.edu">chummels@astro.columbia.edu</a>> wrote:<br>
> +1e6!  I need to use something like this right now! :)  Great work, Sam!<br>
><br>
><br>
> On 6/8/12 5:06 PM, Sam Skillman wrote:<br>
>><br>
>> Okay, I've prototyped something that works like this:<br>
>><br>
>> interactive_camera.snapshot()<br>
>> ...pops up interactive matplotlib window...<br>
>> interactive_camera.save('test.png')<br>
>> ...grabs all needed information and makes this...<br>
>><br>
>> Inline image 1<br>
>><br>
>> +/- 1?  It just needs some cleanup, like reducing the extent of the<br>
>> colorbar so you don't get the black strip at the top and bottom of the<br>
>> image.<br>
>><br>
>> Sam<br>
>><br>
>> On Fri, Jun 8, 2012 at 2:12 PM, Richard P Wagner <<a href="mailto:rpwagner@sdsc.edu">rpwagner@sdsc.edu</a><br>
>> <mailto:<a href="mailto:rpwagner@sdsc.edu">rpwagner@sdsc.edu</a>>> wrote:<br>
>><br>
>><br>
>>    On Jun 8, 2012, at 12:40 PM, Nathan Goldbaum wrote:<br>
>><br>
>>>    I'd prefer it if the transfer function plot were split into two<br>
>>>    separate frames.  Right now, it's easy to think that the black<br>
>>>    background color image contains opacity information since the<br>
>>>    frame is plotted with a y axis.  I'd prefer it if only the white<br>
>>>    line was plotted with a y axis and the black background image was<br>
>>>    plotted in a separate frame like a color bar with no y axis.<br>
>>>     This would also let the user see the tick marks for the opacity<br>
>>>    plot much more easily.<br>
>>><br>
>>>    In general, I like plotting the transfer function like a color<br>
>>>    bar (sort of like Stella Offner's image on the yt homepage<br>
>>>    [<a href="http://yt-project.org/img/offner_etal.png]" target="_blank">http://yt-project.org/img/offner_etal.png]</a>).<br>
>><br>
>><br>
>>    That's what came to mind when I was reading this. For a while,<br>
>>    we've been putting a combination color bar-transfer function<br>
>>    graphic in our renderings with ANL (skip about 30 seconds into<br>
>>    <a href="http://www.youtube.com/watch?v=5dOt0IaRY4U" target="_blank">http://www.youtube.com/watch?v=5dOt0IaRY4U</a>). I think it's very<br>
>>    natural to overlay a transfer function plot onto a color bar, and<br>
>>    it provides a lot of information in a simple fashion.<br>
>><br>
>>    --Rick<br>
>><br>
>>><br>
>>>    Nathan Goldbaum<br>
>>>    Graduate Student<br>
>>>    Astronomy & Astrophysics, UCSC<br>
>>>    <a href="mailto:goldbaum@ucolick.org">goldbaum@ucolick.org</a> <mailto:<a href="mailto:goldbaum@ucolick.org">goldbaum@ucolick.org</a>><br>
>>>    <a href="http://www.ucolick.org/~goldbaum" target="_blank">http://www.ucolick.org/~goldbaum</a> <<a href="http://www.ucolick.org/%7Egoldbaum" target="_blank">http://www.ucolick.org/%7Egoldbaum</a>><br>


>>><br>
>>><br>
>>>    On Jun 8, 2012, at 12:34 PM, Sam Skillman wrote:<br>
>>><br>
>>>>    Hi all,<br>
>>>><br>
>>>>    I've been experimenting with different ways to plot the transfer<br>
>>>>    functions, and in particular in the context of the<br>
>>>>    InteractiveCamera.<br>
>>>><br>
>>>>    What are people's thoughts about this behavior:<br>
>>>><br>
>>>>    <a href="http://i.imgur.com/CGZ7Z.png" target="_blank">http://i.imgur.com/CGZ7Z.png</a><br>
>>>>    <a href="http://i.imgur.com/OCsVt.jpg" target="_blank">http://i.imgur.com/OCsVt.jpg</a><br>
>>>>    <a href="http://i.imgur.com/VNEse.png" target="_blank">http://i.imgur.com/VNEse.png</a><br>
>>>><br>
>>>>    btw, you can get this behavior by changing your script to call<br>
>>>>    pf.h.interactive_camera, and then running in ipython with a<br>
>>>>    working matplotlib backend.<br>
>>>><br>
>>>>    I'll let Nathan bring up his concerns rather than me try to<br>
>>>>    convey them.<br>
>>>><br>
>>>>    Sam<br>
>>>><br>
>>>><br>
>>>><br>
>>>>    !DSPAM:10175,4fd253db101042955315835!<br>
>>>>    _______________________________________________<br>
>>>>    yt-dev mailing list<br>
>>>>    <a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a> <mailto:<a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a>><br>
>>>>    <a href="http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org</a><br>
>>>><br>
>>>><br>
>>>>    !DSPAM:10175,4fd253db101042955315835!<br>
>>><br>
>>><br>
>>>    _______________________________________________<br>
>>>    yt-dev mailing list<br>
>>>    <a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a> <mailto:<a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a>><br>
>>>    <a href="http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org</a><br>
>><br>
>><br>
>><br>
>>    _______________________________________________<br>
>>    yt-dev mailing list<br>
>>    <a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a> <mailto:<a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a>><br>
>><br>
>>    <a href="http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org</a><br>
>><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> yt-dev mailing list<br>
>> <a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a><br>
>> <a href="http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org</a><br>
><br>
> _______________________________________________<br>
> yt-dev mailing list<br>
> <a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a><br>
> <a href="http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org</a><br>
_______________________________________________<br>
yt-dev mailing list<br>
<a href="mailto:yt-dev@lists.spacepope.org">yt-dev@lists.spacepope.org</a><br>
<a href="http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org" target="_blank">http://lists.spacepope.org/listinfo.cgi/yt-dev-spacepope.org</a><br>
</div></div></blockquote></div><br>