In [4]:
%matplotlib inline
import numpy as np
import galaxy_analysis as ga
import matplotlib.pyplot as plt
import glob
import deepdish as dd

In [5]:
#
# Lets plot the mass loading factor for all gas as a function of time
# for all pre-computed data in a directory.
#

In [6]:
work = '/home/emerick/work/enzo_runs/leo_p_stampede/final_test/fullres/run11/200cc/'

all_output = glob.glob(work + '*.h5')
all_output = np.sort(all_output)

In [ ]:


In [7]:
#
# load one of the files to figure out bin locations
#
data = dd.io.load(all_output[0])

z = data['gas_profiles']['outflow_rate']['zbins']
select_bin = 2

In [8]:
#
#
#
plot_data = {}
t = np.zeros(len(all_output))

fields = [('gas','H_total_mass'), ('gas','He_total_mass'), ('gas','metal_mass'), ('gas','O_Mass'), ('gas','Fe_Mass')]

for s in fields:
    plot_data[s] = np.zeros(len(all_output))

for i in np.arange(len(all_output)):
    t[i] = dd.io.load(all_output[i], '/meta_data/Time')
    x = dd.io.load(all_output[i], '/gas_profiles/outflow_rate')
    for s in fields:
        plot_data[s][i] = x[s][select_bin]

In [10]:
data = dd.io.load(all_output[20])


sd =  data['gas_profiles']['surface_density']
x = (sd['rbins'][1:] + sd['rbins'][:-1])*0.5


plt.plot(x, sd[('enzo','Density')], lw = 3, ls = '-')
plt.plot(x, sd[('enzo','HI_Density')], lw = 3, ls = '--')
plt.semilogy()


Out[10]:
[]

In [11]:
fig, ax = plt.subplots()

for s in fields:
    ax.plot(t, plot_data[s], label = s[1], lw = 3)

ax.set_xlabel('Time (Myr)')
ax.set_ylabel(r'Outflow Rate (M$_{\odot}$ yr$^{-1}$)')
ax.minorticks_on()
ax.semilogy()
fig.set_size_inches(8,8)
plt.tight_layout()


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-11-3b32bf29b1c8> in <module>()
      7 ax.set_ylabel(r'Outflow Rate (M$_{\odot}$ yr$^{-1}$)')
      8 ax.minorticks_on()
----> 9 ax.semilogy()
     10 fig.set_size_inches(8,8)
     11 plt.tight_layout()

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.pyc in semilogy(self, *args, **kwargs)
   1663              'nonposy': kwargs.pop('nonposy', 'mask'),
   1664              }
-> 1665         self.set_yscale('log', **d)
   1666         b = self._hold
   1667         self._hold = True  # we've already processed the hold

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/axes/_base.pyc in set_yscale(self, value, **kwargs)
   3094             ax._update_transScale()
   3095             ax.stale = True
-> 3096         self.autoscale_view(scalex=False)
   3097 
   3098     def get_yticks(self, minor=False):

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/axes/_base.pyc in autoscale_view(self, tight, scalex, scaley)
   2195                 y1 += delta
   2196             if not _tight:
-> 2197                 y0, y1 = ylocator.view_limits(y0, y1)
   2198             self.set_ybound(y0, y1)
   2199 

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/ticker.pyc in view_limits(self, vmin, vmax)
   1611         if minpos <= 0 or not np.isfinite(minpos):
   1612             raise ValueError(
-> 1613                 "Data has no positive values, and therefore can not be "
   1614                 "log-scaled.")
   1615 

ValueError: Data has no positive values, and therefore can not be log-scaled.
/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/axis.py:1015: UserWarning: Unable to find pixel distance along axis for interval padding of ticks; assuming no interval padding needed.
  warnings.warn("Unable to find pixel distance along axis "
/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/axis.py:1025: UserWarning: Unable to find pixel distance along axis for interval padding of ticks; assuming no interval padding needed.
  warnings.warn("Unable to find pixel distance along axis "
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/home/emerick/anaconda/lib/python2.7/site-packages/IPython/core/formatters.pyc in __call__(self, obj)
    305                 pass
    306             else:
--> 307                 return printer(obj)
    308             # Finally look for special method names
    309             method = get_real_method(obj, self.print_method)

/home/emerick/anaconda/lib/python2.7/site-packages/IPython/core/pylabtools.pyc in <lambda>(fig)
    238 
    239     if 'png' in formats:
--> 240         png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
    241     if 'retina' in formats or 'png2x' in formats:
    242         png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))

/home/emerick/anaconda/lib/python2.7/site-packages/IPython/core/pylabtools.pyc in print_figure(fig, fmt, bbox_inches, **kwargs)
    122 
    123     bytes_io = BytesIO()
