ptolemy.actor.lib.gui
Class ArrayPlotterXY

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.gui.PlotterBase
                              extended by ptolemy.actor.lib.gui.Plotter
                                  extended by ptolemy.actor.lib.gui.ArrayPlotterXY
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Placeable, Initializable, SequenceActor, TypedActor, Changeable, Configurable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class ArrayPlotterXY
extends Plotter
implements SequenceActor

A plotter that plots a sequence of pairs of arrays of doubles as an XY plot. This plotter contains an instance of the Plot class from the Ptolemy plot package as a public member. Data at the inputs, which can have any number of channels, are plotted on this instance. Each pair of input channels is plotted as a separate data set. Each input token is an array of doubles.

The iterationsPerUpdate parameter can be used to fine tune the display. It can be quite expensive to generate the display, and by default, this actor generates it on every firing. If iterationsPerUpdate is set to some integer greater than one, then it specifies how many iterations should be executed between updates. Thus, if iterationsPerUpdate = 2, then every second time this actor fires, it will update the display. That is, it will update its display on the first firing, the third, the fifth, etc. It will, however, consume its inputs on every firing. The plot is always updated in the wrapup() method.

Note that this can be used to generate live plots, like XYScope, but it has fewer drawing artifacts than XYScope since it does not use XOR drawing mode.

Since:
Ptolemy II 6.1
Version:
$Id: ArrayPlotterXY.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Edward A. Lee
See Also:
XYScope, Serialized Form
Accepted Rating:
Red (cxh)
Proposed Rating:
Yellow (eal)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.actor.lib.gui.PlotterBase
PlotterBase.PlotWindowTableau
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  int _iteration
           
private  int _offset
           
private  ArrayToken[] _xtokens
           
private  ArrayToken[] _ytokens
           
 Parameter iterationsPerUpdate
          The number of iterations between updates of the display on the screen.
 TypedIOPort x
          Input port for the horizontal axis, which receives an array of doubles.
 TypedIOPort y
          Input port for the vertical axis, which receives an array of doubles.
 
Fields inherited from class ptolemy.actor.lib.gui.Plotter
startingDataset
 
Fields inherited from class ptolemy.actor.lib.gui.PlotterBase
_base, _container, _frame, _plotSize, _source, _tableau, _text, _windowProperties, automaticRescale, fillOnWrapup, legend, plot
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
ArrayPlotterXY(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
 void initialize()
          If the plot has not already been created, create it.
 boolean postfire()
          Read at most one token from each input channel on x and y inputs, and if there is a token on both, plot the data as an XY plot.
 void wrapup()
          Update the plot with the most recently read data.
 
Methods inherited from class ptolemy.actor.lib.gui.Plotter
attributeChanged
 
Methods inherited from class ptolemy.actor.lib.gui.PlotterBase
_exportMoMLContents, _implementDeferredConfigurations, _newPlot, _propagateValue, clone, configure, getConfigureSource, getConfigureText, place, preinitialize, setContainer, setDisplayName, setName
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, stop, stopFire, terminate
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence
 
Methods inherited from class ptolemy.kernel.Entity
_description, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, removeInitializable
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

iterationsPerUpdate

public Parameter iterationsPerUpdate
The number of iterations between updates of the display on the screen. This parameter has type IntToken, with default value 1. Its value must be non-negative.


x

public TypedIOPort x
Input port for the horizontal axis, which receives an array of doubles.


y

public TypedIOPort y
Input port for the vertical axis, which receives an array of doubles.


_iteration

private int _iteration

_offset

private int _offset

_xtokens

private ArrayToken[] _xtokens

_ytokens

private ArrayToken[] _ytokens
Constructor Detail

ArrayPlotterXY

public ArrayPlotterXY(CompositeEntity container,
                      java.lang.String name)
               throws IllegalActionException,
                      NameDuplicationException
Construct an actor with the given container and name.

Parameters:
container - The container.
name - The name of this actor.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

initialize

public void initialize()
                throws IllegalActionException
If the plot has not already been created, create it. If configurations specified by a call to configure() have not yet been processed, process them. This overrides the base class to also start counting iterations, so that the iterationsPerUpdate parameter works.

Specified by:
initialize in interface Initializable
Overrides:
initialize in class Plotter
Throws:
IllegalActionException - If the parent class throws it.

postfire

public boolean postfire()
                 throws IllegalActionException
Read at most one token from each input channel on x and y inputs, and if there is a token on both, plot the data as an XY plot. The input data are plotted in postfire() to ensure that the data have settled.

Specified by:
postfire in interface Executable
Overrides:
postfire in class AtomicActor
Returns:
True if it is OK to continue.
Throws:
IllegalActionException - If there is no director, or if the base class throws it.

wrapup

public void wrapup()
            throws IllegalActionException
Update the plot with the most recently read data. If the fillOnWrapup parameter is true, rescale the plot so that all the data is visible.

Specified by:
wrapup in interface Initializable
Overrides:
wrapup in class PlotterBase
Throws:
IllegalActionException - If the superclass throws it.