comparison artifacts/src/main/java/org/dive4elements/river/exports/DiagramGenerator.java @ 9496:d8e753d0fdb9

stripedArea introduced for Assessment Scheme/Bewertungsschema
author gernotbelger
date Wed, 26 Sep 2018 15:48:05 +0200
parents eeea16ea0980
children ef5754ba5573
comparison
equal deleted inserted replaced
9495:bb278c927b66 9496:d8e753d0fdb9
35 import org.dive4elements.river.exports.process.Processor; 35 import org.dive4elements.river.exports.process.Processor;
36 import org.dive4elements.river.jfree.AxisDataset; 36 import org.dive4elements.river.jfree.AxisDataset;
37 import org.dive4elements.river.jfree.Bounds; 37 import org.dive4elements.river.jfree.Bounds;
38 import org.dive4elements.river.jfree.DoubleBounds; 38 import org.dive4elements.river.jfree.DoubleBounds;
39 import org.dive4elements.river.jfree.RiverAnnotation; 39 import org.dive4elements.river.jfree.RiverAnnotation;
40 import org.dive4elements.river.jfree.StyledAreaSeriesCollection;
41 import org.dive4elements.river.jfree.XYMetaSeriesCollection; 40 import org.dive4elements.river.jfree.XYMetaSeriesCollection;
42 import org.dive4elements.river.themes.ThemeDocument; 41 import org.dive4elements.river.themes.ThemeDocument;
43 import org.jfree.chart.ChartFactory; 42 import org.jfree.chart.ChartFactory;
44 import org.jfree.chart.JFreeChart; 43 import org.jfree.chart.JFreeChart;
45 import org.jfree.chart.LegendItem; 44 import org.jfree.chart.LegendItem;
49 import org.jfree.chart.axis.NumberAxis; 48 import org.jfree.chart.axis.NumberAxis;
50 import org.jfree.chart.axis.ValueAxis; 49 import org.jfree.chart.axis.ValueAxis;
51 import org.jfree.chart.plot.Marker; 50 import org.jfree.chart.plot.Marker;
52 import org.jfree.chart.plot.PlotOrientation; 51 import org.jfree.chart.plot.PlotOrientation;
53 import org.jfree.chart.plot.XYPlot; 52 import org.jfree.chart.plot.XYPlot;
54 import org.jfree.chart.title.TextTitle;
55 import org.jfree.data.Range; 53 import org.jfree.data.Range;
56 import org.jfree.data.general.Series; 54 import org.jfree.data.general.Series;
57 import org.jfree.data.xy.XYDataset; 55 import org.jfree.data.xy.XYDataset;
58 import org.jfree.data.xy.XYSeries; 56 import org.jfree.data.xy.XYSeries;
59 import org.jfree.data.xy.XYSeriesCollection; 57 import org.jfree.data.xy.XYSeriesCollection;
437 " " + plot.getDomainAxis(i).getRange().getUpperBound() + 435 " " + plot.getDomainAxis(i).getRange().getUpperBound() +
438 "]"); 436 "]");
439 } 437 }
440 } 438 }
441 log.debug("..............."); 439 log.debug("...............");
442 }
443
444 /**
445 * Registers an area to be drawn.
446 * @param area Area to be drawn.
447 * @param axisName Name of the axis.
448 * @param visible Whether or not to be visible
449 * (important for range calculations).
450 */
451 public void addAreaSeries(
452 StyledAreaSeriesCollection area,
453 String axisName,
454 boolean visible
455 ) {
456 addAreaSeries(area, diagramAttributes.getAxisIndex(axisName), visible);
457 }
458
459 /**
460 * Registers an area to be drawn.
461 * @param area Area to be drawn.
462 * @param index 'axis index'
463 * @param visible Whether or not to be visible
464 * (important for range calculations).
465 */
466 public void addAreaSeries(
467 StyledAreaSeriesCollection area,
468 int index,
469 boolean visible
470 ) {
471 if (area == null) {
472 log.warn("Cannot yet render above/under curve.");
473 return;
474 }
475
476 AxisDataset axisDataset = (AxisDataset) getAxisDataset(index);
477
478 Bounds[] xyBounds = ChartHelper.getBounds(area);
479
480 if (xyBounds == null) {
481 log.warn("Skip XYDataset for Axis (invalid ranges): " + index);
482 return;
483 }
484
485
486 if (visible) {
487 if (log.isDebugEnabled()) {
488 log.debug("Add new AxisDataset at index: " + index);
489 log.debug("X extent: " + xyBounds[0]);
490 log.debug("Y extent: " + xyBounds[1]);
491 }
492
493 axisDataset.addArea(area);
494 }
495
496 /* No range merging, for areas extending to infinity this causes problems. */
497 /* No range merging, for areas extending to infinity this causes problems. */
498 if( StyledSeriesBuilder.isBigDoubleValue( xyBounds[1].getLower() ) || StyledSeriesBuilder.isBigDoubleValue( xyBounds[1].getLower() ) )
499 return;
500
501 combineXBounds(xyBounds[0], 0);
502 combineYBounds(xyBounds[1], index);
503 } 440 }
504 441
505 /** 442 /**
506 * Add given series if visible, if not visible adjust ranges (such that 443 * Add given series if visible, if not visible adjust ranges (such that
507 * all points in data would be plotted once visible). 444 * all points in data would be plotted once visible).
1132 } 1069 }
1133 return "Domain Axis Title not configured in conf.xml"; 1070 return "Domain Axis Title not configured in conf.xml";
1134 } 1071 }
1135 1072
1136 protected final String getDefaultYAxisLabel(String axisName) { 1073 protected final String getDefaultYAxisLabel(String axisName) {
1137 Set labelSet = axesLabels.get(diagramAttributes.getAxisIndex(axisName)); 1074 Set<String> labelSet = axesLabels.get(diagramAttributes.getAxisIndex(axisName));
1138 log.debug("Labels for axis: " + labelSet); 1075 log.debug("Labels for axis: " + labelSet);
1139 if (labelSet != null && !labelSet.isEmpty()) { 1076 if (labelSet != null && !labelSet.isEmpty()) {
1140 String label = StringUtils.join(labelSet, ", "); 1077 String label = StringUtils.join(labelSet, ", ");
1141 Matcher units = UNIT_PATTERN.matcher(label); 1078 Matcher units = UNIT_PATTERN.matcher(label);
1142 if (units.find()) { 1079 if (units.find()) {

http://dive4elements.wald.intevation.org