This notebook outlines the target active region in this study, which is the "nose" of the "Halloween Smile", which went viral online during the 2022 Halloween. The active region is the decayed remnant of NOAA AR 13110 and 13113 identified in the previous Carrington Rotation. Link to Figure 1.
Note: The internal hyperlink only works on GitHub Pages or nbviewer. Do not click when viewing the notebook on GitHub.
In [1]:
import sunpy
import sunpy.map
import matplotlib.pyplot as plt
from matplotlib import rcParams
import matplotlib.patheffects as path_effects
from astropy.visualization import (ImageNormalize, AsinhStretch)
import numpy as np
from astropy.coordinates import SkyCoord
import astropy.units as u
In [2]:
ms_style_dict = {'text.usetex': True, 'font.family': 'serif', 'axes.linewidth': 1.2,
'xtick.major.width': 1.2, 'xtick.major.size': 4,
'ytick.major.width': 1.2, 'ytick.major.size': 4,
'xtick.minor.width': 1.2, 'xtick.minor.size': 2,
'ytick.minor.width': 1.2, 'ytick.minor.size': 2,
'xtick.direction': 'in', 'ytick.direction': 'in',
'text.latex.preamble': r'\usepackage[T1]{fontenc}'
r'\usepackage{amsmath}' r'\usepackage{siunitx}'
r'\sisetup{detect-all=True}'}
rcParams.update(ms_style_dict)
In [3]:
aia_1019_map = sunpy.map.Map("../../src/AIA/20221019/193/lvl15/aia.lev1_euv_12s.2022-10-19T192027Z.193.image.fits")
aia_1019_map = aia_1019_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1019_map.coordinate_frame),
top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1019_map.coordinate_frame))
aia_1021_map = sunpy.map.Map("../../src/AIA/20221021/193/lvl15/aia_lev15_193a_2022_10_21t19_20_28_84z_image_lev15.fits")
aia_1021_map = aia_1021_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1021_map.coordinate_frame),
top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1021_map.coordinate_frame))
aia_1023_map = sunpy.map.Map("../../src/AIA/20221023/193/lvl15/aia.lev1_euv_12s.2022-10-23T192003Z.193.image.fits")
aia_1023_map = aia_1023_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1023_map.coordinate_frame),
top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1023_map.coordinate_frame))
aia_1025_map = sunpy.map.Map("../../src/AIA/20221025/193/lvl15/aia.lev1_euv_12s.2022-10-25T192003Z.193.image.fits")
aia_1025_map = aia_1025_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1025_map.coordinate_frame),
top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1025_map.coordinate_frame))
aia_1026_map = sunpy.map.Map("../../src/AIA/20221026/193/lvl15/aia.lev1_euv_12s.2022-10-26T192003Z.193.image.fits")
aia_1026_map = aia_1026_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1026_map.coordinate_frame),
top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1026_map.coordinate_frame))
In [4]:
fig = plt.figure(figsize=(6,7),layout='constrained')
gs = fig.add_gridspec(5,4, figure=fig,
hspace=0.0)
ax_1026 = fig.add_subplot(gs[0:4,:], projection=aia_1026_map)
ax_1019 = fig.add_subplot(gs[4,0], projection=aia_1019_map)
ax_1021 = fig.add_subplot(gs[4,1], projection=aia_1021_map)
ax_1023 = fig.add_subplot(gs[4,2], projection=aia_1023_map)
ax_1025 = fig.add_subplot(gs[4,3], projection=aia_1025_map)
aia_1026_map.plot(axes=ax_1026, title=None,
norm=ImageNormalize(vmin=np.nanpercentile(aia_1026_map.data, 8),
vmax=np.nanpercentile(aia_1026_map.data, 99.5),
stretch=AsinhStretch(0.05)))
aia_1019_map.plot(axes=ax_1019, title=None,
norm=ImageNormalize(vmin=np.nanpercentile(aia_1019_map.data, 8),
vmax=np.nanpercentile(aia_1019_map.data, 99.5),
stretch=AsinhStretch(0.05)))
aia_1021_map.plot(axes=ax_1021, title=None,
norm=ImageNormalize(vmin=np.nanpercentile(aia_1021_map.data, 8),
vmax=np.nanpercentile(aia_1021_map.data, 99.5),
stretch=AsinhStretch(0.05)))
aia_1023_map.plot(axes=ax_1023, title=None,
norm=ImageNormalize(vmin=np.nanpercentile(aia_1023_map.data, 8),
vmax=np.nanpercentile(aia_1023_map.data, 99.5),
stretch=AsinhStretch(0.05)))
aia_1025_map.plot(axes=ax_1025, title=None,
norm=ImageNormalize(vmin=np.nanpercentile(aia_1025_map.data, 8),
vmax=np.nanpercentile(aia_1025_map.data, 99.5),
stretch=AsinhStretch(0.05)))
ax_1026.text(1.,0.98,
r'\textbf{' + \
r'SDO/AIA 19.3\,nm\quad ' + \
r'}' + \
'\n' + \
r'\textbf{' + \
r'{}'.format(aia_1026_map.date.isot[:-4]) + \
r'}',
fontsize=15, color='white', transform=ax_1026.transAxes,
ha='right', va='top',
path_effects=[path_effects.Stroke(linewidth=1.2, foreground='black'),
path_effects.Normal()])
ax_1026.annotate(' ', (1850,2400),(2100,2750),
arrowprops=dict(width=13, headwidth=25,
headlength=17,
facecolor='#DA291C',
linewidth=2.5, edgecolor='#FFFFFF'),
)
ax_1019.set_title('2022-10-19', fontsize=12)
ax_1021.set_title('2022-10-21', fontsize=12)
ax_1023.set_title('2022-10-23', fontsize=12)
ax_1025.set_title('2022-10-25', fontsize=12)
ax_1019.annotate(' ', (0.1,0.7), (0.3, 0.9),
arrowprops=dict(width=8, headwidth=13,
headlength=10,
facecolor='#DA291C',
linewidth=1.5, edgecolor='#FFFFFF'),
xycoords=ax_1019.transAxes)
ax_1021.annotate(' ', (0.15,0.7), (0.35, 0.9),
arrowprops=dict(width=8, headwidth=13,
headlength=10,
facecolor='#DA291C',
linewidth=1.5, edgecolor='#FFFFFF'),
xycoords=ax_1021.transAxes)
ax_1023.annotate(' ', (0.28,0.7), (0.48, 0.9),
arrowprops=dict(width=8, headwidth=13,
headlength=10,
facecolor='#DA291C',
linewidth=1.5, edgecolor='#FFFFFF'),
xycoords=ax_1023.transAxes)
ax_1025.annotate(' ', (0.45,0.7), (0.65, 0.9),
arrowprops=dict(width=8, headwidth=13,
headlength=10,
facecolor='#DA291C',
linewidth=1.5, edgecolor='#FFFFFF'),
xycoords=ax_1025.transAxes)
for ax_ in (ax_1019, ax_1021, ax_1023, ax_1025):
ax_.axis('off')
ax_1026.set_xlabel(ax_1026.get_xlabel(), fontsize=12)
ax_1026.set_ylabel(ax_1026.get_ylabel(), fontsize=12)
ax_1026.tick_params(axis='both', labelsize=12)
plt.savefig("../../figs/ms_eis_eui_upflow/halloween_smile.pdf",dpi=300,bbox_inches='tight',pad_inches=0.1)
In [5]:
fig = plt.figure(figsize=(6,6),layout='constrained')
ax = fig.add_subplot(projection=aia_1026_map)
aia_1026_map.plot(axes=ax, title=None,
norm=ImageNormalize(vmin=np.nanpercentile(aia_1026_map.data, 8),
vmax=np.nanpercentile(aia_1026_map.data, 99.5),
stretch=AsinhStretch(0.05)))
ax.text(1.,0.98,r'\textbf{' + \
r"``Halloween Smiling Sun''" + \
r'}' + \
'\n' + \
r'\textbf{' + \
r'SDO/AIA 19.3\,nm\quad ' + \
r'}' + \
'\n' + \
r'\textbf{' + \
r'{}'.format(aia_1026_map.date.isot[:-4]) + \
r'}',
fontsize=20, color='white', transform=ax.transAxes,
ha='right', va='top',
path_effects=[path_effects.Stroke(linewidth=3, foreground='black'),
path_effects.Normal()])
ax.annotate(' ', (1850,2400),(2050,2700),
arrowprops=dict(width=10, headwidth=20,
facecolor='white',
linewidth=.6),
)
ax.set_xlabel(ax.get_xlabel(), fontsize=12)
ax.set_ylabel(ax.get_ylabel(), fontsize=12)
ax.axis('off')
fig.savefig("../../figs/test_figs/halloween_smile_karbacher.pdf",dpi=300,bbox_inches='tight',pad_inches=0.1)
In [6]:
fig = plt.figure(figsize=(6,6),layout='constrained')
ax = fig.add_subplot(projection=aia_1026_map)
aia_1026_map.plot(axes=ax, title=None,
norm=ImageNormalize(vmin=np.nanpercentile(aia_1026_map.data, 8),
vmax=np.nanpercentile(aia_1026_map.data, 99.5),
stretch=AsinhStretch(0.05)))
# ax.text(1.,0.98,r'\textbf{' + \
# r"``Halloween Smiling Sun''" + \
# r'}' + \
# '\n' + \
# r'\textbf{' + \
# r'SDO/AIA 19.3\,nm\quad ' + \
# r'}' + \
# '\n' + \
# r'\textbf{' + \
# r'{}'.format(aia_1026_map.date.isot[:-4]) + \
# r'}',
# fontsize=20, color='white', transform=ax.transAxes,
# ha='right', va='top',
# path_effects=[path_effects.Stroke(linewidth=3, foreground='black'),
# path_effects.Normal()])
# ax.annotate(' ', (1850,2400),(2050,2700),
# arrowprops=dict(width=10, headwidth=20,
# facecolor='white',
# linewidth=.6),
# )
ax.set_xlabel(ax.get_xlabel(), fontsize=12)
ax.set_ylabel(ax.get_ylabel(), fontsize=12)
ax.axis('off')
fig.savefig("../../figs/test_figs/halloween_smile_karbacher_frontpage.png",dpi=300,bbox_inches='tight',pad_inches=0)