Package org.opentrafficsim.draw.graphs
Class FundamentalDiagram
java.lang.Object
org.opentrafficsim.draw.graphs.AbstractPlot
org.opentrafficsim.draw.graphs.AbstractBoundedPlot
org.opentrafficsim.draw.graphs.FundamentalDiagram
- All Implemented Interfaces:
org.djutils.base.Identifiable,org.jfree.data.general.Dataset,org.jfree.data.general.SeriesDataset,org.jfree.data.xy.XYDataset
Fundamental diagram from various sources.
Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See OpenTrafficSim License.
- Author:
- Alexander Verbraeck, Peter Knoppers, Wouter Schakel
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static classAbstract implementation to link to fundamental diagrams.static interfaceDefines a line plot for a fundamental diagram.static interfaceData source for a fundamental diagram.static enumQuantity enum defining density, flow and speed. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final double[]Aggregation periods.static final int[]Update frequencies (n * 1/period).Fields inherited from class org.opentrafficsim.draw.graphs.AbstractPlot
DEFAULT_INITIAL_UPPER_TIME_BOUND, GRAPH_ADD_EVENT, GRAPH_REMOVE_EVENT -
Constructor Summary
ConstructorsConstructorDescriptionFundamentalDiagram(String caption, FundamentalDiagram.Quantity domainQuantity, FundamentalDiagram.Quantity rangeQuantity, PlotScheduler scheduler, FundamentalDiagram.FdSource source, FundamentalDiagram.FdLine fdLine) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionstatic FundamentalDiagram.FdSourcecombinedSource(Map<String, FundamentalDiagram.FdSource> sources) Combines multiple sources in to one source.org.jfree.data.DomainOrderReturn the domain quantity.Return the graph type for transceiver.intgetItemCount(int series) Return the list of lane visibility flags.org.jfree.chart.LegendItemCollectionRetrievee the legend of this FundamentalDiagram.Get the other (non domain; vertical axis) quantity.Get the range quantity.intgetSeriesKey(int series) Get the data source.getStatusLabel(double domainValue, double rangeValue) Returns the status label when the mouse is over the given location.Retrieve the time info.getX(int series, int item) doublegetXValue(int series, int item) getY(int series, int item) doublegetYValue(int series, int item) booleanReturn whether the plot has a fundamental diagram line.protected voidincreaseTime(org.djunits.value.vdouble.scalar.Time time) Increase the simulated time span.intindexOf(Comparable seriesKey) voidsetDomainQuantity(FundamentalDiagram.Quantity domainQuantity) Set the domain quantity.voidsetOtherQuantity(FundamentalDiagram.Quantity otherQuantity) Set the other (non domain; vertical axis) quantity.voidsetRangeQuantity(FundamentalDiagram.Quantity rangeQuantity) Set the range quantity.voidsetTimeInfo(String timeInfo) Set the time info.static <L extends LaneData<L>>
FundamentalDiagram.FdSourcesourceFromSampler(Sampler<?, L> sampler, GraphCrossSection<L> crossSection, boolean aggregateLanes, org.djunits.value.vdouble.scalar.Duration aggregationTime, boolean harmonic) Creates aSourcefrom a sampler and positions.static <L extends LaneData<L>>
FundamentalDiagram.FdSourcesourceFromSampler(Sampler<?, L> sampler, GraphPath<L> path, boolean aggregateLanes, org.djunits.value.vdouble.scalar.Duration aggregationTime) Creates aSourcefrom a sampler and positions.toString()Methods inherited from class org.opentrafficsim.draw.graphs.AbstractBoundedPlot
setAutoBoundDomain, setAutoBoundRange, setChart, setLowerDomainBound, setLowerRangeBound, setUpperDomainBound, setUpperRangeBoundMethods inherited from class org.opentrafficsim.draw.graphs.AbstractPlot
addChangeListener, encodeAsPng, getCaption, getChart, getGroup, getId, getUpdateTime, notifyPlotChange, removeChangeListener, setGroup, setUpdateInterval, updateMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.jfree.data.general.Dataset
addChangeListener, getGroup, removeChangeListener, setGroup
-
Field Details
-
DEFAULT_PERIODS
public static final double[] DEFAULT_PERIODSAggregation periods. -
DEFAULT_UPDATE_FREQUENCIES
public static final int[] DEFAULT_UPDATE_FREQUENCIESUpdate frequencies (n * 1/period).
-
-
Constructor Details
-
FundamentalDiagram
public FundamentalDiagram(String caption, FundamentalDiagram.Quantity domainQuantity, FundamentalDiagram.Quantity rangeQuantity, PlotScheduler scheduler, FundamentalDiagram.FdSource source, FundamentalDiagram.FdLine fdLine) Constructor.- Parameters:
caption- captiondomainQuantity- initial quantity on the domain axisrangeQuantity- initial quantity on the range axisscheduler- scheduler.source- source providing the datafdLine- fundamental diagram line, may benull
-
-
Method Details
-
increaseTime
protected void increaseTime(org.djunits.value.vdouble.scalar.Time time) Description copied from class:AbstractPlotIncrease the simulated time span.- Specified by:
increaseTimein classAbstractPlot- Parameters:
time- time to increase to
-
getSeriesCount
public int getSeriesCount()- Specified by:
getSeriesCountin interfaceorg.jfree.data.general.SeriesDataset
-
getSeriesKey
- Specified by:
getSeriesKeyin interfaceorg.jfree.data.general.SeriesDataset
-
indexOf
- Specified by:
indexOfin interfaceorg.jfree.data.general.SeriesDataset
-
getDomainOrder
public org.jfree.data.DomainOrder getDomainOrder()- Specified by:
getDomainOrderin interfaceorg.jfree.data.xy.XYDataset
-
getItemCount
public int getItemCount(int series) - Specified by:
getItemCountin interfaceorg.jfree.data.xy.XYDataset
-
getX
- Specified by:
getXin interfaceorg.jfree.data.xy.XYDataset
-
getXValue
public double getXValue(int series, int item) - Specified by:
getXValuein interfaceorg.jfree.data.xy.XYDataset
-
getY
- Specified by:
getYin interfaceorg.jfree.data.xy.XYDataset
-
getYValue
public double getYValue(int series, int item) - Specified by:
getYValuein interfaceorg.jfree.data.xy.XYDataset
-
getGraphType
Description copied from class:AbstractPlotReturn the graph type for transceiver.- Specified by:
getGraphTypein classAbstractPlot- Returns:
- the graph type.
-
getStatusLabel
Description copied from class:AbstractPlotReturns the status label when the mouse is over the given location.- Specified by:
getStatusLabelin classAbstractPlot- Parameters:
domainValue- domain value (x-axis)rangeValue- range value (y-axis)- Returns:
- status label when the mouse is over the given location
-
sourceFromSampler
public static <L extends LaneData<L>> FundamentalDiagram.FdSource sourceFromSampler(Sampler<?, L> sampler, GraphCrossSection<L> crossSection, boolean aggregateLanes, org.djunits.value.vdouble.scalar.Duration aggregationTime, boolean harmonic) Creates aSourcefrom a sampler and positions.- Type Parameters:
L- LaneData- Parameters:
sampler- samplercrossSection- cross sectionaggregateLanes- whether to aggregate the positionsaggregationTime- aggregation time (and update time)harmonic- harmonic mean- Returns:
- source for a fundamental diagram from a sampler and positions
-
sourceFromSampler
public static <L extends LaneData<L>> FundamentalDiagram.FdSource sourceFromSampler(Sampler<?, L> sampler, GraphPath<L> path, boolean aggregateLanes, org.djunits.value.vdouble.scalar.Duration aggregationTime) Creates aSourcefrom a sampler and positions.- Type Parameters:
L- LaneData- Parameters:
sampler- samplerpath- cross sectionaggregateLanes- whether to aggregate the positionsaggregationTime- aggregation time (and update time)- Returns:
- source for a fundamental diagram from a sampler and positions
-
combinedSource
public static FundamentalDiagram.FdSource combinedSource(Map<String, FundamentalDiagram.FdSource> sources) Combines multiple sources in to one source.- Parameters:
sources- sources coupled to their names for in the legend- Returns:
- combined source
-
toString
-
getSource
Get the data source.- Returns:
- the data source
-
getLegend
public org.jfree.chart.LegendItemCollection getLegend()Retrievee the legend of this FundamentalDiagram.- Returns:
- the legend
-
getLaneVisible
Return the list of lane visibility flags.- Returns:
- the list of lane visibility flags
-
getDomainQuantity
Return the domain quantity.- Returns:
- the domain quantity
-
setDomainQuantity
Set the domain quantity.- Parameters:
domainQuantity- the new domain quantity
-
getOtherQuantity
Get the other (non domain; vertical axis) quantity.- Returns:
- the quantity for the vertical axis
-
setOtherQuantity
Set the other (non domain; vertical axis) quantity.- Parameters:
otherQuantity- the quantity for the vertical axis
-
getRangeQuantity
Get the range quantity.- Returns:
- the range quantity
-
setRangeQuantity
Set the range quantity.- Parameters:
rangeQuantity- the new range quantity
-
getTimeInfo
Retrieve the time info.- Returns:
- the time info
-
setTimeInfo
Set the time info.- Parameters:
timeInfo- the new time info
-
hasLineFD
public boolean hasLineFD()Return whether the plot has a fundamental diagram line.- Returns:
- whether the plot has a fundamental diagram line
-