Module quantum_inferno.plot_templates.figure_attributes

Base class for plotting figures. Sets most common attributes for all plots.

Classes

class AspectRatioType (value, names=None, *, module=None, qualname=None, type=None, start=1)

Enumeration denoting aspect ratios

Expand source code
class AspectRatioType(enum.Enum):
    """
    Enumeration denoting aspect ratios
    """
    R640x360 = 1
    R1280x720 = 2
    R1920x1080 = 3
    R2560x1440 = 4
    R3840x2160 = 5

Ancestors

  • enum.Enum

Class variables

var R1280x720
var R1920x1080
var R2560x1440
var R3840x2160
var R640x360
class AudioParams (aspect_ratio: AspectRatioType = AspectRatioType.R1920x1080, fill_gaps: bool = True)

Audio plot figure parameters. Refer to FigureParameters class for valid options. Uses 1920X1080 as default for FigureParameters

Attributes

fill_gaps
bool, if True, gaps in audio are filled. Default True

:param aspect_ratio: refer to AspectRatioType class for valid options

Expand source code
class AudioParams(FigureParameters):
    """
    Audio plot figure parameters.  Refer to FigureParameters class for valid options.
    Uses 1920X1080 as default for FigureParameters

    Attributes:
        fill_gaps: bool, if True, gaps in audio are filled.  Default True
    """
    def __init__(self, aspect_ratio: AspectRatioType = AspectRatioType.R1920x1080, fill_gaps: bool = True):
        super().__init__(aspect_ratio)
        self.fill_gaps: bool = fill_gaps

Ancestors

class FigureAttributes (fig_size_ratio=array([640, 400]), fontsize1_scale=5, fontsize2_scale=4, line_color='k', line_style='-')

This is the most basic parent class – sets the plot canvas as well as figure handling functions. This is where figure size, font style and sizes, line weights and colors, etc. are established. All subsequent plot classes will inherit these attributes, overriding them if necessary.

Attributes

fig_scale
float, scale factor for the figure. Default 2.0
fig_dpi
int, dots per inch for the figure. Default 300
ratio
np.array, 2d array of figure width, height ratio. Default [640, 400]
font_size_1st_level
int, scale for fontsize level 1 (titles, axes labels…). Default 5
font_size_2nd_level
int, scale for fontsize level 2 (legend labels, ticks…). Default 4
line_color
str, color for line in plot. Default 'k' (black)
line_style
str, style of line in plot. Default '-' (solid line)
fig_aspect_ratio
np.array, figure aspect ratio. Default fig_scale * ratio
fig_face_color
str, face color of the figure. Default "w" (white)
fig_edge_color
str, edge color of the figure. Default fig_face_color
fig_size
np.array, size of the figure. Default fig_aspect_ratio / fig_dpi
font_color
str, color of the font. Default "k" (black)
font_weight
str, weight of the font. Default "normal"
line_weight
int, weight of the line. Default fig_scale * 1
tick_size
int, size of the ticks. Default font_size_2nd_level
legend_label_size
int, size of the legend labels. Default font_size_2nd_level
fig
figure object. Default None

Initialize the FigureAttributes

:param fig_size_ratio: 2d array of figure width, height ratio. Default [640, 400] :param fontsize1_scale: int, scale for fontsize level 1 (titles, axes labels…). Default 5 :param fontsize2_scale: int, scale for fontsize level 2 (legend labels, ticks…) Default 4 :param line_color: string, color for line in plot. Default 'k' (black) :param line_style: string, style of line in plot. Default '-' (solid line)

Expand source code
class FigureAttributes:
    """
    This is the most basic parent class -- sets the plot canvas as well as figure handling functions. This is where
    figure size, font style and sizes, line weights and colors, etc. are established. All subsequent plot classes
    will inherit these attributes, overriding them if necessary.

    Attributes:
        fig_scale: float, scale factor for the figure.  Default 2.0
        fig_dpi: int, dots per inch for the figure.  Default 300
        ratio: np.array, 2d array of figure width, height ratio.  Default [640, 400]
        font_size_1st_level: int, scale for fontsize level 1 (titles, axes labels...).  Default 5
        font_size_2nd_level: int, scale for fontsize level 2 (legend labels, ticks...).  Default 4
        line_color: str, color for line in plot.  Default 'k' (black)
        line_style: str, style of line in plot.  Default '-' (solid line)
        fig_aspect_ratio: np.array, figure aspect ratio.  Default fig_scale * ratio
        fig_face_color: str, face color of the figure.  Default "w" (white)
        fig_edge_color: str, edge color of the figure.  Default fig_face_color
        fig_size: np.array, size of the figure.  Default fig_aspect_ratio / fig_dpi
        font_color: str, color of the font.  Default "k" (black)
        font_weight: str, weight of the font.  Default "normal"
        line_weight: int, weight of the line.  Default fig_scale * 1
        tick_size: int, size of the ticks.  Default font_size_2nd_level
        legend_label_size: int, size of the legend labels.  Default font_size_2nd_level
        fig: figure object.  Default None
    """
    def __init__(self, fig_size_ratio=np.array([640, 400]), fontsize1_scale=5, fontsize2_scale=4,
                 line_color='k', line_style='-'):
        """
        Initialize the FigureAttributes

        :param fig_size_ratio: 2d array of figure width, height ratio.  Default [640, 400]
        :param fontsize1_scale: int, scale for fontsize level 1 (titles, axes labels...).  Default 5
        :param fontsize2_scale: int, scale for fontsize level 2 (legend labels, ticks...)  Default 4
        :param line_color: string, color for line in plot.  Default 'k' (black)
        :param line_style: string, style of line in plot.  Default '-' (solid line)
        """
        self.fig_scale = 2.0
        self.fig_dpi = 300
        self.ratio = fig_size_ratio
        self.font_size_1st_level = np.rint(self.fig_scale * fontsize1_scale)
        self.font_size_2nd_level = np.rint(self.fig_scale * fontsize2_scale)
        self.line_color = line_color
        self.line_style = line_style
        self.fig_aspect_ratio = np.rint(self.fig_scale * self.ratio)
        self.fig_face_color = "w"
        self.fig_edge_color = self.fig_face_color
        self.fig_size = self.fig_aspect_ratio / self.fig_dpi
        self.font_color = "k"
        self.font_weight = "normal"
        self.line_weight = np.rint(self.fig_scale * 1)
        self.tick_size = self.font_size_2nd_level
        self.legend_label_size = self.font_size_2nd_level
        self.fig = None

Subclasses

class FigureAttributesBackInBlack (fig_size_ratio=array([640, 400]), fontsize1_scale=5, fontsize2_scale=4, line_color='w', line_style='-')

Adapts FigureAttributes to have black coloring Refer to FigureAttributes for attribute information. Notable changes to default values: fig_face_color: "k" (black) font_color: "w" (white)

Initialize the FigureAttributes

:param fig_size_ratio: 2d array of figure width, height ratio. Default [640, 400] :param fontsize1_scale: int, scale for fontsize level 1 (titles, axes labels…). Default 5 :param fontsize2_scale: int, scale for fontsize level 2 (legend labels, ticks…) Default 4 :param line_color: string, color for line in plot. Default 'w' (white) :param line_style: string, style of line in plot. Default '-' (solid line)

Expand source code
class FigureAttributesBackInBlack(FigureAttributes):
    """
    Adapts FigureAttributes to have black coloring
    Refer to FigureAttributes for attribute information.
    Notable changes to default values:
        fig_face_color: "k" (black)
        font_color: "w" (white)
    """
    def __init__(
            self, fig_size_ratio=np.array([640, 400]),
            fontsize1_scale=5, fontsize2_scale=4, line_color="w", line_style="-"
    ):
        """
        Initialize the FigureAttributes

        :param fig_size_ratio: 2d array of figure width, height ratio.  Default [640, 400]
        :param fontsize1_scale: int, scale for fontsize level 1 (titles, axes labels...).  Default 5
        :param fontsize2_scale: int, scale for fontsize level 2 (legend labels, ticks...)  Default 4
        :param line_color: string, color for line in plot.  Default 'w' (white)
        :param line_style: string, style of line in plot.  Default '-' (solid line)
        """
        super().__init__(fig_size_ratio, fontsize1_scale, fontsize2_scale, line_color, line_style)
        self.fig_face_color = "k"
        self.fig_edge_color = self.fig_face_color
        self.font_color = "w"

Ancestors

class FigureParameters (aspect_ratio: AspectRatioType)

Allows users to set the figure size. Refer to AspectRatioType for available aspect ratios. Default aspect ratio is 3840x2160.

Attributes

width
int, width in pixels of the plot
height
int, height in pixels of the plot
scale_factor
float, scale factor for text and other elements
figure_size_x
int, size of the figure in x direction
figure_size_y
int, size of the figure in y direction
text_size
int, size of the text

:param aspect_ratio: refer to AspectRatioType class for valid options

Expand source code
class FigureParameters:
    """
    Allows users to set the figure size.  Refer to AspectRatioType for available aspect ratios.
    Default aspect ratio is 3840x2160.

    Attributes:
        width: int, width in pixels of the plot
        height: int, height in pixels of the plot
        scale_factor: float, scale factor for text and other elements
        figure_size_x: int, size of the figure in x direction
        figure_size_y: int, size of the figure in y direction
        text_size: int, size of the text
    """
    def __init__(self, aspect_ratio: AspectRatioType):
        """
        :param aspect_ratio: refer to AspectRatioType class for valid options
        """
        if aspect_ratio == AspectRatioType.R640x360:
            self.width = 640
            self.height = 360
            self.scale_factor = 1.0 / 3.0
        elif aspect_ratio == AspectRatioType.R1280x720:
            self.width = 1280
            self.height = 720
            self.scale_factor = 2.0 / 3.0
        elif aspect_ratio == AspectRatioType.R1920x1080:
            self.width = 1920
            self.height = 1080
            self.scale_factor = 1.25
        elif aspect_ratio == AspectRatioType.R2560x1440:
            self.width = 2560
            self.height = 1440
            self.scale_factor = 4.0 / 3.0
        else:
            self.width = 3840
            self.height = 2160
            self.scale_factor = 2.0

        scale = self.scale_factor * self.height / 8
        self.figure_size_x = int(self.width / scale)
        self.figure_size_y = int(8. / self.scale_factor)
        self.text_size = int(16.0 / self.scale_factor)

Subclasses