Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/exports/TimeseriesChartGenerator.java @ 3134:5a0aef74c316
Use different stylings for real and interpolated data points.
flys-artifacts/trunk@4741 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Thu, 21 Jun 2012 13:15:48 +0000 |
parents | 0dd569e9b9f1 |
children | 5888c4685701 |
comparison
equal
deleted
inserted
replaced
3133:6f6a8e5fb7a4 | 3134:5a0aef74c316 |
---|---|
25 import org.jfree.chart.plot.XYPlot; | 25 import org.jfree.chart.plot.XYPlot; |
26 import org.jfree.chart.annotations.XYTextAnnotation; | 26 import org.jfree.chart.annotations.XYTextAnnotation; |
27 import org.jfree.chart.LegendItemCollection; | 27 import org.jfree.chart.LegendItemCollection; |
28 import org.jfree.chart.plot.Marker; | 28 import org.jfree.chart.plot.Marker; |
29 import org.jfree.chart.plot.ValueMarker; | 29 import org.jfree.chart.plot.ValueMarker; |
30 import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; | |
31 | |
30 import org.jfree.ui.Layer; | 32 import org.jfree.ui.Layer; |
31 | 33 |
32 import org.jfree.data.Range; | 34 import org.jfree.data.Range; |
33 import org.jfree.data.time.TimeSeriesCollection; | 35 import org.jfree.data.time.TimeSeriesCollection; |
34 import org.jfree.data.general.Series; | 36 import org.jfree.data.general.Series; |
44 import de.intevation.flys.jfree.DoubleBounds; | 46 import de.intevation.flys.jfree.DoubleBounds; |
45 import de.intevation.flys.jfree.TimeBounds; | 47 import de.intevation.flys.jfree.TimeBounds; |
46 import de.intevation.flys.jfree.StyledTimeSeries; | 48 import de.intevation.flys.jfree.StyledTimeSeries; |
47 import de.intevation.flys.jfree.FLYSAnnotation; | 49 import de.intevation.flys.jfree.FLYSAnnotation; |
48 import de.intevation.flys.jfree.CollisionFreeXYTextAnnotation; | 50 import de.intevation.flys.jfree.CollisionFreeXYTextAnnotation; |
51 import de.intevation.flys.jfree.StyledSeries; | |
49 | 52 |
50 import de.intevation.flys.utils.ThemeAccess; | 53 import de.intevation.flys.utils.ThemeAccess; |
51 | 54 |
52 /** | 55 /** |
53 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 56 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
150 | 153 |
151 protected List<Marker> domainMarker; | 154 protected List<Marker> domainMarker; |
152 | 155 |
153 protected List<Marker> valueMarker; | 156 protected List<Marker> valueMarker; |
154 | 157 |
158 protected Map<String, String> attributes; | |
159 | |
155 protected boolean domainZeroLineVisible; | 160 protected boolean domainZeroLineVisible; |
156 | 161 |
157 private static final Logger logger = | 162 private static final Logger logger = |
158 Logger.getLogger(TimeseriesChartGenerator.class); | 163 Logger.getLogger(TimeseriesChartGenerator.class); |
159 | 164 |
175 | 180 |
176 xBounds = new HashMap<Integer, Bounds>(); | 181 xBounds = new HashMap<Integer, Bounds>(); |
177 yBounds = new HashMap<Integer, Bounds>(); | 182 yBounds = new HashMap<Integer, Bounds>(); |
178 domainMarker = new ArrayList<Marker>(); | 183 domainMarker = new ArrayList<Marker>(); |
179 valueMarker = new ArrayList<Marker>(); | 184 valueMarker = new ArrayList<Marker>(); |
185 attributes = new HashMap<String, String>(); | |
180 } | 186 } |
181 | 187 |
182 | 188 |
183 | 189 |
184 @Override | 190 @Override |
205 adjustAxes(plot); | 211 adjustAxes(plot); |
206 addDomainAxisMarker(plot); | 212 addDomainAxisMarker(plot); |
207 addValueAxisMarker(plot); | 213 addValueAxisMarker(plot); |
208 adaptZoom(plot); | 214 adaptZoom(plot); |
209 | 215 |
216 applySeriesAttributes(plot); | |
210 addAnnotationsToRenderer(plot); | 217 addAnnotationsToRenderer(plot); |
211 return chart; | 218 return chart; |
212 } | 219 } |
213 | 220 |
214 | 221 |
673 plot.addRangeMarker(marker, Layer.BACKGROUND); | 680 plot.addRangeMarker(marker, Layer.BACKGROUND); |
674 } | 681 } |
675 valueMarker.clear(); | 682 valueMarker.clear(); |
676 } | 683 } |
677 | 684 |
685 public void addAttribute(String seriesKey, String name) { | |
686 attributes.put(seriesKey, name); | |
687 } | |
688 | |
689 protected void applySeriesAttributes(XYPlot plot) { | |
690 int count = plot.getDatasetCount(); | |
691 for (int i = 0; i < count; i++) { | |
692 XYDataset data = plot.getDataset(i); | |
693 int seriesCount = data.getSeriesCount(); | |
694 for (int j = 0; j < seriesCount; j++) { | |
695 StyledTimeSeries series = | |
696 (StyledTimeSeries)getSeriesOf(data, j); | |
697 String key = series.getKey().toString(); | |
698 if (attributes.containsKey(key)) { | |
699 if (attributes.get(key).equals("interpolate")) { | |
700 XYLineAndShapeRenderer renderer = | |
701 series.getStyle().getRenderer(); | |
702 renderer.setSeriesPaint( | |
703 j, | |
704 renderer.getSeriesFillPaint(j)); | |
705 renderer.setSeriesShapesFilled(j, false); | |
706 renderer.setDrawOutlines(true); | |
707 renderer.setSeriesVisibleInLegend(j, Boolean.FALSE, false); | |
708 logger.debug("legend: " + renderer.getSeriesVisibleInLegend(j)); | |
709 } | |
710 } | |
711 } | |
712 } | |
713 } | |
714 | |
678 /** Two Ranges that span a rectangular area. */ | 715 /** Two Ranges that span a rectangular area. */ |
679 public static class Area { | 716 public static class Area { |
680 protected Range xRange; | 717 protected Range xRange; |
681 protected Range yRange; | 718 protected Range yRange; |
682 | 719 |