21 package org.matsim.pt.counts.obsolete;
23 import java.awt.Color;
25 import java.awt.geom.Ellipse2D;
26 import java.awt.geom.Rectangle2D;
27 import java.util.ArrayList;
28 import java.util.Collections;
29 import java.util.Iterator;
30 import java.util.List;
31 import java.util.Vector;
33 import org.jfree.chart.ChartFactory;
34 import org.jfree.chart.JFreeChart;
35 import org.jfree.chart.annotations.XYTextAnnotation;
36 import org.jfree.chart.axis.LogarithmicAxis;
37 import org.jfree.chart.labels.CustomXYToolTipGenerator;
38 import org.jfree.chart.plot.PlotOrientation;
39 import org.jfree.chart.plot.XYPlot;
40 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
41 import org.jfree.chart.urls.CustomXYURLGenerator;
42 import org.jfree.data.xy.DefaultXYDataset;
43 import org.jfree.data.xy.XYSeries;
44 import org.jfree.data.xy.XYSeriesCollection;
65 super(ccl, iteration, filename, filename);
79 XYSeriesCollection dataset0 =
new XYSeriesCollection();
80 XYSeries series =
new XYSeries(
"MATSim volumes");
82 XYSeriesCollection dataset_outliers =
new XYSeriesCollection();
83 XYSeries series_outliers =
new XYSeries(
"MATSim outliers");
85 CustomXYURLGenerator url_gen =
new CustomXYURLGenerator();
86 CustomXYToolTipGenerator tt_gen =
new CustomXYToolTipGenerator();
88 final ArrayList<String> urls =
new ArrayList<String>();
89 final ArrayList<String> tooltips =
new ArrayList<String>();
90 List<Comp> comps =
new Vector<Comp>();
92 Iterator<CountSimComparison> l_it = this.
ccl_.iterator();
94 while (l_it.hasNext()) {
105 double realVal = 1.0;
110 series.add(realVal, simVal);
111 comps.add(
new Comp(realVal,
"link" + cc.
getId() +
".html",
112 "Link " + cc.
getId() +
"; " +
"Count: " + realVal
113 +
", Sim: " + simVal));
117 series_outliers.add(realVal, simVal);
122 dataset0.addSeries(series);
123 dataset_outliers.addSeries(series_outliers);
133 for (Iterator<Comp> iter = comps.iterator(); iter.hasNext();) {
134 Comp cp = iter.next();
139 url_gen.addURLSeries(urls);
140 tt_gen.addToolTipSeries(tooltips);
142 String title =
"[" + this.countsType +
"]\tVolumes " + (hour - 1)
143 +
":00 - " + (hour) +
":00, Iteration: " + this.
iteration_;
145 this.
chart_ = ChartFactory.createXYLineChart(title,
146 "Count Volumes [veh/h]",
147 "Sim Volumes [veh/h]",
149 PlotOrientation.VERTICAL,
false,
153 XYPlot plot = this.
chart_.getXYPlot();
154 final LogarithmicAxis axis_x =
new LogarithmicAxis(
155 "Count Volumes [veh/h]");
156 final LogarithmicAxis axis_y =
new LogarithmicAxis(
157 "Sim Volumes [veh/h]");
158 axis_x.setAllowNegativesFlag(
false);
159 axis_y.setAllowNegativesFlag(
false);
162 XYLineAndShapeRenderer renderer =
new XYLineAndShapeRenderer();
163 renderer.setDefaultLinesVisible(
false);
164 renderer.setURLGenerator(url_gen);
165 renderer.setSeriesPaint(0, Color.black);
166 renderer.setSeriesToolTipGenerator(0, tt_gen);
168 .setSeriesShape(0,
new Rectangle2D.Double(-1.5, -1.5, 3.0, 3.0));
171 XYLineAndShapeRenderer renderer2 =
new XYLineAndShapeRenderer();
172 renderer2.setDefaultLinesVisible(
false);
173 renderer2.setSeriesPaint(0, Color.red);
174 renderer2.setSeriesShape(0,
new Ellipse2D.Double(-3.0, -3.0, 6.0, 6.0));
177 DefaultXYDataset dataset1 =
new DefaultXYDataset();
178 dataset1.addSeries(
"f1x",
new double[][] { { 1.0, 10000.0 },
180 dataset1.addSeries(
"f2x",
new double[][] { { 1.0, 10000.0 },
182 dataset1.addSeries(
"f05x",
new double[][] { { 2.0, 10000.0 },
185 XYLineAndShapeRenderer renderer3 =
new XYLineAndShapeRenderer();
186 renderer3.setDefaultShapesVisible(
false);
187 renderer3.setSeriesPaint(0, Color.blue);
188 renderer3.setSeriesPaint(1, Color.blue);
189 renderer3.setSeriesPaint(2, Color.blue);
190 renderer3.setDefaultSeriesVisibleInLegend(
false);
191 renderer3.setSeriesItemLabelsVisible(0,
true);
192 renderer3.setSeriesItemLabelsVisible(1,
false);
193 renderer3.setSeriesItemLabelsVisible(2,
false);
195 XYTextAnnotation annotation0 =
new XYTextAnnotation(
"2.0 count",
197 annotation0.setFont(
new Font(
"SansSerif", Font.BOLD, 11));
198 plot.addAnnotation(annotation0);
199 XYTextAnnotation annotation1 =
new XYTextAnnotation(
"count", 13000.0,
201 annotation1.setFont(
new Font(
"SansSerif", Font.BOLD, 11));
202 plot.addAnnotation(annotation1);
203 XYTextAnnotation annotation2 =
new XYTextAnnotation(
"0.5 count",
205 annotation2.setFont(
new Font(
"SansSerif", Font.BOLD, 11));
206 plot.addAnnotation(annotation2);
208 plot.setDomainAxis(axis_x);
209 plot.setRangeAxis(axis_y);
210 plot.setRenderer(0, renderer);
212 plot.setRenderer(1, renderer2);
213 plot.setDataset(1, dataset_outliers);
215 plot.setRenderer(2, renderer3);
216 plot.setDataset(2, dataset1);
218 plot.getRangeAxis().setRange(1.0, 19000.0);
219 plot.getDomainAxis().setRange(1.0, 19000.0);
List< CountSimComparison > ccl_
void setChartTitle(final String chartTitle)
JFreeChart createChart(final int hour)
PtCountsSimRealPerHourGraph(final List< CountSimComparison > ccl, final int iteration, final String filename, PtCountsType countsType)
double getSimulationValue()