Source code for pyrfu.plot.ion_brazil_plot_thresh

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 3rd party imports
import matplotlib.pyplot as plt
import numpy as np

# Local imports
from pyrfu.models.ion_anisotropy_thresh import ion_anisotropy_thresh


[docs]def ion_brazil_plot_thresh(ax, legend: bool = True, colors: list = None): r"""Add the thresholds for the electromagnetic ion temperature anisotropy driven instabilities from linear Vlasov theory [1]_ [2]_ . The thresholds are given at :math:`\gamma = 10^{-2} \omega_{ci}` . Also changes the scale and limits of the axis to make it in form of a Brazil plot. Parameters ---------- ax : matplotlib.axes._subplots.AxesSubplot Axis where to plot the thresholds in a Brazil plot format. References ---------- .. [1] Daniel Verscharen et al 2016 ApJ 831 128 .. [2] Bennett A. Maruca et al 2012 ApJ 748 137 """ if colors is None: colors = ["deeppink", "m", "b", "c"] # Proton - electron plasma thresholds [1]_ # Proton cyclotron instability (l0,) = ax.loglog( np.logspace(-2, 4), ion_anisotropy_thresh(np.logspace(-2, 4), "proton-cyclotron", "10^-2"), color=colors[0], linestyle="--", lw=1.5, ) # Mirror-mode instability (l1,) = ax.loglog( np.logspace(-2, 4), ion_anisotropy_thresh(np.logspace(-2, 4), "mirror", "10^-2"), color=colors[1], linestyle="--", lw=1.5, ) # Parallel firehose (l2,) = ax.loglog( np.logspace(-2, 4), ion_anisotropy_thresh(np.logspace(-2, 4), "parallel-firehose", "10^-2"), color=colors[2], linestyle="--", lw=1.5, ) # Oblique firehose (l3,) = ax.loglog( np.logspace(-2, 4), ion_anisotropy_thresh(np.logspace(-2, 4), "oblique-firehose", "10^-2"), color=colors[3], linestyle="--", lw=1.5, ) ax.set_xlim([1e-2, 5e3]) ax.set_ylim([0.3, 1e1]) f = plt.gcf() if legend: f.legend( handles=[l0, l1, l2, l3], # The line objects labels=[ "Proton cyclotron", "Mirror Mode", "Parallel Firehose", "Oblique Firehose", ], loc="upper center", borderaxespad=0.1, ncol=4, frameon=False, handlelength=1.0, )