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

http://dive4elements.wald.intevation.org