Source code for hysteresis.defaultPlotFuncs

import numpy as np
import matplotlib.pyplot as plt


[docs]def initializeFig(xlim = [], ylim= []): """ A default function that initializes a figure based on a set of incoming x and y limits Parameters ---------- xlim : list The x limits in [xmin, xmax]. ylim : list The y limits in [xmin, xmax]. """ fig, ax = plt.subplots() if len(xlim) != 0 : ax.set_xlim(xlim[0], xlim[1]) if len(ylim) != 0 : ax.set_ylim(ylim[0], ylim[1]) return fig, ax
[docs]def defaultShowCycles(self, x, y, plotCycles, plotPeaks, labelCycles = [], Cycles = []): """ A function that plots the location of the reversal points and peaks for a curve object. Parameters ---------- x : array The input x values as an numpy array. y : array The input y values as an numpy array. plotCycles : bool A switch that specifics if cycle reversal points should be plotted. plotPeaks : bool A switch that specifics if peak values should be plotted. labelCycles : list or 'all', optional A list of the cycles to be labled. A value of 'all' can also be specified, in which case all cucles will be plotted. The default is [], which labels no cycles Cycles : kist, optional A list of the cycles to be plotted. If not specified, all values will be plotted. The default is [], which plots all cycles. """ # Plot cycles as x only if plotPeaks == True: try: Indexes = self.peakIndexes except: raise Exception('No peaks have been set') PeakX = x[Indexes] PeakY = y[Indexes] line2 = plt.plot(PeakX, PeakY, "+") # plt.title('Peak Index y values') # Plot cycles as x only if plotCycles == True: try: reversalIndexes = self.reversalIndexes except: raise Exception("Object has no Cycles to display. Try setting cycles.") # TODO: update marker based on direction? # if only certain cycles have been asked for we remove all indexes other indexes if Cycles != []: markerIndexes = reversalIndexes[Cycles] # only label Cycles that are in the cycles asked for labelCycles = np.array([label for label in labelCycles if label in Cycles]) else: # Otherwise we plot all markerIndexes = reversalIndexes # Indexes = Indexes[] markerX = x[markerIndexes] markerY = y[markerIndexes] # Plot the desired indexes line2 = plt.plot(markerX, markerY, "x") # If the cycles need to be labeled, # if labelCycles is 'all': if str(labelCycles) == 'all': # skip the first and last cycles labelIndexes = np.arange(0,len(markerIndexes)) labelX = x[reversalIndexes] labelY = y[reversalIndexes] else: labelIndexes = labelCycles labelX = x[reversalIndexes[labelCycles]] labelY = y[reversalIndexes[labelCycles]] for ii in range(len(labelIndexes)): Annotate = plt.annotate(labelIndexes[ii], [labelX[ii],labelY[ii]], xytext=(-1, 5), textcoords = 'offset points')
# Annotate = plt.annotate(int(ii), xy=(ReversalX[ii], ReversalY[ii]),xytext=(-10, 10), arrowprops=dict(arrowstyle="->")) # Annotate = plt.annotate(int(Cycle), xy=(ReversalX[ii], ReversalY[ii]), xytext=(-1, 5), textcoords = 'offset points', fontsize=12) # Annotate = plt.annotate(int(ii), xy=(ReversalX[ii], ReversalY[ii]))
[docs]def defaultPlotFunction(self, x, y, plotCycles, plotPeaks, labelCycles = [], **kwargs): """ Parameters ---------- x : array The input x values as an numpy array. y : array The input y values as an numpy array. plotCycles : bool A switch that specifics if cycle reversal points should be plotted. plotPeaks : bool A switch that specifics if peak values should be plotted. labelCycles : list or 'all', optional A list of the cycles to be labled. A value of 'all' can also be specified, in which case all cucles will be plotted. The default is [], which labels no cycles Cycles : kist, optional A list of the cycles to be plotted. If not specified, all values will be plotted. The default is [], which plots all cycles. """ line, = plt.plot(x, y, **kwargs) defaultShowCycles(self, x, y, plotCycles, plotPeaks, labelCycles) return line