21 package org.matsim.pt.analysis;
23 import java.awt.Color;
25 import java.io.IOException;
26 import java.util.ArrayList;
27 import java.util.HashMap;
28 import java.util.HashSet;
29 import java.util.List;
32 import org.jfree.chart.ChartFactory;
33 import org.jfree.chart.ChartUtils;
34 import org.jfree.chart.JFreeChart;
35 import org.jfree.chart.plot.PlotOrientation;
36 import org.jfree.chart.plot.XYPlot;
37 import org.jfree.chart.renderer.xy.XYItemRenderer;
38 import org.jfree.data.xy.XYSeries;
39 import org.jfree.data.xy.XYSeriesCollection;
62 private final Map<Id, List<Tuple<Id, Double>>>
positions =
new HashMap<Id, List<Tuple<Id, Double>>>();
65 List<Tuple<Id, Double>> list = this.positions.get(event.
getVehicleId());
67 list =
new ArrayList<Tuple<Id, Double>>();
74 List<Tuple<Id, Double>> list = this.positions.get(event.
getVehicleId());
76 list =
new ArrayList<Tuple<Id, Double>>();
82 public void reset(
final int iteration) {
83 this.positions.clear();
89 System.out.println(info.getFirst().toString() +
"\t" + info.getSecond().toString());
97 HashMap<Id, Integer> stopIndex =
new HashMap<Id, Integer>();
100 stopIndex.put(stop.getStopFacility().getId(), idx);
104 HashSet<Id> vehicles =
new HashSet<Id>();
106 vehicles.add(dep.getVehicleId());
109 XYSeriesCollection dataset =
new XYSeriesCollection();
111 double earliestTime = Double.POSITIVE_INFINITY;
112 double latestTime = Double.NEGATIVE_INFINITY;
115 if (vehicles.contains(entry.getKey())) {
116 XYSeries series =
new XYSeries(
"t",
false,
true);
118 Integer stopIdx = stopIndex.get(pos.getFirst());
119 if (stopIdx != null) {
120 double time = pos.getSecond().doubleValue();
121 series.add(stopIdx.intValue(), time);
122 if (time < earliestTime) {
125 if (time > latestTime) {
130 dataset.addSeries(series);
136 JFreeChart c = ChartFactory.createXYLineChart(
"Route-Time Diagram, Route = " + route.
getId(),
"stops",
"time",
137 dataset, PlotOrientation.VERTICAL,
142 c.setBackgroundPaint(
new Color(1.0f, 1.0f, 1.0f, 1.0f));
144 XYPlot p = (XYPlot) c.getPlot();
146 p.getRangeAxis().setInverted(
true);
147 p.getRangeAxis().setRange(earliestTime, latestTime);
148 XYItemRenderer renderer = p.getRenderer();
149 for (
int i = 0; i < numSeries; i++) {
150 renderer.setSeriesPaint(i, Color.black);
154 ChartUtils.saveChartAsPNG(
new File(filename), c, 1024, 768, null,
true, 9);
155 }
catch (IOException e) {
Id< TransitStopFacility > getFacilityId()
final Map< Id, List< Tuple< Id, Double > > > positions
Id< TransitStopFacility > getFacilityId()
List< TransitRouteStop > getStops()
void reset(final int iteration)
Id< Vehicle > getVehicleId()
Map< Id< Departure >, Departure > getDepartures()
void handleEvent(final VehicleArrivesAtFacilityEvent event)
void handleEvent(final VehicleDepartsAtFacilityEvent event)
void createGraph(final String filename, final TransitRoute route)
Id< Vehicle > getVehicleId()