--> 124     fig.canvas.print_figure(bytes_io, **kw)
    125     data = bytes_io.getvalue()
    126     if fmt == 'svg':

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/backend_bases.pyc in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
   2178                     orientation=orientation,
   2179                     dryrun=True,
-> 2180                     **kwargs)
   2181                 renderer = self.figure._cachedRenderer
   2182                 bbox_inches = self.figure.get_tightbbox(renderer)

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc in print_png(self, filename_or_obj, *args, **kwargs)
    525 
    526     def print_png(self, filename_or_obj, *args, **kwargs):
--> 527         FigureCanvasAgg.draw(self)
    528         renderer = self.get_renderer()
    529         original_dpi = renderer.dpi

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/backends/backend_agg.pyc in draw(self)
    472 
    473         try:
--> 474             self.figure.draw(self.renderer)
    475         finally:
    476             RendererAgg.lock.release()

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     59     def draw_wrapper(artist, renderer, *args, **kwargs):
     60         before(artist, renderer)
---> 61         draw(artist, renderer, *args, **kwargs)
     62         after(artist, renderer)
     63 

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/figure.pyc in draw(self, renderer)
   1157         dsu.sort(key=itemgetter(0))
   1158         for zorder, a, func, args in dsu:
-> 1159             func(*args)
   1160 
   1161         renderer.close_group('figure')

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     59     def draw_wrapper(artist, renderer, *args, **kwargs):
     60         before(artist, renderer)
---> 61         draw(artist, renderer, *args, **kwargs)
     62         after(artist, renderer)
     63 

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/axes/_base.pyc in draw(self, renderer, inframe)
   2322 
   2323         for zorder, a in dsu:
-> 2324             a.draw(renderer)
   2325 
   2326         renderer.close_group('axes')

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     59     def draw_wrapper(artist, renderer, *args, **kwargs):
     60         before(artist, renderer)
---> 61         draw(artist, renderer, *args, **kwargs)
     62         after(artist, renderer)
     63 

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/axis.pyc in draw(self, renderer, *args, **kwargs)
   1118         self._update_label_position(ticklabelBoxes, ticklabelBoxes2)
   1119 
-> 1120         self.label.draw(renderer)
   1121 
   1122         self._update_offset_text_position(ticklabelBoxes, ticklabelBoxes2)

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
     59     def draw_wrapper(artist, renderer, *args, **kwargs):
     60         before(artist, renderer)
---> 61         draw(artist, renderer, *args, **kwargs)
     62         after(artist, renderer)
     63 

/home/emerick/anaconda/lib/python2.7/site-packages/matplotlib/text.pyc in draw(self, renderer)
    755             posy = float(textobj.convert_yunits(textobj._y))
    756             if not np.isfinite(posx) or not np.isfinite(posy):
--> 757                 raise ValueError("posx and posy should be finite values")
    758             posx, posy = trans.transform_point((posx, posy))
    759             canvasw, canvash = renderer.get_canvas_width_height()

ValueError: posx and posy should be finite values
<matplotlib.figure.Figure at 0x7f341f99d810>

In [14]:
#
#
#
plot_data = {}
t = np.zeros(len(all_output))

fields = ['Disk', 'CNM', 'WNM', 'HIM', 'FullBox', 'stars', 'Molecular']

print (dd.io.load(all_output[-1],'/gas_meta_data/masses'))['CNM'].keys()


element = 'H'

for s in fields:
    plot_data[s] = np.zeros(len(all_output))

for i in np.arange(len(all_output)):
    t[i] = dd.io.load(all_output[i], '/meta_data/Time')
    x = dd.io.load(all_output[i], '/gas_meta_data/masses')
    for s in fields:
        plot_data[s][i] = x[s][element]
        #if not s == 'stars':
        #    plot_data[s][i] = x[s]['Total'] - x[s]['H'] - x[s]['He']
        #else:
            #plot_data[s][i] = 0.0

#print plot_data


['Ni', 'C', 'Ba', 'H', 'Ca', 'Mn', 'Si', 'Mg', 'O', 'N', 'Y', 'S', 'Fe', 'Eu', 'Total', 'He']

In [ ]:
fig, ax = plt.subplots()

for s in fields:
    ax.plot(t, plot_data[s] , lw = 3, label = s)

ax.set_xlabel('Time (Myr)')
ax.set_ylabel(element + ' Mass (Msun)')
fig.set_size_inches(8,8)
#ax.set_ylim(1.0E-8, 10)
plt.tight_layout()
ax.legend(loc='best')
ax.semilogy()

In [ ]: