Module plottools.circuits

Electrical circuits.

Axes member functions

Classes

  • class Pos: x and y coordinate of a circuit element.

Settings

matplotlib.rcParams defined by the circuits module:

circuits.scale: 1
circuits.connectwidth: 1
circuits.linewidth: 2
circuits.color: 'black'
circuits.facecolor: 'white'
circuits.alpha: 1
circuits.zorder: 100
circuits.font: dict()

Install/uninstall circuits functions

You usually do not need to call these functions. Upon loading the circuits module, install_circuits() is called automatically.

Functions

def resistance_h(ax, pos, label='', align='above', lw=None, color=None, facecolor=None, alpha=None, zorder=None, **kwargs)

Draw a horizontal resistance.

Parameters

ax : matplotlib axes
Axes where to draw the resistance bar.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the resistance.
label : string
Optional label for the resistance.
align : 'above', 'below', 'center'
Position the label above, below or in the center of the resistance.
lw : float, int
Linewidth for drawing the outline of the resistance. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the resistance. Defaults to circuits.color rcParams settings.
facecolor : matplotlib color
Color for filling the resistance. Defaults to circuits.facecolor rcParams settings.
alpha : float
Alpha value for the face color. Defaults to circuits.alpha rcParams settings.
zorder : int
zorder for the resistance and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posl : Pos
Coordinates of the left end of the resistance.
posr : Pos
Coordinates of the right end of the resistance.

Raises

Valueerror

Invalid value for align.

def resistance_v(ax, pos, label='', align='right', lw=None, color=None, facecolor=None, alpha=None, zorder=None, **kwargs)

Draw a vertical resistance.

Parameters

ax : matplotlib axes
Axes where to draw the resistance.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the resistance.
label : string
Optional label for the resistance.
align : 'left', 'right', 'center'
Position the label to the left, right or in the center of the resistance.
lw : float, int
Linewidth for drawing the outline of the resistance. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the resistance. Defaults to circuits.color rcParams settings.
facecolor : matplotlib color
Color for filling the resistance. Defaults to circuits.facecolor rcParams settings.
alpha : float
Alpha value for the face color. Defaults to circuits.alpha rcParams settings.
zorder : int
zorder for the resistance and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posb : Pos
Coordinates of the bottom end of the resistance.
post : Pos
Coordinates of the top end of the resistance.

Raises

Valueerror

Invalid value for align.

def resistance(ax, pos, angle=0, label='', align='above', lw=None, color=None, facecolor=None, alpha=None, zorder=None, **kwargs)

Draw an arbitrarily rotated resistance.

Parameters

ax : matplotlib axes
Axes where to draw the resistance bar.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the resistance.
angle : float
Rotation angle in degrees.
label : string
Optional label for the resistance.
align : 'above', 'below', 'center'
Position the label above, below or in the center of the non-rotated resistance.
lw : float, int
Linewidth for drawing the outline of the resistance. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the resistance. Defaults to circuits.color rcParams settings.
facecolor : matplotlib color
Color for filling the resistance. Defaults to circuits.facecolor rcParams settings.
alpha : float
Alpha value for the face color. Defaults to circuits.alpha rcParams settings.
zorder : int
zorder for the resistance and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posl : Pos
Coordinates of the left end of the resistance.
posr : Pos
Coordinates of the right end of the resistance.

Raises

Valueerror

Invalid value for align.

def capacitance_h(ax, pos, label='', align='above', lw=None, color=None, zorder=None, **kwargs)

Draw a horizontal capacitance.

Parameters

ax : matplotlib axes
Axes where to draw the capacitance.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the capacitance.
label : string
Optional label for the capacitance.
align : 'above', 'below'
Position the label above or below the capacitance.
lw : float, int
Linewidth for drawing the outline of the capacitance. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the capacitance. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the capacitance and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posl : Pos
Coordinates of the left end of the capacitance.
posr : Pos
Coordinates of the right end of the capacitance.

Raises

Valueerror

Invalid value for align.

