{ "cells": [ { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.patches as patches\n", "from matplotlib.colors import ListedColormap\n", "\n", "import scienceplots" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "\n", "def create_halo(center, radius, grid_size):\n", " \"\"\"Create a binary mask for a halo in a grid based on its center and radius.\"\"\"\n", " y, x = np.ogrid[-center[0]:grid_size-center[0], -center[1]:grid_size-center[1]]\n", " mask = x*x + y*y <= radius*radius\n", " return mask\n" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "image/png": "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pKenu4/1vcHuVJ6/7du384IgoG/fvkft7aHnr/ctXbpU9corr6jXrFnTmp6eLv797393vPjii5ojx52cf/757h07drTs3bu3OTY2Vvz1118VALB3714+ISFB3LVrV8ttt93meO655/xie1AK1W746quvlIIgYNWqVbbZs2e7R44cKf7+++8Kl8uFtLS0v4Rqd9/QHgcOHOCeeuopTWZmJn/eeefpzzvvPL0gCLBarRSqx5GVlcXzPI/3339ftXXrVj4vL4+bN2+erq2tDQ899NAp7bU4ZswY4Y477nBMnDjR8Oabb6qqq6tP6m//5ZdfKjUaDS644IKOLsKCggLusssu08+bN891zTXXUNfhMZzs81dfX8+uvfZa3bJly455TZyev971zTffKO666y7typUrbZMmTRIA4I477nA0NTWx9957r6O1Kooili9frho9enTIyJEjDWvWrFFqNBrJbrfDZrPhzjvvdAJAWlqaUFdX5xd5RV0X3RARESE2NzezNWvWKFJSUsSvvvpK+dxzz6nj4uKko10X7fqG/te//mW/6KKLXCe6fpqbm8s98MADmkceecSxePFi7apVq1o9L04A6N+/v2Hfvn1cS0sLnE4nowETf5WZmckPGDBAfPjhh+3z5s3TNzU1sdmzZ7s2bdrUYjQedZ7/cd1///2OlJQU4amnntIsWbJE27UFBfz1mtyWLVv4L7/8UvXMM8+0rV+/XrFmzRplbW0tx3EcnnjiibY5c+ZQK+c4Tub5s9vtmDNnjv6+++6zT5ky5bjX3+j56x3bt2/n//a3v+mffPLJtnnz5nV86DCZTFiyZInjueeeU19//fVOhUKBt99+W7Vv3z5+48aNLTqdDv369TOkpKSIe/fu5YcMGSJ6BjXt3LmTHzFihLBjxw7+mWeeUQ8YMEB85plnZNmE/ESYJJ3cuVhwi197+5e32lpDSktLzkhOTnZrtVq/me8lCAIWL16s/fTTT1UajUa64oornHa7nZWUlHBr16495iTpb7/9VvHUU09pMjIy+BO9obdt28b/OS8PH330Uet555132Bv40UcfVb/44ouaCy64wPXuu+/atNpjjr8gJ7Bu3TrFa6+9pjre6N8jOZ1O1NfXH/b+OZnBZsR7RFHE5Zdfrhs0aJD4xBNPnNIJlp4/33DXXXdpBg0aJN5yyy3Ol19+WfXMM89oKisrrW+//bby2Wef1ezdu7e5oaGBnXfeefrvv/++NTo6Wjp06BC3YsUK1bFCta2tjSssLFQkJvbZqtfpvbowB6/gLjrRYyhUZXCyb+jS0lJmNBql0NBeXbgoqJx99tn6PXv28DabjZnNZumTTz5pnTx5st+NOAxGv//+O3/22WeHDB8+vOPcsXLlytZRo0YFzbnE3+3atYubP3++PiwsTJo0aZJ7z549/C+//NJ65513agBg/fr1SkEQ8Pzzz7ede+65bgDw9VCl7l8ZqFQqxMbGnvDTTGJiIn1q7mG//vrrKS+/RnzD1KlTBUEQemWJUdIz0tPTxQMHDvxlbuBLL73kCUyf7OI9Hr+48EsIIYQcPHiQe+ihhzQ//fST4r333vPJBfmppUoIIcQv9O/fX/zkk09OeuyDHKilSgghhHgJhSohhBDiJRSqhBBCiJdQqBJCCCFeImuoMjCaMkIIIcTr5MoXWUNVoVC4AEhOp5NazIQQQk7bn3ki/ZkvvU7WKTVKpdKpVqnra2tro5RKpcQYtVwJIYR0jyRJrLa2VqFWq6uVSuUp7UTlLbKGKmMMcXFx+UVFRYaioiK/2NaHEEKI72JgbUlJSfsYk2cTL1nX/vUQRZHZHXatJEnUDUwIIaRbGGOiRq1p4ziuR3o9/WbtX47jJJ1W59OrZBBCCCEnQi1DQgghxEsoVAkhhBAvoVAlhBBCvIRClRBCCPGSkx79SwghhJDjo5YqIYQQ4iUUqoQQQoiXUKgSQgghXkKhSgghhHgJhSohhBDiJRSqhBBCiJdQqBJCCCFeQqFKCCGEeAmFKiGEEOIl/w/FZXb4NUALyAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot parameters\n", "grid_size = 5000\n", "\n", "halo_a_center = (0.6 * grid_size, 0.6 * grid_size)\n", "halo_a_radius = 0.2 * grid_size\n", "\n", "halo_b_center = (0.5 * grid_size, 0.4 * grid_size)\n", "halo_b_radius = 0.3 * grid_size\n", "\n", "halo_c_center = (0.325 * grid_size, 0.7 * grid_size)\n", "halo_c_radius = 0.15 * grid_size\n", "\n", "# Create grid masks for the haloes\n", "halo_a_mask = create_halo(halo_a_center, halo_a_radius, grid_size)\n", "halo_a_circle = patches.Circle((halo_a_center[1], grid_size - halo_a_center[0]), halo_a_radius, fill=False, color=\"dodgerblue\", linewidth=2)\n", "\n", "halo_b_mask = create_halo(halo_b_center, halo_b_radius, grid_size)\n", "halo_b_circle = patches.Circle((halo_b_center[1], grid_size - halo_b_center[0]), halo_b_radius, fill=False, color='crimson', linewidth=2)\n", "\n", "halo_c_mask = create_halo(halo_c_center, halo_c_radius, grid_size)\n", "halo_c_circle = patches.Circle((halo_c_center[1], grid_size - halo_c_center[0]), halo_c_radius, fill=False, color='navy', linewidth=2)\n", "\n", "# Calculate the overlap\n", "overlap_mask_a_b1 = halo_a_mask & halo_b_mask\n", "overlap_mask_a_b2 = halo_b_mask & halo_c_mask\n", "\n", "fig, ax = plt.subplots()\n", "ax.set_facecolor('none')\n", "fig.patch.set_facecolor('none')\n", "\n", "# Display Halo A\n", "# ax.imshow(halo_a_mask, extent=(0, grid_size, 0, grid_size), interpolation='none', cmap='Reds', alpha=0., label=r\"Halo $a \\in \\mathcal{A}$\")\n", "ax.add_patch(halo_a_circle)\n", "\n", "# Display Halo B\n", "# ax.imshow(halo_b_mask, extent=(0, grid_size, 0, grid_size), interpolation='none', cmap='Blues', alpha=0., label='Halo B')\n", "ax.add_patch(halo_b_circle)\n", "\n", "# Display Halo C\n", "# ax.imshow(halo_c_mask, extent=(0, grid_size, 0, grid_size), interpolation='none', cmap='Greens', alpha=0., label='Halo C')\n", "ax.add_patch(halo_c_circle)\n", "\n", "# Highlight the overlap\n", "gold_cmap = ListedColormap(['gold'])\n", "ax.imshow(overlap_mask_a_b1, extent=(0, grid_size, 0, grid_size), interpolation='none', cmap=\"Purples\", label='Overlap', alpha=0.7)\n", "# ax.imshow(overlap_mask_a_b2, extent=(0, grid_size, 0, grid_size), interpolation='none', cmap='Purples', alpha=0.25, label='Overlap')\n", "\n", "# Annotations and labels\n", "# ax.set_title('Toy Model of Halo Overlap')\n", "# ax.set_xlabel('X Coordinate')\n", "# ax.set_ylabel('Y Coordinate')\n", "\n", "# Creating a legend with color patches\n", "legend_elements = [patches.Patch(facecolor='crimson', label=r\"$a \\in \\mathcal{A}$\"),\n", " patches.Patch(facecolor='dodgerblue', label=r\"$b_1 \\in \\mathcal{B}$\"),\n", " patches.Patch(facecolor='navy', label=r\"$b_2 \\in \\mathcal{B}$\"),\n", " patches.Patch(facecolor='purple', alpha=0.7, label=r\"$X_{a b_1}$\")]\n", "\n", "ax.legend(handles=legend_elements, ncol=4, loc=\"lower center\")\n", "# ax.legend()\n", "# Grid\n", "ax.set_xticks(np.arange(0, grid_size + 1, int(0.1 * grid_size)), labels=[])\n", "ax.set_yticks(np.arange(0, grid_size + 1, int(0.1 * grid_size)), labels=[])\n", "# ax.grid(True, which='both', color='black', linewidth=0.5, linestyle='--', alpha=0.7)\n", "\n", "ax.spines['top'].set_visible(False)\n", "ax.spines['right'].set_visible(False)\n", "\n", "# Hide bottom and left spines\n", "ax.spines['bottom'].set_visible(False)\n", "ax.spines['left'].set_visible(False)\n", "\n", "# Hide the ticks\n", "ax.xaxis.set_ticks([])\n", "ax.yaxis.set_ticks([])\n", "\n", "# Hide the tick labels\n", "ax.set_xticklabels([])\n", "ax.set_yticklabels([])\n", "\n", "# Equation to be added\n", "equation = r\"$\\mathcal{O}_{a b_1} = \\frac{X_{a b_1}}{M_a + M_{b_1} - X_{a b_1}}$\"\n", "\n", "# Add the text with a box around it\n", "ax.text(0.2 * grid_size, 0.875 * grid_size, equation, fontsize=14, verticalalignment='center', \n", " horizontalalignment='center', bbox=dict(facecolor='white', alpha=0.5, boxstyle='round,pad=0.5'))\n", "fig.tight_layout()\n", "fig.savefig(\"../../plots/overlap_figure.pdf\", dpi=450, bbox_inches='tight')\n", "fig.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "venv_csiborg", "language": "python", "name": "python3" }, "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.11.7" } }, "nbformat": 4, "nbformat_minor": 2 }