Package org.jfree.chart.plot
Class CombinedDomainXYPlot
- java.lang.Object
-
- org.jfree.chart.plot.Plot
-
- org.jfree.chart.plot.XYPlot
-
- org.jfree.chart.plot.CombinedDomainXYPlot
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,java.util.EventListener
,AnnotationChangeListener
,AxisChangeListener
,MarkerChangeListener
,PlotChangeListener
,RendererChangeListener
,LegendItemSource
,Pannable
,ValueAxisPlot
,Zoomable
,PublicCloneable
,DatasetChangeListener
public class CombinedDomainXYPlot extends XYPlot implements PlotChangeListener
An extension ofXYPlot
that contains multiple subplots that share a common domain axis.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private double
gap
The gap between subplots.private static long
serialVersionUID
For serialization.private java.awt.geom.Rectangle2D[]
subplotAreas
Temporary storage for the subplot areas.private java.util.List<XYPlot>
subplots
Storage for the subplot references (possibly empty but never null).-
Fields inherited from class org.jfree.chart.plot.XYPlot
DEFAULT_CROSSHAIR_PAINT, DEFAULT_CROSSHAIR_STROKE, DEFAULT_CROSSHAIR_VISIBLE, DEFAULT_GRIDLINE_PAINT, DEFAULT_GRIDLINE_STROKE, localizationResources
-
Fields inherited from class org.jfree.chart.plot.Plot
DEFAULT_BACKGROUND_ALPHA, DEFAULT_BACKGROUND_PAINT, DEFAULT_FOREGROUND_ALPHA, DEFAULT_INSETS, DEFAULT_LEGEND_ITEM_BOX, DEFAULT_LEGEND_ITEM_CIRCLE, DEFAULT_OUTLINE_PAINT, DEFAULT_OUTLINE_STROKE, MINIMUM_HEIGHT_TO_DRAW, MINIMUM_WIDTH_TO_DRAW, ZERO
-
-
Constructor Summary
Constructors Constructor Description CombinedDomainXYPlot()
Default constructor.CombinedDomainXYPlot(ValueAxis domainAxis)
Creates a new combined plot that shares a domain axis among multiple subplots.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(XYPlot subplot)
Adds a subplot (with a default 'weight' of 1) and sends aPlotChangeEvent
to all registered listeners.void
add(XYPlot subplot, int weight)
Adds a subplot with the specified weight and sends aPlotChangeEvent
to all registered listeners.protected AxisSpace
calculateAxisSpace(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea)
Calculates the axis space required.java.lang.Object
clone()
Returns a clone of the annotation.void
datasetChanged(DatasetChangeEvent event)
Receives notification of a change to the plot's dataset.void
draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area, java.awt.geom.Point2D anchor, PlotState parentState, PlotRenderingInfo info)
Draws the plot within the specified area on a graphics device.boolean
equals(java.lang.Object obj)
Tests this plot for equality with another object.XYPlot
findSubplot(PlotRenderingInfo info, java.awt.geom.Point2D source)
Returns the subplot (if any) that contains the (x, y) point (specified in Java2D space).Range
getDataRange(ValueAxis axis)
Returns a range representing the extent of the data values in this plot (obtained from the subplots) that will be rendered against the specified axis.double
getGap()
Returns the gap between subplots, measured in Java2D units.LegendItemCollection
getLegendItems()
Returns a collection of legend items for the plot.java.lang.String
getPlotType()
Returns a string describing the type of plot.java.util.List<XYPlot>
getSubplots()
Returns the list of subplots.void
handleClick(int x, int y, PlotRenderingInfo info)
Handles a 'click' on the plot by updating the anchor values.boolean
isRangePannable()
Returnstrue
if the range is pannable for at least one subplot, andfalse
otherwise.void
panRangeAxes(double panRange, PlotRenderingInfo info, java.awt.geom.Point2D source)
Pans all range axes by the specified percentage.void
plotChanged(PlotChangeEvent event)
Receives aPlotChangeEvent
and responds by notifying all listeners.void
remove(XYPlot subplot)
Removes a subplot from the combined chart and sends aPlotChangeEvent
to all registered listeners.void
setFixedRangeAxisSpace(AxisSpace space)
Sets the fixed range axis space and sends aPlotChangeEvent
to all registered listeners.protected void
setFixedRangeAxisSpaceForSubplots(AxisSpace space)
Sets the size (width or height, depending on the orientation of the plot) for the domain axis of each subplot.void
setGap(double gap)
Sets the amount of space between subplots and sends aPlotChangeEvent
to all registered listeners.void
setOrientation(PlotOrientation orientation)
Sets the orientation for the plot (also changes the orientation for all the subplots to match).void
setRangePannable(boolean pannable)
Sets the flag, on each of the subplots, that controls whether or not the range is pannable.void
setRenderer(XYItemRenderer renderer)
Sets the item renderer FOR ALL SUBPLOTS.void
setShadowGenerator(ShadowGenerator generator)
Sets the shadow generator for the plot (and all subplots) and sends aPlotChangeEvent
to all registered listeners.void
zoomRangeAxes(double lowerPercent, double upperPercent, PlotRenderingInfo info, java.awt.geom.Point2D source)
Zooms in on the range axes.void
zoomRangeAxes(double factor, PlotRenderingInfo info, java.awt.geom.Point2D source)
Multiplies the range on the range axis/axes by the specified factor.void
zoomRangeAxes(double factor, PlotRenderingInfo state, java.awt.geom.Point2D source, boolean useAnchor)
Multiplies the range on the range axis/axes by the specified factor.-
Methods inherited from class org.jfree.chart.plot.XYPlot
addAnnotation, addAnnotation, addDomainMarker, addDomainMarker, addDomainMarker, addDomainMarker, addRangeMarker, addRangeMarker, addRangeMarker, addRangeMarker, annotationChanged, calculateDomainAxisSpace, calculateRangeAxisSpace, clearAnnotations, clearDomainAxes, clearDomainMarkers, clearDomainMarkers, clearRangeAxes, clearRangeMarkers, clearRangeMarkers, configureDomainAxes, configureRangeAxes, drawAnnotations, drawAxes, drawBackground, drawDomainCrosshair, drawDomainGridlines, drawDomainMarkers, drawDomainTickBands, drawHorizontalLine, drawQuadrants, drawRangeCrosshair, drawRangeGridlines, drawRangeMarkers, drawRangeTickBands, drawVerticalLine, drawZeroDomainBaseline, drawZeroRangeBaseline, getAnnotations, getAxisOffset, getDataset, getDataset, getDatasetCount, getDatasetRenderingOrder, getDatasets, getDomainAxes, getDomainAxis, getDomainAxis, getDomainAxisCount, getDomainAxisEdge, getDomainAxisEdge, getDomainAxisForDataset, getDomainAxisIndex, getDomainAxisLocation, getDomainAxisLocation, getDomainCrosshairPaint, getDomainCrosshairStroke, getDomainCrosshairValue, getDomainGridlinePaint, getDomainGridlineStroke, getDomainMarkers, getDomainMarkers, getDomainMinorGridlinePaint, getDomainMinorGridlineStroke, getDomainTickBandPaint, getDomainZeroBaselinePaint, getDomainZeroBaselineStroke, getFixedDomainAxisSpace, getFixedLegendItems, getFixedRangeAxisSpace, getIndexOf, getOrientation, getQuadrantOrigin, getQuadrantPaint, getRangeAxes, getRangeAxis, getRangeAxis, getRangeAxisCount, getRangeAxisEdge, getRangeAxisEdge, getRangeAxisForDataset, getRangeAxisIndex, getRangeAxisLocation, getRangeAxisLocation, getRangeCrosshairPaint, getRangeCrosshairStroke, getRangeCrosshairValue, getRangeGridlinePaint, getRangeGridlineStroke, getRangeMarkers, getRangeMarkers, getRangeMinorGridlinePaint, getRangeMinorGridlineStroke, getRangeTickBandPaint, getRangeZeroBaselinePaint, getRangeZeroBaselineStroke, getRenderer, getRenderer, getRendererCount, getRendererForDataset, getRenderers, getSeriesCount, getSeriesRenderingOrder, getShadowGenerator, getWeight, indexOf, isDomainCrosshairLockedOnData, isDomainCrosshairVisible, isDomainGridlinesVisible, isDomainMinorGridlinesVisible, isDomainPannable, isDomainZeroBaselineVisible, isDomainZoomable, isRangeCrosshairLockedOnData, isRangeCrosshairVisible, isRangeGridlinesVisible, isRangeMinorGridlinesVisible, isRangeZeroBaselineVisible, isRangeZoomable, mapDatasetToDomainAxes, mapDatasetToDomainAxis, mapDatasetToRangeAxes, mapDatasetToRangeAxis, panDomainAxes, removeAnnotation, removeAnnotation, removeDomainMarker, removeDomainMarker, removeDomainMarker, removeDomainMarker, removeRangeMarker, removeRangeMarker, removeRangeMarker, removeRangeMarker, render, rendererChanged, setAxisOffset, setDataset, setDataset, setDatasetRenderingOrder, setDomainAxes, setDomainAxis, setDomainAxis, setDomainAxis, setDomainAxisLocation, setDomainAxisLocation, setDomainAxisLocation, setDomainAxisLocation, setDomainCrosshairLockedOnData, setDomainCrosshairPaint, setDomainCrosshairStroke, setDomainCrosshairValue, setDomainCrosshairValue, setDomainCrosshairVisible, setDomainGridlinePaint, setDomainGridlineStroke, setDomainGridlinesVisible, setDomainMinorGridlinePaint, setDomainMinorGridlineStroke, setDomainMinorGridlinesVisible, setDomainPannable, setDomainTickBandPaint, setDomainZeroBaselinePaint, setDomainZeroBaselineStroke, setDomainZeroBaselineVisible, setFixedDomainAxisSpace, setFixedDomainAxisSpace, setFixedLegendItems, setFixedRangeAxisSpace, setQuadrantOrigin, setQuadrantPaint, setRangeAxes, setRangeAxis, setRangeAxis, setRangeAxis, setRangeAxisLocation, setRangeAxisLocation, setRangeAxisLocation, setRangeAxisLocation, setRangeCrosshairLockedOnData, setRangeCrosshairPaint, setRangeCrosshairStroke, setRangeCrosshairValue, setRangeCrosshairValue, setRangeCrosshairVisible, setRangeGridlinePaint, setRangeGridlineStroke, setRangeGridlinesVisible, setRangeMinorGridlinePaint, setRangeMinorGridlineStroke, setRangeMinorGridlinesVisible, setRangeTickBandPaint, setRangeZeroBaselinePaint, setRangeZeroBaselineStroke, setRangeZeroBaselineVisible, setRenderer, setRenderer, setRenderers, setSeriesRenderingOrder, setWeight, zoomDomainAxes, zoomDomainAxes, zoomDomainAxes
-
Methods inherited from class org.jfree.chart.plot.Plot
addChangeListener, axisChanged, canEqual, createAndAddEntity, drawBackgroundImage, drawNoDataMessage, drawOutline, fetchElementHintingFlag, fillBackground, fillBackground, fireChangeEvent, getBackgroundAlpha, getBackgroundImage, getBackgroundImageAlignment, getBackgroundImageAlpha, getBackgroundPaint, getChart, getDatasetGroup, getDrawingSupplier, getForegroundAlpha, getInsets, getNoDataMessage, getNoDataMessageFont, getNoDataMessagePaint, getOutlinePaint, getOutlineStroke, getParent, getRectX, getRectY, getRootPlot, hashCode, isNotify, isOutlineVisible, isSubplot, markerChanged, notifyListeners, removeChangeListener, resolveDomainAxisLocation, resolveRangeAxisLocation, setBackgroundAlpha, setBackgroundImage, setBackgroundImageAlignment, setBackgroundImageAlpha, setBackgroundPaint, setChart, setDatasetGroup, setDrawingSupplier, setDrawingSupplier, setForegroundAlpha, setInsets, setInsets, setNoDataMessage, setNoDataMessageFont, setNoDataMessagePaint, setNotify, setOutlinePaint, setOutlineStroke, setOutlineVisible, setParent, zoom
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
For serialization.- See Also:
- Constant Field Values
-
subplots
private java.util.List<XYPlot> subplots
Storage for the subplot references (possibly empty but never null).
-
gap
private double gap
The gap between subplots.
-
subplotAreas
private transient java.awt.geom.Rectangle2D[] subplotAreas
Temporary storage for the subplot areas.
-
-
Constructor Detail
-
CombinedDomainXYPlot
public CombinedDomainXYPlot()
Default constructor.
-
CombinedDomainXYPlot
public CombinedDomainXYPlot(ValueAxis domainAxis)
Creates a new combined plot that shares a domain axis among multiple subplots.- Parameters:
domainAxis
- the shared axis.
-
-
Method Detail
-
getPlotType
public java.lang.String getPlotType()
Returns a string describing the type of plot.- Overrides:
getPlotType
in classXYPlot
- Returns:
- The type of plot.
-
getGap
public double getGap()
Returns the gap between subplots, measured in Java2D units.- Returns:
- The gap (in Java2D units).
- See Also:
setGap(double)
-
setGap
public void setGap(double gap)
Sets the amount of space between subplots and sends aPlotChangeEvent
to all registered listeners.- Parameters:
gap
- the gap between subplots (in Java2D units).- See Also:
getGap()
-
isRangePannable
public boolean isRangePannable()
Returnstrue
if the range is pannable for at least one subplot, andfalse
otherwise.- Specified by:
isRangePannable
in interfacePannable
- Overrides:
isRangePannable
in classXYPlot
- Returns:
- A boolean.
-
setRangePannable
public void setRangePannable(boolean pannable)
Sets the flag, on each of the subplots, that controls whether or not the range is pannable.- Overrides:
setRangePannable
in classXYPlot
- Parameters:
pannable
- the new flag value.
-
setOrientation
public void setOrientation(PlotOrientation orientation)
Sets the orientation for the plot (also changes the orientation for all the subplots to match).- Overrides:
setOrientation
in classXYPlot
- Parameters:
orientation
- the orientation (null
not allowed).- See Also:
XYPlot.getOrientation()
-
setShadowGenerator
public void setShadowGenerator(ShadowGenerator generator)
Sets the shadow generator for the plot (and all subplots) and sends aPlotChangeEvent
to all registered listeners.- Overrides:
setShadowGenerator
in classXYPlot
- Parameters:
generator
- the new generator (null
permitted).
-
getDataRange
public Range getDataRange(ValueAxis axis)
Returns a range representing the extent of the data values in this plot (obtained from the subplots) that will be rendered against the specified axis. NOTE: This method is intended for internal JFreeChart use, and is public only so that code in the axis classes can call it. Since only the domain axis is shared between subplots, the JFreeChart code will only call this method for the domain values (although this is not checked/enforced).- Specified by:
getDataRange
in interfaceValueAxisPlot
- Overrides:
getDataRange
in classXYPlot
- Parameters:
axis
- the axis.- Returns:
- The range (possibly
null
).
-
add
public void add(XYPlot subplot)
Adds a subplot (with a default 'weight' of 1) and sends aPlotChangeEvent
to all registered listeners.The domain axis for the subplot will be set to
null
. You must ensure that the subplot has a non-null range axis.- Parameters:
subplot
- the subplot (null
not permitted).
-
add
public void add(XYPlot subplot, int weight)
Adds a subplot with the specified weight and sends aPlotChangeEvent
to all registered listeners. The weight determines how much space is allocated to the subplot relative to all the other subplots.The domain axis for the subplot will be set to
null
. You must ensure that the subplot has a non-null range axis.- Parameters:
subplot
- the subplot (null
not permitted).weight
- the weight (must be >= 1).
-
remove
public void remove(XYPlot subplot)
Removes a subplot from the combined chart and sends aPlotChangeEvent
to all registered listeners.- Parameters:
subplot
- the subplot (null
not permitted).
-
getSubplots
public java.util.List<XYPlot> getSubplots()
Returns the list of subplots. The returned list may be empty, but is nevernull
.- Returns:
- An unmodifiable list of subplots.
-
calculateAxisSpace
protected AxisSpace calculateAxisSpace(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D plotArea)
Calculates the axis space required.- Overrides:
calculateAxisSpace
in classXYPlot
- Parameters:
g2
- the graphics device.plotArea
- the plot area.- Returns:
- The space.
-
draw
public void draw(java.awt.Graphics2D g2, java.awt.geom.Rectangle2D area, java.awt.geom.Point2D anchor, PlotState parentState, PlotRenderingInfo info)
Draws the plot within the specified area on a graphics device.- Overrides:
draw
in classXYPlot
- Parameters:
g2
- the graphics device.area
- the plot area (in Java2D space).anchor
- an anchor point in Java2D space (null
permitted).parentState
- the state from the parent plot, if there is one (null
permitted).info
- collects chart drawing information (null
permitted).
-
getLegendItems
public LegendItemCollection getLegendItems()
Returns a collection of legend items for the plot.- Specified by:
getLegendItems
in interfaceLegendItemSource
- Overrides:
getLegendItems
in classXYPlot
- Returns:
- The legend items.
-
zoomRangeAxes
public void zoomRangeAxes(double factor, PlotRenderingInfo info, java.awt.geom.Point2D source)
Multiplies the range on the range axis/axes by the specified factor.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Overrides:
zoomRangeAxes
in classXYPlot
- Parameters:
factor
- the zoom factor.info
- the plot rendering info (null
not permitted).source
- the source point (null
not permitted).- See Also:
XYPlot.zoomDomainAxes(double, PlotRenderingInfo, Point2D, boolean)
-
zoomRangeAxes
public void zoomRangeAxes(double factor, PlotRenderingInfo state, java.awt.geom.Point2D source, boolean useAnchor)
Multiplies the range on the range axis/axes by the specified factor.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Overrides:
zoomRangeAxes
in classXYPlot
- Parameters:
factor
- the zoom factor.state
- the plot state.source
- the source point (in Java2D coordinates).useAnchor
- use source point as zoom anchor?- See Also:
XYPlot.zoomDomainAxes(double, PlotRenderingInfo, Point2D, boolean)
-
zoomRangeAxes
public void zoomRangeAxes(double lowerPercent, double upperPercent, PlotRenderingInfo info, java.awt.geom.Point2D source)
Zooms in on the range axes.- Specified by:
zoomRangeAxes
in interfaceZoomable
- Overrides:
zoomRangeAxes
in classXYPlot
- Parameters:
lowerPercent
- the lower bound.upperPercent
- the upper bound.info
- the plot rendering info (null
not permitted).source
- the source point (null
not permitted).- See Also:
XYPlot.zoomDomainAxes(double, double, PlotRenderingInfo, Point2D)
-
panRangeAxes
public void panRangeAxes(double panRange, PlotRenderingInfo info, java.awt.geom.Point2D source)
Pans all range axes by the specified percentage.- Specified by:
panRangeAxes
in interfacePannable
- Overrides:
panRangeAxes
in classXYPlot
- Parameters:
panRange
- the distance to pan (as a percentage of the axis length).info
- the plot info (null
not permitted).source
- the source point where the pan action started.
-
findSubplot
public XYPlot findSubplot(PlotRenderingInfo info, java.awt.geom.Point2D source)
Returns the subplot (if any) that contains the (x, y) point (specified in Java2D space).- Parameters:
info
- the chart rendering info (null
not permitted).source
- the source point (null
not permitted).- Returns:
- A subplot (possibly
null
).
-
setRenderer
public void setRenderer(XYItemRenderer renderer)
Sets the item renderer FOR ALL SUBPLOTS. Registered listeners are notified that the plot has been modified.Note: usually you will want to set the renderer independently for each subplot, which is NOT what this method does.
- Overrides:
setRenderer
in classXYPlot
- Parameters:
renderer
- the new renderer.- See Also:
XYPlot.getRenderer()
-
setFixedRangeAxisSpace
public void setFixedRangeAxisSpace(AxisSpace space)
Sets the fixed range axis space and sends aPlotChangeEvent
to all registered listeners.- Overrides:
setFixedRangeAxisSpace
in classXYPlot
- Parameters:
space
- the space (null
permitted).- See Also:
XYPlot.getFixedRangeAxisSpace()
-
setFixedRangeAxisSpaceForSubplots
protected void setFixedRangeAxisSpaceForSubplots(AxisSpace space)
Sets the size (width or height, depending on the orientation of the plot) for the domain axis of each subplot.- Parameters:
space
- the space.
-
handleClick
public void handleClick(int x, int y, PlotRenderingInfo info)
Handles a 'click' on the plot by updating the anchor values.- Overrides:
handleClick
in classXYPlot
- Parameters:
x
- x-coordinate, where the click occurred.y
- y-coordinate, where the click occurred.info
- object containing information about the plot dimensions.
-
datasetChanged
public void datasetChanged(DatasetChangeEvent event)
Receives notification of a change to the plot's dataset.The axis ranges are updated if necessary.
- Specified by:
datasetChanged
in interfaceDatasetChangeListener
- Overrides:
datasetChanged
in classXYPlot
- Parameters:
event
- information about the event (not used here).
-
plotChanged
public void plotChanged(PlotChangeEvent event)
Receives aPlotChangeEvent
and responds by notifying all listeners.- Specified by:
plotChanged
in interfacePlotChangeListener
- Parameters:
event
- the event.
-
equals
public boolean equals(java.lang.Object obj)
Tests this plot for equality with another object.
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException
Returns a clone of the annotation.- Specified by:
clone
in interfacePublicCloneable
- Overrides:
clone
in classXYPlot
- Returns:
- A clone.
- Throws:
java.lang.CloneNotSupportedException
- this class will not throw this exception, but subclasses (if any) might.
-
-