def capacitance_v(ax, pos, label='', align='right', lw=None, color=None, zorder=None, **kwargs)

Draw a vertical capacitance.

Parameters

ax : matplotlib axes
Axes where to draw the capacitance.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the capacitance.
label : string
Optional label for the capacitance.
align : 'left', 'right'
Position the label to the left or to the right of the capacitance.
lw : float, int
Linewidth for drawing the outline of the capacitance. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the capacitance. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the capacitance and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posb : Pos
Coordinates of the bottom end of the capacitance.
post : Pos
Coordinates of the top end of the capacitance.

Raises

Valueerror

Invalid value for align.

def battery_h(ax, pos, label='', align='above', lw=None, color=None, zorder=None, **kwargs)

Draw a horizontal battery (voltage source).

Parameters

ax : matplotlib axes
Axes where to draw the battery.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the battery.
label : string
Optional label for the battery.
align : 'above', 'below'
Position the label above or below the battery.
lw : float, int
Linewidth for drawing the outline of the battery. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the battery. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the battery and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posl : Pos
Coordinates of the left end of the battery.
posr : Pos
Coordinates of the right end of the battery.

Raises

Valueerror

Invalid value for align.

def battery_v(ax, pos, label='', align='right', lw=None, color=None, zorder=None, **kwargs)

Draw a vertical battery (voltage source).

Parameters

ax : matplotlib axes
Axes where to draw the battery.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the battery.
label : string
Optional label for the battery.
align : 'left', 'right'
Position the label to the left or to the right of the battery.
lw : float, int
Linewidth for drawing the outline of the battery. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the battery. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the battery and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posb : Pos
Coordinates of the bottom end of the battery.
post : Pos
Coordinates of the top end of the battery.

Raises

Valueerror

Invalid value for align.

def ground(ax, pos, label='', align='right', lw=None, color=None, zorder=None, **kwargs)

Draw ground.

Parameters

ax : matplotlib axes
Axes where to draw the battery.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of ground.
label : string
Optional label for the battery.
align : 'left', 'right'
Position the label to the left or to the right of the ground.
lw : float, int
Linewidth for drawing the outline of the battery. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the battery. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the battery and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

pos : Pos
Coordinates of the top end of ground.

Raises

Valueerror

Invalid value for align.

def ground_u(ax, pos, label='', align='right', lw=None, color=None, zorder=None, **kwargs)

Draw ground upwards.

Parameters

ax : matplotlib axes
Axes where to draw the battery.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of ground.
label : string
Optional label for the battery.
align : 'left', 'right'
Position the label to the left or to the right of the ground.
lw : float, int
Linewidth for drawing the outline of the battery. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the battery. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the battery and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

pos : Pos
Coordinates of the bottom end of ground.

Raises

Valueerror

Invalid value for align.

def opamp_l(ax, pos, label='', align='above', lw=None, color=None, facecolor=None, alpha=None, zorder=None, **kwargs)

Draw an operational amplifier with inputs on the left.

Parameters

ax : matplotlib axes
Axes where to draw the opamp.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the opamp.
label : string
Optional label for the opamp.
align : 'above', 'below', 'center'
Position the label above, below or in the center of the opamp.
lw : float, int
Linewidth for drawing the outline of the opamp. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the opamp. Defaults to circuits.color rcParams settings.
facecolor : matplotlib color
Color for filling the opamp. Defaults to circuits.facecolor rcParams settings.
alpha : float
Alpha value for the face color. Defaults to circuits.alpha rcParams settings.
zorder : int
zorder for the opamp and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

pospos : Pos
Coordinates of the positive (upper) input of the opamp.
posneg : Pos
Coordinates of the negative (lower) input of the opamp.
posout : Pos
Coordinates of the output of the opamp.
posgnd : Pos
Coordinates of the ground supply of the opamp.
pospwr : Pos
Coordinates of the power supply of the opamp.

Raises

Valueerror

Invalid value for align.

def opamp_r(ax, pos, label='', align='above', lw=None, color=None, facecolor=None, alpha=None, zorder=None, **kwargs)

Draw an operational amplifier with inputs on the right.

Parameters

ax : matplotlib axes
Axes where to draw the opamp.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the opamp.
label : string
Optional label for the opamp.
align : 'above', 'below', 'center'
Position the label above, below or in the center of the opamp.
lw : float, int
Linewidth for drawing the outline of the opamp. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the opamp. Defaults to circuits.color rcParams settings.
facecolor : matplotlib color
Color for filling the opamp. Defaults to circuits.facecolor rcParams settings.
alpha : float
Alpha value for the face color. Defaults to circuits.alpha rcParams settings.
zorder : int
zorder for the opamp and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

pospos : Pos
Coordinates of the positive (upper) input of the opamp.
posneg : Pos
Coordinates of the negative (lower) input of the opamp.
posout : Pos
Coordinates of the output of the opamp.
posgnd : Pos
Coordinates of the ground supply of the opamp.
pospwr : Pos
Coordinates of the power supply of the opamp.

Raises

Valueerror

Invalid value for align.

def switch_h(ax, pos, label='', align='above', lw=None, color=None, zorder=None, **kwargs)

Draw a horizontal switch.

Parameters

ax : matplotlib axes
Axes where to draw the switch.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the switch.
label : string
Optional label for the switch.
align : 'above', 'below'
Position the label above or below the switch.
lw : float, int
Linewidth for drawing the wire of the switch. Defaults to circuits.connectwidth rcParams settings.
color : matplotlib color
Color for the wire of the switch. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the switch and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posl : Pos
Coordinates of the left end of the switch.
posr : Pos
Coordinates of the right end of the switch.

Raises

Valueerror

Invalid value for align.

def switch_v(ax, pos, label='', align='right', lw=None, color=None, zorder=None, **kwargs)

Draw a vertical switch.

Parameters

ax : matplotlib axes
Axes where to draw the switch.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the switch.
label : string
Optional label for the switch.
align : 'left', 'right'
Position the label to the left or right of the switch.
lw : float, int
Linewidth for drawing the wire of the switch. Defaults to circuits.connectwidth rcParams settings.
color : matplotlib color
Color for the wire of the switch. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the switch and the label. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

posb : Pos
Coordinates of the bottom end of the switch.
post : Pos
Coordinates of the top end of the switch.

Raises

Valueerror

Invalid value for align.

def node(ax, pos, label='', align='northeast', color=None, zorder=None, **kwargs)

Draw a node connecting lines.

Parameters

ax : matplotlib axes
Axes where to draw the node.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the node.
label : string
Optional label for the node.
align : 'left', 'right', 'above', 'below', 'north', 'south', 'west', 'east', 'northwest', 'northeast', 'southwest', 'southeast'
Position of the label relative to the node.
color : matplotlib color
Color of the node. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the node. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

pos : Pos
Coordinates of the node.
def pin(ax, pos, label='', align='northeast', lw=None, color=None, facecolor=None, alpha=None, zorder=None, **kwargs)

Draw a pin hole.

Parameters

ax : matplotlib axes
Axes where to draw the pin hole.
pos : Pos or 2-tuple of floats
x and y-coordinate of position of the center of the pin hole.
label : string
Optional label for the pin hole.
align : 'left', 'right', 'above', 'below', 'north', 'south', 'west', 'east', 'northwest', 'northeast', 'southwest', 'southeast'
Position of the label relative to the pin hole.
lw : float, int
Linewidth for drawing the outline of the pin hole. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color for the outline of the pin hole. Defaults to circuits.color rcParams settings.
facecolor : matplotlib color
Color for filling the pin hole. Defaults to circuits.facecolor rcParams settings.
alpha : float
Alpha value for the face color. Defaults to circuits.alpha rcParams settings.
zorder : int
zorder for the node. Defaults to circuits.zorder rcParams settings.
kwargs : key-word arguments
Passed on to ax.text() used to print the label. Defaults to circuits.font rcParams settings.

Returns

pos : Pos
Coordinates of the pin hole.
def connect(ax, nodes, lw=None, color=None, zorder=None)

Draw horizontal and vertical lines connecting circuit elements.

Parameters

ax : matplotlib axes
Axes where to draw the connections.
nodes : list of Pos or 2-tuple of floats
x and y-coordinates of positions that should be connected. If an element is None then leave a gap between the neighboring nodes. Makes only horizontal and vertical connection lines in counter-clockwise direction.
lw : float, int
Linewidth for drawing the connection lines. Defaults to circuits.connectwidth rcParams settings.
color : matplotlib color
Color of the connection lines. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the connection lines. Defaults to circuits.zorder rcParams settings.
def connect_straight(ax, nodes, lw=None, color=None, zorder=None)

Draw straight lines connecting circuit elements.

Parameters

ax : matplotlib axes
Axes where to draw the connections.
nodes : list of Pos or 2-tuple of floats
x and y-coordinates of positions that should be connected. If an element is None then leave a gap between the neighboring nodes.
lw : float, int
Linewidth for drawing the connection lines. Defaults to circuits.linewidth rcParams settings.
color : matplotlib color
Color of the connection lines. Defaults to circuits.color rcParams settings.
zorder : int
zorder for the connection lines. Defaults to circuits.zorder rcParams settings.
def circuits_params(scale=None, connectwidth=None, linewidth=None, color=None, facecolor=None, alpha=None, zorder=None, font=None)

Set rc settings for circuits.

Only parameters that are not None are updated.

Parameters

scale : float
Size of circuit elements as the height of a vertical resistance in x/y coordinate units.
connectwidth : int, float
Line width of lines connecting circuit elements. Set rcParam circuits.connectwidth.
linewidth : int, float
Line width used for drawing circuit elements. Set rcParam circuits.linewidth.
color : matplotlib color
Color of the connections and circuit elements. Set rcParam circuits.color.
facecolor : matplotlib color
Face color for closed circuit elements like resistances or opamps. Set rcParam circuits.facecolor.
alpha : float
Alpha value for face color for closed circuit elements like resistances or opamps. Set rcParam circuits.alpha.
zorder : int
Zorder for all circuit elements drawn. Set rcParam circuits.zorder.
font : dict
Dictionary with font settings used for labeling circuit elements (e.g. fontsize, fontfamiliy, fontstyle, fontweight, bbox, …). Set rcParam circuits.font.
def install_circuits()

Install circuits functions on matplotlib axes.

This function is also called automatically upon importing the module.

See Also

uninstall_circuits()

def uninstall_circuits()

Uninstall circuits functions from matplotlib axes.

Call this code to disable anything that was installed by install_circuits().

See Also

install_circuits()

def demo()

Classes

class Pos (x, y)

x and y coordinate of a circuit element.

Expand source code
class Pos(tuple):
    """ x and y coordinate of a circuit element.
    """

    def __new__(cls, x, y):
        return tuple.__new__(cls, (x, y))

    def x(self):
        """ x coordinate of the circuit element.

        Returns
        -------
        x: float
            x-coordinate
        """
        return self[0]

    def y(self):
        """ y coordinate of the circuit element.

        Returns
        -------
        y: float
            y-coordinate
        """
        return self[1]

    def up(self, delta=1):
        """ Increment y coordinate of position of circuit element.

        Parameters
        ----------
        delta: float
            Increment in data coordinates.

        Returns
        -------
        pos: Pos
            Incremented copy of position of circuit element.
        """
        return Pos(self[0], self[1] + delta)

    def down(self, delta=1):
        """ Decrement y coordinate of position of circuit element.

        Parameters
        ----------
        delta: float
            Decrement in data coordinates.

        Returns
        -------
        pos: Pos
            Decremented copy of position of circuit element.
        """
        return Pos(self[0], self[1] - delta)

    def left(self, delta=1):
        """ Decrement x coordinate of position of circuit element.

        Parameters
        ----------
        delta: float
            Decrement in data coordinates.

        Returns
        -------
        pos: Pos
            Decremented copy of position of circuit element.
        """
        return Pos(self[0] - delta, self[1])

    def right(self, delta=1):
        """ Increment x coordinate of position of circuit element.

        Parameters
        ----------
        delta: float
            Increment in data coordinates.

        Returns
        -------
        pos: Pos
            Incremented copy of position of circuit element.
        """
        return Pos(self[0] + delta, self[1])

    def ups(self, delta=1):
        """ Increment y coordinate of position of circuit element.

        Parameters
        ----------
        delta: float
            Increment in multiples of circuits scale (rcParam `circuits.scale`).

        Returns
        -------
        pos: Pos
            Incremented copy of position of circuit element.
        """
        return Pos(self[0], self[1] + delta*mpl.rcParams['circuits.scale'])

    def downs(self, delta=1):
        """ Decrement y coordinate of position of circuit element.

        Parameters
        ----------
        delta: float
            Decrement in multiples of circuits scale (rcParam `circuits.scale`).

        Returns
        -------
        pos: Pos
            Decremented copy of position of circuit element.
        """
        return Pos(self[0], self[1] - delta*mpl.rcParams['circuits.scale'])

    def lefts(self, delta=1):
        """ Decrement x coordinate of position of circuit element.

        Parameters
        ----------
        delta: float
            Decrement in multiples of circuits scale (rcParam `circuits.scale`).

        Returns
        -------
        pos: Pos
            Decremented copy of position of circuit element.
        """
        return Pos(self[0] - delta*mpl.rcParams['circuits.scale'], self[1])

    def rights(self, delta=1):
        """ Increment x coordinate of position of circuit element.

        Parameters
        ----------
        delta: float
            Increment in multiples of circuits scale (rcParam `circuits.scale`).

        Returns
        -------
        pos: Pos
            Incremented copy of position of circuit element.
        """
        return Pos(self[0] + delta*mpl.rcParams['circuits.scale'], self[1])

Ancestors

  • builtins.tuple

Methods

def x(self)

x coordinate of the circuit element.

Returns

x : float
x-coordinate
def y(self)

y coordinate of the circuit element.

Returns

y : float
y-coordinate
def up(self, delta=1)

Increment y coordinate of position of circuit element.

Parameters

delta : float
Increment in data coordinates.

Returns

pos : Pos
Incremented copy of position of circuit element.
def down(self, delta=1)

Decrement y coordinate of position of circuit element.

Parameters

delta : float
Decrement in data coordinates.

Returns

pos : Pos
Decremented copy of position of circuit element.
def left(self, delta=1)

Decrement x coordinate of position of circuit element.

Parameters

delta : float
Decrement in data coordinates.

Returns

pos : Pos
Decremented copy of position of circuit element.
def right(self, delta=1)

Increment x coordinate of position of circuit element.

Parameters

delta : float
Increment in data coordinates.

Returns

pos : Pos
Incremented copy of position of circuit element.
def ups(self, delta=1)

Increment y coordinate of position of circuit element.

Parameters

delta : float
Increment in multiples of circuits scale (rcParam circuits.scale).

Returns

pos : Pos
Incremented copy of position of circuit element.
def downs(self, delta=1)

Decrement y coordinate of position of circuit element.

Parameters

delta : float
Decrement in multiples of circuits scale (rcParam circuits.scale).

Returns

pos : Pos
Decremented copy of position of circuit element.
def lefts(self, delta=1)

Decrement x coordinate of position of circuit element.

Parameters

delta : float
Decrement in multiples of circuits scale (rcParam circuits.scale).

Returns

pos : Pos
Decremented copy of position of circuit element.
def rights(self, delta=1)

Increment x coordinate of position of circuit element.

Parameters

delta : float
Increment in multiples of circuits scale (rcParam circuits.scale).

Returns

pos : Pos
Incremented copy of position of circuit element.