{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Reproducing 3D Interactive Figure of DIB SNR Inside/Outside the Local Bubble in Saydjari+2023" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Setup the plotly template options" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2022-12-08T22:45:42.250125Z", "start_time": "2022-12-08T22:45:22.617038Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import plotly.graph_objects as go\n", "from astropy.table import Table\n", "from plotly.offline import plot\n", "import glob\n", "import matplotlib.colors as colors\n", "from matplotlib import cm\n", "from matplotlib.colors import Normalize\n", "import matplotlib\n", "from astropy.table import vstack\n", "import os\n", "import h5py\n", "\n", "DEFAULT_FONT = 'Arial, sans-serif'\n", "\n", "import plotly.io as plt_io\n", "\n", "# create our custom_dark theme from the plotly_dark template\n", "plt_io.templates[\"custom_dark\"] = plt_io.templates[\"plotly_dark\"]\n", "\n", "# set the paper_bgcolor and the plot_bgcolor to a new color\n", "plt_io.templates[\"custom_dark\"]['layout']['paper_bgcolor'] = 'black'\n", "plt_io.templates[\"custom_dark\"]['layout']['plot_bgcolor'] = 'black'\n", "\n", "# you may also want to change gridline colors if you are modifying background\n", "plt_io.templates['custom_dark']['layout']['yaxis']['gridcolor'] = 'black'\n", "plt_io.templates['custom_dark']['layout']['xaxis']['gridcolor'] = 'black'\n", "\n", "data = []\n", "\n", "# make figure\n", "fig_dict = {\n", " \"data\": [],\n", " \"layout\": {}}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Setup the plotly layout parameters" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2022-12-08T22:52:21.055017Z", "start_time": "2022-12-08T22:52:21.037405Z" } }, "outputs": [], "source": [ "fig_dict['layout'] = go.Layout(\n", " margin=dict(r=50, l=50, b=50, t=50), # noqa\n", " width=1400,\n", " scene=dict(\n", " xaxis=dict(\n", " title='X [pc]',\n", " titlefont=dict(\n", " family=DEFAULT_FONT,\n", " size=20,\n", " color='#686868'\n", " ),\n", " showspikes=False,\n", " showgrid=True,\n", " showline=True,\n", " backgroundcolor='black',\n", " gridcolor='#303030',\n", " zerolinecolor='#303030',\n", " showticklabels=True,\n", " tickfont=dict(\n", " family=DEFAULT_FONT,\n", " size=12,\n", " color='#686868'),\n", " range=[-400, 400]),\n", " yaxis=dict(\n", " title='Y [pc]',\n", " titlefont=dict(\n", " family=DEFAULT_FONT,\n", " size=20,\n", " color='#686868'), #'#a9a9a9'\n", " showspikes=False,\n", " showgrid=True,\n", " showline=False,\n", " zerolinecolor='#303030',\n", " backgroundcolor='black',\n", " gridcolor='#303030',\n", " range=[-400, 400],\n", " showticklabels=True,\n", " tickfont=dict(\n", " family=DEFAULT_FONT,\n", " size=12,\n", " color='#686868'),\n", " ),\n", " zaxis=dict(\n", " title='Z [pc]',\n", " titlefont=dict(\n", " family=DEFAULT_FONT,\n", " size=20,\n", " color='#686868'),\n", " showspikes=False,\n", " showgrid=True,\n", " showline=False,\n", " zerolinecolor='gold',\n", " zerolinewidth=5,\n", " backgroundcolor='black',\n", " gridcolor='#303030',\n", " range=[-400, 400],\n", " showticklabels=True,\n", " tickfont=dict(\n", " family=DEFAULT_FONT,\n", " size=12,\n", " color='#686868'),\n", " ),\n", " aspectratio=dict(x=1*1.65, y=1*1.65,z=1*1.65),))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Leike+2020 3D dust data with Densities > 10 cm^-3 as a 3D point cloud" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2022-12-08T22:52:30.460544Z", "start_time": "2022-12-08T22:52:30.010269Z" } }, "outputs": [], "source": [ "tl = Table.read(\"../support/3D_Dust_10cc_Leike2020.fits\")\n", "tl.sort('ys')\n", "dustlayer = go.Scatter3d(x = tl['xs'][::20],\n", " y = tl['ys'][::20],\n", " z = tl['zs'][::20],\n", " mode=\"markers\",\n", " marker = dict(size = 6, color = 'gray'),\n", " opacity=0.015,\n", " showlegend=True,\n", " visible = True,\n", " legendgroup='dust',\n", " hoverinfo='skip',\n", " name='3D Dust (Leike+2020)')\n", "fig_dict['data'].append(dustlayer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot a 3D model for the Bubble's Surface from Pelgrims+2020" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2022-12-08T22:52:38.837804Z", "start_time": "2022-12-08T22:52:38.705951Z" } }, "outputs": [], "source": [ "tb = Table.read(\"../support/Local_Bubble_Pelgrims2020.fits\")\n", "lbubble = go.Scatter3d(x = tb['x'][::10],\n", " y = tb['y'][::10],\n", " z = tb['z'][::10],\n", " marker = dict(size = 6, colorscale =[[0.0, 'rgb(0, 0, 0)'], [0.5, 'rgb(103, 100, 193)'],[1.0, 'rgb(0, 0, 0)']], color =tb['z'][::10],cmin=-300,cmax=300),\n", " opacity=0.05,\n", " showlegend=True,\n", " visible = True,\n", " legendgroup='bubble',\n", " hoverinfo='skip',\n", " name='Local Bubble (Pelgrims+2020)')\n", "fig_dict['data'].append(lbubble)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Current Sun Position" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2022-12-08T22:52:41.251558Z", "start_time": "2022-12-08T22:52:41.221121Z" } }, "outputs": [], "source": [ "sun_current = go.Scatter3d(x=[0], \n", " y=[0], \n", " z=[0], \n", " mode='markers',\n", " marker = dict(size = 3 , color = 'yellow', symbol='x'),\n", " hoverinfo='text',\n", " hovertext=['Sun'],\n", " opacity=1,\n", " name='Sun',\n", " showlegend=True,\n", " legendgroup='sun_current',\n", " visible=True)\n", "fig_dict['data'].append(sun_current)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2022-12-08T22:53:04.148555Z", "start_time": "2022-12-08T22:52:56.850137Z" } }, "outputs": [], "source": [ "import matplotlib.colors as mcolors\n", "from matplotlib import colormaps as cm\n", "import matplotlib.pyplot as plt\n", "import colorcet as cc\n", "\n", "f = h5py.File(\"../dib_explore_v14.h5\",'r')\n", "\n", "#generate colormap\n", "colorlist = plt.cm.get_cmap(\"cet_CET_L6_r\",512)(np.linspace(0.9,0.5,256))\n", "colorlist = np.append(colorlist,plt.cm.get_cmap(\"cet_CET_L4_r\",512)(np.linspace(0.5,0,256)),axis=0)\n", "cmap_split = mcolors.LinearSegmentedColormap.from_list('mycmap', colorlist, N=512)\n", "\n", "#generate colormap normalization\n", "vmin=np.min(f['dib_snr'][:])\n", "vcenter=5\n", "vmax=10\n", "norm = colors.TwoSlopeNorm(vmin=vmin,vcenter=vcenter,vmax=vmax)\n", "\n", "#grab RGBA colors of all the detections and convert them to strings to faciltate plotly 3D scatter plotting\n", "rgbas = cmap_split(norm(f['dib_snr'][:]))\n", "rgb_str = [r'{}'.format(mcolors.rgb2hex((rgba[0], rgba[1], rgba[2]))) for rgba in rgbas]\n", "\n", "\n", "dibs = go.Scatter3d(x = f['X'][:]*1000,\n", " y = f['Y'][:]*1000,\n", " z = f['Z'][:]*1000,\n", " opacity=0.85,\n", " mode = 'markers',\n", " hoverinfo='text',\n", " hovertext=['DIB SNR: {:.1f}
EW: {:.2f}
VLSR: {:.1f}
Sigma: {:.2f}'.format(f['dib_snr'][:][k],f['ew'][:][k],f['v_dust_lsr'][:][k],f['sig'][:][k]) for k in range(0,len(f['X']))],\n", " marker = dict(showscale=False,size = 5, color = rgb_str,symbol='circle'),\n", " name='DIB Catalog (Saydjari+2022)',\n", " showlegend=True,\n", " legendgroup='dibs',\n", " visible = True)\n", "\n", "fig_dict['data'].append(dibs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Output to File" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2022-12-08T22:53:09.449438Z", "start_time": "2022-12-08T22:53:08.004836Z" } }, "outputs": [ { "data": { "text/plain": [ "'../figures/DIB_Local_Bubble_SNR.html'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig = go.Figure(fig_dict)\n", "\n", "fig.update_layout(showlegend = True, template = 'custom_dark')\n", "fig.layout.legend.font.size = 14\n", "fig.layout.legend.font.color = 'white'\n", "fig.layout.legend.title='Click to Show/Hide:'\n", "fig.layout.legend.title.side='top'\n", "fig.layout.legend.title.font.size=22\n", "fig.update_layout(legend= {'itemsizing': 'constant'})\n", "\n", "camera = dict(\n", " up=dict(x=0, y=0, z=1),\n", " eye = {'x': -1.25, 'y': -2.0, 'z': 1.25},\n", " projection=dict(type='orthographic')\n", ")\n", "\n", "fig.update_layout(scene_camera=camera)\n", "\n", "plot(fig, filename='../figures/DIB_Local_Bubble_SNR.html', auto_open=False, auto_play=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Generate Colorbar to Accompany Plotly Figure" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2022-12-08T22:54:12.273310Z", "start_time": "2022-12-08T22:54:12.091129Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize = (10,10))\n", "plt.style.use('dark_background')\n", "\n", "plt.scatter(f['X'][:]*1000,f['Y'][:]*1000,c = f['dib_snr'][:],cmap=cmap_split,norm=norm)\n", "plt.xlim(-500,500)\n", "plt.ylim(-500,500)\n", "plt.gca().set_visible(False)\n", "cbar = plt.colorbar()\n", "cbar.ax.set_yticks([ 4., 5., 6., 7., 8., 9., 10.])\n", "cbar.set_label('DIB S/N', rotation=270,fontsize=20,labelpad=30)\n", "cbar.ax.tick_params(labelsize=15)\n", "plt.savefig(\"../figures/dib_snr_cbar.png\",dpi=200,bbox_inches='tight')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:.conda-dibs]", "language": "python", "name": "conda-env-.conda-dibs-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.8" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }