small improvments to overplot_pol

This commit is contained in:
2025-03-11 16:13:41 +01:00
parent 6b52b85002
commit efca472af1

View File

@@ -1599,7 +1599,7 @@ class overplot_pol(align_maps):
def overplot( def overplot(
self, self,
levels=None, levels="Default",
P_cut=0.99, P_cut=0.99,
SNRi_cut=1.0, SNRi_cut=1.0,
step_vec=1, step_vec=1,
@@ -1668,9 +1668,7 @@ class overplot_pol(align_maps):
["linewidth", [["linewidth", 0.3 * self.px_scale]]], ["linewidth", [["linewidth", 0.3 * self.px_scale]]],
]: ]:
try: try:
test = kwargs[key] _ = kwargs[key]
if isinstance(test, LogNorm):
kwargs[key] = LogNorm(vmin, vmax)
except KeyError: except KeyError:
for key_i, val_i in value: for key_i, val_i in value:
kwargs[key_i] = val_i kwargs[key_i] = val_i
@@ -1703,7 +1701,7 @@ class overplot_pol(align_maps):
else: else:
self.ax_overplot.set_facecolor("white") self.ax_overplot.set_facecolor("white")
font_color = "black" font_color = "black"
if hasattr(kwargs, "norm"): if "norm" in kwargs.keys():
self.im = self.ax_overplot.imshow( self.im = self.ax_overplot.imshow(
other_data * self.other_convert, other_data * self.other_convert,
alpha=1.0, alpha=1.0,
@@ -1766,50 +1764,51 @@ class overplot_pol(align_maps):
# Display Stokes as contours # Display Stokes as contours
disptypestr = "" disptypestr = ""
if disptype.lower() == "p": if levels is not None:
disptypestr = "polarization degree" if disptype.lower() == "p":
if levels is None: disptypestr = "polarization degree"
levels = np.array([2.0, 5.0, 10.0, 20.0, 90.0]) / 100.0 * np.max(pol[stkI > 0.0]) if levels == "Default":
cont_stk = self.ax_overplot.contour( levels = np.array([2.0, 5.0, 10.0, 20.0, 90.0]) / 100.0 * np.max(pol[stkI > 0.0])
pol * 100.0, cont_stk = self.ax_overplot.contour(
levels=levels * 100.0, pol * 100.0,
colors="grey", levels=levels * 100.0,
alpha=0.75, colors="grey",
transform=self.ax_overplot.get_transform(self.wcs_UV), alpha=0.75,
) transform=self.ax_overplot.get_transform(self.wcs_UV),
if disptype.lower() == "pf": )
disptypestr = "polarized flux" elif disptype.lower() == "pf":
if levels is None: disptypestr = "polarized flux"
levels = np.array([2.0, 5.0, 10.0, 20.0, 90.0]) / 100.0 * np.max(stkI[stkI > 0.0] * pol[stkI > 0.0]) * self.map_convert if levels == "Default":
cont_stk = self.ax_overplot.contour( levels = np.array([2.0, 5.0, 10.0, 20.0, 90.0]) / 100.0 * np.max(stkI[stkI > 0.0] * pol[stkI > 0.0]) * self.map_convert
stkI * pol * self.map_convert, cont_stk = self.ax_overplot.contour(
levels=levels, stkI * pol * self.map_convert,
colors="grey", levels=levels,
alpha=0.75, colors="grey",
transform=self.ax_overplot.get_transform(self.wcs_UV), alpha=0.75,
) transform=self.ax_overplot.get_transform(self.wcs_UV),
if disptype.lower() == "snri": )
disptypestr = "Stokes I signal-to-noise" elif disptype.lower() == "snri":
if levels is None: disptypestr = "Stokes I signal-to-noise"
levels = np.array([2.0, 5.0, 10.0, 20.0, 90.0]) / 100.0 * np.max(SNRi[stk_cov[0, 0] > 0.0]) if levels == "Default":
cont_stk = self.ax_overplot.contour( levels = np.array([2.0, 5.0, 10.0, 20.0, 90.0]) / 100.0 * np.max(SNRi[stk_cov[0, 0] > 0.0])
SNRi, cont_stk = self.ax_overplot.contour(
levels=levels, SNRi,
colors="grey", levels=levels,
alpha=0.75, colors="grey",
transform=self.ax_overplot.get_transform(self.wcs_UV), alpha=0.75,
) transform=self.ax_overplot.get_transform(self.wcs_UV),
else: # default to intensity contours )
disptypestr = "Stokes I" else: # default to intensity contours
if levels is None: disptypestr = "Stokes I"
levels = np.array([2.0, 5.0, 10.0, 20.0, 90.0]) / 100.0 * np.max(stkI[stkI > 0.0]) * self.map_convert if levels == "Default":
cont_stk = self.ax_overplot.contour( levels = np.array([2.0, 5.0, 10.0, 20.0, 90.0]) / 100.0 * np.max(stkI[stkI > 0.0]) * self.map_convert
stkI * self.map_convert, cont_stk = self.ax_overplot.contour(
levels=levels, stkI * self.map_convert,
colors="grey", levels=levels,
alpha=0.75, colors="grey",
transform=self.ax_overplot.get_transform(self.wcs_UV), alpha=0.75,
) transform=self.ax_overplot.get_transform(self.wcs_UV),
)
# self.ax_overplot.clabel(cont_stk, inline=False, colors="k", fontsize=7) # self.ax_overplot.clabel(cont_stk, inline=False, colors="k", fontsize=7)
# Display pixel scale and North direction # Display pixel scale and North direction
@@ -1881,8 +1880,10 @@ class overplot_pol(align_maps):
handles[np.argmax([li == "{0:s} polarization map".format(self.map_observer) for li in labels])] = FancyArrowPatch( handles[np.argmax([li == "{0:s} polarization map".format(self.map_observer) for li in labels])] = FancyArrowPatch(
(0, 0), (0, 1), arrowstyle="-", fc="w", ec="k", lw=2 (0, 0), (0, 1), arrowstyle="-", fc="w", ec="k", lw=2
) )
labels.append("{0:s} {1:s} contour".format(self.map_observer, disptypestr)) if disptypestr != "":
handles.append(Rectangle((0, 0), 1, 1, fill=False, ec=cont_stk.get_edgecolor()[0])) labels.append("{0:s} {1:s} contour".format(self.map_observer, disptypestr))
handles.append(Rectangle((0, 0), 1, 1, fill=False, ec=cont_stk.get_edgecolor()[0]))
disptypestr += " contours"
self.legend = self.ax_overplot.legend( self.legend = self.ax_overplot.legend(
handles=handles, handles=handles,
labels=labels, labels=labels,
@@ -1893,7 +1894,7 @@ class overplot_pol(align_maps):
) )
self.fig_overplot.suptitle( self.fig_overplot.suptitle(
"{0:s} observation from {1:s} overplotted with {2:s} contours from {3:s}".format(obj, self.other_observer, vecstr + disptypestr, self.map_observer), "{0:s} observation from {1:s} overplotted with {2:s} from {3:s}".format(obj, self.other_observer, vecstr + disptypestr, self.map_observer),
wrap=True, wrap=True,
) )