diff --git a/plot_sim_showoff1_poster.py b/plot_sim_showoff1_poster.py new file mode 100644 index 0000000..b600a96 --- /dev/null +++ b/plot_sim_showoff1_poster.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python +# coding: utf-8 + +############################################################### +# Plot multipanel figures showing evolution of the Fiducial sim +############################################################### + +import yt +import numpy as np +import seaborn as sns +import matplotlib.pyplot as plt +from matplotlib.colors import LogNorm, SymLogNorm, LinearSegmentedColormap +from matplotlib.ticker import FixedLocator, MultipleLocator, NullFormatter, NullLocator +from matplotlib.patches import Circle +from mpl_toolkits.axes_grid1 import ImageGrid +from mpl_toolkits.axes_grid1.anchored_artists import AnchoredSizeBar + +plt.rcParams.update({"font.size":18}) + +ds_fid20 = yt.load("../sample_data/fid/DD0020/DD0020") # 1 Gyr +ds_fid40 = yt.load("../sample_data/fid/DD0040/DD0040") # 2 Gyr +ds_fid60 = yt.load("../sample_data/fid/DD0060/DD0060") # 3 Gyr +ds_fid80 = yt.load("../sample_data/fid/DD0080/DD0080") # 4 Gyr + +# code length is the same in all sims +center = yt.YTQuantity(ds_fid20.quan(0.5,'code_length').to('cm')) +thickness = 2*yt.YTQuantity(3.5,'kpc') +width = yt.YTQuantity(600, 'kpc') +extent = (-width/2, width/2, -width/2, width/2) + +fields = ['density','entropy','radial_velocity'] + +rect_fid20 = ds_fid20.region([center, center, center], + [center-thickness/2, center-width/2, center-width/2], + [center+thickness/2, center+width/2, center+width/2]) + +rect_fid40 = ds_fid40.region([center, center, center], + [center-thickness/2, center-width/2, center-width/2], + [center+thickness/2, center+width/2, center+width/2]) + +rect_fid60 = ds_fid60.region([center, center, center], + [center-thickness/2, center-width/2, center-width/2], + [center+thickness/2, center+width/2, center+width/2]) + +rect_fid80 = ds_fid80.region([center, center, center], + [center-thickness/2, center-width/2, center-width/2], + [center+thickness/2, center+width/2, center+width/2]) + + +p_fid20 = yt.ProjectionPlot(ds_fid20, 'x', fields, width=width, + data_source=rect_fid20, weight_field='ones') +frb_fid20 = p_fid20.data_source.to_frb(width, 512) + +p_fid40 = yt.ProjectionPlot(ds_fid40, 'x', fields, width=width, + data_source=rect_fid40, weight_field='ones') +frb_fid40 = p_fid40.data_source.to_frb(width, 512) + +p_fid60 = yt.ProjectionPlot(ds_fid60, 'x', fields, width=width, + data_source=rect_fid60, weight_field='ones') +frb_fid60 = p_fid60.data_source.to_frb(width, 512) + +p_fid80 = yt.ProjectionPlot(ds_fid80, 'x', fields, width=width, + data_source=rect_fid80, weight_field='ones') +frb_fid80 = p_fid80.data_source.to_frb(width, 512) + + +fig = plt.figure(figsize=(14.5,10)) +grid = ImageGrid(fig, 111, nrows_ncols=(len(fields),4), + axes_pad=0, label_mode='1', share_all=True, + cbar_mode='edge', cbar_location='right', + cbar_pad=0) + +grid.axes_llc.tick_params(labelleft=False, labelbottom=False) +for ax in grid: + ax.tick_params(which='both', axis='both', direction='in') + ax.xaxis.set_major_locator(FixedLocator([-300,-200,-100,0,100,200,300])) + ax.xaxis.set_minor_locator(MultipleLocator(20)) + +d_norm = LogNorm(1e-32, 1e-26) +k_norm = LogNorm(1e0, 1e6) +v_norm = SymLogNorm(1, linscale=0.2, base=10, vmin=-3e3, vmax=3e3) + +ent_lo_cmap = plt.get_cmap('crest')(np.linspace(0, 1, 86)) +ent_hi_cmap = plt.get_cmap('flare_r')(np.linspace(0, 1, 170)) +colors = np.vstack((ent_lo_cmap, ent_hi_cmap)) +ent_cmap = LinearSegmentedColormap.from_list('crest_flare', colors) + +ax = grid.axes_column[0] +bar = AnchoredSizeBar(ax[2].transData, 100, "100 kpc", 8, + label_top=True, color='white', frameon=False, + borderpad=1, size_vertical=5, + fontproperties={'size':'x-large', + 'weight':'bold'}) +ax[2].add_artist(bar) + +circle = Circle((0,0), 206, transform=ax[1].transData, + edgecolor='white', fill=False, ls='--') +ax[1].add_artist(circle) + +ax[0].text(0.04, 0.88, f"{ds_fid20.current_time.to('Gyr'):.2f}", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_fid20 = ax[0].imshow(np.array(frb_fid20['density']), + origin='lower', extent=extent, + norm=d_norm) +k_fid20 = ax[1].imshow(np.array(frb_fid20['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_fid20 = ax[2].imshow(np.array(frb_fid20['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + +ax = grid.axes_column[1] +ax[0].text(0.04, 0.88, f"{ds_fid40.current_time.to('Gyr'):.2f}", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_fid40 = ax[0].imshow(np.array(frb_fid40['density']), + origin='lower', extent=extent, + norm=d_norm) +k_fid40 = ax[1].imshow(np.array(frb_fid40['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_fid40 = ax[2].imshow(np.array(frb_fid40['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + +ax = grid.axes_column[2] +ax[0].text(0.04, 0.88, f"{ds_fid60.current_time.to('Gyr'):.2f}", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_fid60 = ax[0].imshow(np.array(frb_fid60['density']), + origin='lower', extent=extent, + norm=d_norm) +k_fid60 = ax[1].imshow(np.array(frb_fid60['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_fid60 = ax[2].imshow(np.array(frb_fid60['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + +ax = grid.axes_column[3] +ax[0].text(0.04, 0.88, f"{ds_fid80.current_time.to('Gyr'):.2f}", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_fid80 = ax[0].imshow(np.array(frb_fid80['density']), + origin='lower', extent=extent, + norm=d_norm) +k_fid80 = ax[1].imshow(np.array(frb_fid80['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_fid80 = ax[2].imshow(np.array(frb_fid80['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + +d_cb = fig.colorbar(d_fid80, cax=grid.cbar_axes[0], extend='both') +k_cb = fig.colorbar(k_fid80, cax=grid.cbar_axes[1], extend='both') +v_cb = fig.colorbar(v_fid80, cax=grid.cbar_axes[2], extend='both') + +d_cb.set_ticks(FixedLocator([1e-31, 1e-29, 1e-27, 1e-25, 1e-32, 1e-30, 1e-28, 1e-26])) + +k_cb.set_ticks(FixedLocator([1e0, 1e2, 1e4, 1e6, 1e-1, 1e1, 1e3, 1e5])) + +v_cb.set_ticks(FixedLocator([-1e3,-1e2,-1e1,0,1e1,1e2,1e3])) +v_cb.minorticks_off() + +d_cb.set_label(r'Density [g cm$^{-3}$]', labelpad=12.0) +k_cb.set_label(r'Entropy [keV cm$^2$]', labelpad=12.0) +v_cb.set_label(r'Radial Velocity [km/s]', labelpad=12.0) + +fig.subplots_adjust(left=0.01, right=0.9, bottom=0.01, top=0.99) +fig.savefig("../fig_edge-ev_fid_poster.pdf", transparent=True) +fig.savefig("../fig_edge-ev_fid_poster.png", dpi=300) diff --git a/plot_sim_showoff2_poster.py b/plot_sim_showoff2_poster.py new file mode 100644 index 0000000..2cabe57 --- /dev/null +++ b/plot_sim_showoff2_poster.py @@ -0,0 +1,179 @@ +#!/usr/bin/env python +# coding: utf-8 + +######################################################################### +# Plot multipanel figures comparing sim variants (stored locally) @ 3 Gyr +######################################################################### + +import yt +import numpy as np +import seaborn as sns +import matplotlib.pyplot as plt +from matplotlib.colors import LogNorm, SymLogNorm, LinearSegmentedColormap +from matplotlib.ticker import FixedLocator, MultipleLocator, NullFormatter, NullLocator +from matplotlib.patches import Circle +from mpl_toolkits.axes_grid1 import ImageGrid +from mpl_toolkits.axes_grid1.anchored_artists import AnchoredSizeBar + +plt.rcParams.update({"font.size":18}) + +ds_fid60 = yt.load("../sample_data/fid/DD0060/DD0060") # 3 Gyr +ds_cfw60 = yt.load("../sample_data/cflow/DD0060/DD0060") +ds_low60 = yt.load("../sample_data/tctff5/DD0060/DD0060") +ds_hih60 = yt.load("../sample_data/tctff20/DD0060/DD0060") +ds_lin60 = yt.load("../sample_data/linrot/DD0060/DD0060") +ds_nor60 = yt.load("../sample_data/norot/DD0060/DD0060") + +# code length is the same in all sims +center = yt.YTQuantity(ds_fid60.quan(0.5,'code_length').to('cm')) +thickness = 2*yt.YTQuantity(3.5,'kpc') +width = yt.YTQuantity(600, 'kpc') +extent = (-width/2, width/2, -width/2, width/2) + +fields = ['density','entropy','radial_velocity'] + +def prep_frb(ds): + rect = ds.region([center, center, center], + [center-thickness/2, center-width/2, center-width/2], + [center+thickness/2, center+width/2, center+width/2]) + + p = yt.ProjectionPlot(ds, 'x', fields, width=width, + data_source=rect, weight_field='ones') + + frb = p.data_source.to_frb(width, 512) + + return frb + +frb_cfw60 = prep_frb(ds_cfw60) +frb_low60 = prep_frb(ds_low60) +frb_hih60 = prep_frb(ds_hih60) +frb_lin60 = prep_frb(ds_lin60) +frb_nor60 = prep_frb(ds_nor60) + +fig = plt.figure(figsize=(16,9)) +grid = ImageGrid(fig, 111, nrows_ncols=(len(fields),5), + axes_pad=0, label_mode='1', share_all=True, + cbar_mode='edge', cbar_location='right', + cbar_pad=0) + +grid.axes_llc.tick_params(labelleft=False, labelbottom=False) +for ax in grid: + ax.tick_params(which='both', axis='both', direction='in') + ax.xaxis.set_major_locator(FixedLocator([-300,-200,-100,0,100,200,300])) + ax.xaxis.set_minor_locator(MultipleLocator(20)) + +d_norm = LogNorm(1e-32, 1e-26) +k_norm = LogNorm(1e0, 1e6) +v_norm = SymLogNorm(1, linscale=0.2, base=10, vmin=-3e3, vmax=3e3) + +# with bounds of 1e0 to 1e6, mixed cmap is cleanly divided in half +ent_lo_cmap = plt.get_cmap('crest')(np.linspace(0, 1, 86)) +ent_hi_cmap = plt.get_cmap('flare_r')(np.linspace(0, 1, 170)) +colors = np.vstack((ent_lo_cmap, ent_hi_cmap)) +ent_cmap = LinearSegmentedColormap.from_list("crest_flare", colors) + +ax = grid.axes_column[0] +bar = AnchoredSizeBar(ax[2].transData, 100, "100 kpc", 8, + label_top=True, color='white', frameon=False, + borderpad=1, size_vertical=5, + fontproperties={'size':'x-large', + 'weight':'bold'}) +ax[2].add_artist(bar) + +circle = Circle((0,0), 206, transform=ax[1].transData, + edgecolor='white', fill=False, ls='--') +ax[1].add_artist(circle) + +ax[0].text(0.04, 0.88, "CoolFlow", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_cfw60 = ax[0].imshow(np.array(frb_cfw60['density']), + origin='lower', extent=extent, + norm=d_norm) +k_cfw60 = ax[1].imshow(np.array(frb_cfw60['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_cfw60 = ax[2].imshow(np.array(frb_cfw60['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + +ax = grid.axes_column[1] +ax[0].text(0.04, 0.88, "LowRatio", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_low60 = ax[0].imshow(np.array(frb_low60['density']), + origin='lower', extent=extent, + norm=d_norm) +k_low60 = ax[1].imshow(np.array(frb_low60['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_low60 = ax[2].imshow(np.array(frb_low60['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + +ax = grid.axes_column[2] +ax[0].text(0.04, 0.88, "HighRatio", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_hih60 = ax[0].imshow(np.array(frb_hih60['density']), + origin='lower', extent=extent, + norm=d_norm) +k_hih60 = ax[1].imshow(np.array(frb_hih60['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_hih60 = ax[2].imshow(np.array(frb_hih60['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + +ax = grid.axes_column[3] +ax[0].text(0.04, 0.88, "LinRot", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_lin60 = ax[0].imshow(np.array(frb_lin60['density']), + origin='lower', extent=extent, + norm=d_norm) +k_lin60 = ax[1].imshow(np.array(frb_lin60['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_lin60 = ax[2].imshow(np.array(frb_lin60['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + +ax = grid.axes_column[4] +ax[0].text(0.04, 0.88, "NoRot", + transform=ax[0].transAxes, + fontdict={'size':'x-large','weight':'bold','color':'white'}) + +d_nor60 = ax[0].imshow(np.array(frb_nor60['density']), + origin='lower', extent=extent, + norm=d_norm) +k_nor60 = ax[1].imshow(np.array(frb_nor60['entropy']), + origin='lower', extent=extent, + cmap=ent_cmap, norm=k_norm) +v_nor60 = ax[2].imshow(np.array(frb_nor60['radial_velocity'])/1e5, + origin='lower', extent=extent, + cmap='coolwarm', norm=v_norm) + + +d_cb = fig.colorbar(d_cfw60, cax=grid.cbar_axes[0], extend='both') +k_cb = fig.colorbar(k_cfw60, cax=grid.cbar_axes[1], extend='both') +v_cb = fig.colorbar(v_cfw60, cax=grid.cbar_axes[2], extend='both') + +d_cb.set_ticks(FixedLocator([1e-31, 1e-29, 1e-27, 1e-25, 1e-32, 1e-30, 1e-28, 1e-26])) + +k_cb.set_ticks(FixedLocator([1e0, 1e2, 1e4, 1e6, 1e-1, 1e1, 1e3, 1e5])) + +v_cb.set_ticks(FixedLocator([-1e3,-1e2,-1e1,0,1e1,1e2,1e3])) +v_cb.minorticks_off() + +d_cb.set_label(r'Density [g cm$^{-3}$]') +k_cb.set_label(r'Entropy [keV cm$^2$]') +v_cb.set_label(r'Radial Velocity [km/s]') + +fig.subplots_adjust(left=0.01, right=0.9, bottom=0.01, top=0.99) +fig.savefig("../fig_edge-comp_poster.pdf", transparent=True) + diff --git a/plot_tcool_dist_poster.py b/plot_tcool_dist_poster.py new file mode 100644 index 0000000..e80f24a --- /dev/null +++ b/plot_tcool_dist_poster.py @@ -0,0 +1,111 @@ +import numpy as np +import seaborn as sns +import matplotlib.pyplot as plt +from matplotlib.lines import Line2D +from matplotlib.ticker import FixedLocator + +plt.rcParams.update({"font.size":18}) + +fid = np.genfromtxt("../extracted_data/fid_tcool_mass_dist_CGM.txt") +cflow = np.genfromtxt("../extracted_data/cflow_tcool_mass_dist_CGM.txt") +tctff5 = np.genfromtxt("../extracted_data/tctff5_tcool_mass_dist_CGM.txt") +tctff20 = np.genfromtxt("../extracted_data/tctff20_tcool_mass_dist_CGM.txt") +linrot = np.genfromtxt("../extracted_data/linrot_tcool_mass_dist_CGM.txt") +norot = np.genfromtxt("../extracted_data/norot_tcool_mass_dist_CGM.txt") + +fid_disk = np.genfromtxt("../extracted_data/fid_tcool_mass_dist_CGM-disk.txt") +cflow_disk = np.genfromtxt("../extracted_data/cflow_tcool_mass_dist_CGM-disk.txt") +tctff5_disk = np.genfromtxt("../extracted_data/tctff5_tcool_mass_dist_CGM-disk.txt") +tctff20_disk = np.genfromtxt("../extracted_data/tctff20_tcool_mass_dist_CGM-disk.txt") +linrot_disk = np.genfromtxt("../extracted_data/linrot_tcool_mass_dist_CGM-disk.txt") +norot_disk = np.genfromtxt("../extracted_data/norot_tcool_mass_dist_CGM-disk.txt") + +fig, ax = plt.subplots(nrows=2, ncols=3, sharex=True, sharey=True, figsize=(12,9)) + +ax[0,0].loglog(fid[:,0], np.cumsum(fid[:, 21]), c='C0', label='Fiducial') +ax[1,0].loglog(fid[:,0], np.cumsum(fid[:, 81]), c='C0', label='Fiducial') + +ax[0,0].loglog(fid_disk[:,0], np.cumsum(fid_disk[:,1]), c='C0', ls='--') +ax[1,0].loglog(fid_disk[:,0], np.cumsum(fid_disk[:,5]), c='C0', ls='--') + +ax[0,0].loglog(cflow[:,0], np.cumsum(cflow[:, 21]), c='C3', label='Cooling Flow') +ax[1,0].loglog(cflow[:,0], np.cumsum(cflow[:, 81]), c='C3', label='Cooling Flow') + +ax[0,0].loglog(cflow_disk[:,0], np.cumsum(cflow_disk[:,1]), c='C3', ls='--') +ax[1,0].loglog(cflow_disk[:,0], np.cumsum(cflow_disk[:,5]), c='C3', ls='--') + + +ax[0,1].loglog(fid[:,0], np.cumsum(fid[:, 21]), c='C0') +ax[1,1].loglog(fid[:,0], np.cumsum(fid[:, 81]), c='C0') + +ax[0,1].loglog(tctff5[:,0], np.cumsum(tctff5[:, 21]), c='C2', label=r'$t_{\rm c}/t_{\rm ff}=5$') +ax[1,1].loglog(tctff5[:,0], np.cumsum(tctff5[:, 81]), c='C2', label=r'$t_{\rm c}/t_{\rm ff}=5$') + +ax[0,1].loglog(tctff5_disk[:,0], np.cumsum(tctff5_disk[:,1]), c='C2', ls='--') +ax[1,1].loglog(tctff5_disk[:,0], np.cumsum(tctff5_disk[:,5]), c='C2', ls='--') + +ax[0,1].loglog(tctff20[:,0], np.cumsum(tctff20[:, 21]), c='C1', label=r'$t_{\rm c}/t_{\rm ff}=20$') +ax[1,1].loglog(tctff20[:,0], np.cumsum(tctff20[:, 81]), c='C1', label=r'$t_{\rm c}/t_{\rm ff}=20$') + +ax[0,1].loglog(tctff20_disk[:,0], np.cumsum(tctff20_disk[:,1]), c='C1', ls='--') +ax[1,1].loglog(tctff20_disk[:,0], np.cumsum(tctff20_disk[:,5]), c='C1', ls='--') + + +ax[0,2].loglog(fid[:,0], np.cumsum(fid[:, 21]), c='C0') +ax[1,2].loglog(fid[:,0], np.cumsum(fid[:, 81]), c='C0') + +ax[0,2].loglog(linrot[:,0], np.cumsum(linrot[:, 21]), c='C4', label='Linear Rot') +ax[1,2].loglog(linrot[:,0], np.cumsum(linrot[:, 81]), c='C4', label='Linear Rot') + +ax[0,2].loglog(linrot_disk[:,0], np.cumsum(linrot_disk[:,1]), c='C4', ls='--') +ax[1,2].loglog(linrot_disk[:,0], np.cumsum(linrot_disk[:,5]), c='C4', ls='--') + +ax[0,2].loglog(norot[:,0], np.cumsum(norot[:, 21]), c='C5', label='No Rot') +ax[1,2].loglog(norot[:,0], np.cumsum(norot[:, 81]), c='C5', label='No Rot') + +ax[0,2].loglog(norot_disk[:,0], np.cumsum(norot_disk[:,1]), c='C5', ls='--') +ax[1,2].loglog(norot_disk[:,0], np.cumsum(norot_disk[:,5]), c='C5', ls='--') + + +#ax[0,0].set_title('0 Gyr', fontweight='bold') +#ax[1,0].set_title('4 Gyr', fontweight='bold') + +ax[0,0].text(0.04, 0.88, "1 Gyr", transform=ax[0,0].transAxes, + fontdict={"weight":"bold"}) +ax[1,0].text(0.04, 0.88, "4 Gyr", transform=ax[1,0].transAxes, + fontdict={"weight":"bold"}) + +cgm = Line2D([0], [0], ls='-', c='dimgray') +w_disk = Line2D([0], [0], ls='--', c='dimgray') + +fid = Line2D([0], [0], ls='-', c='C0') +cflow = Line2D([0], [0], ls='-', c='C3') +tctff5 = Line2D([0], [0], ls='-', c='C2') +tctff20 = Line2D([0], [0], ls='-', c='C1') +linrot = Line2D([0], [0], ls='-', c='C4') +norot = Line2D([0], [0], ls='-', c='C5') + +fig.legend([fid, cflow, tctff5, tctff20, linrot, norot, cgm, w_disk], + ["Fiducial","Cooling Flow",r"$t_{\rm cool}/t_{\rm ff} = 5$",r"$t_{\rm cool}/t_{\rm ff} =20$", + "Linear Rotation","No Rotation","CGM Only","CGM + Disk"], + loc='upper center', ncol=3) + +#ax[0,0].set_xlim(1e-5, 1e1) +ax[0,0].set_xlim(1e-1, 1e2) + +for i in range(2): + ax[i,0].set_ylabel(r"$M(t_{\rm c} < t_{\rm c,0})$", fontsize='large') + ax[i,0].yaxis.set_minor_locator(FixedLocator([1e8,1e10])) + +for i in range(3): + ax[1,i].set_xlabel(r"$t_{\rm c,0}$ [Gyr]", fontsize='large') + +ax[0,0].set_ylim(1e7, 1e11) + +for i in range(2): + for j in range(3): + ax[i,j].grid(axis='both') + ax[i,j].grid(axis='y', which='minor') + +fig.subplots_adjust(left=0.1, right=0.95, bottom=0.1, top=0.82) +fig.savefig("../fig_tcool-mass-dist_cumm-big_poster.pdf", transparent=True)