Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalCrossSectionChart.java @ 447:92b7ccbf6163
Improved generation of iso lines in vertical cross section.
gnv-artifacts/trunk@495 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 01 Jan 2010 21:52:41 +0000 |
parents | f5a041000357 |
children | c7ca2fce041f |
line wrap: on
line source
package de.intevation.gnv.chart; import java.util.Locale; import java.awt.Color; import java.awt.Paint; import de.intevation.gnv.math.AttributedXYColumns; import de.intevation.gnv.jfreechart.PolygonDataset; import de.intevation.gnv.jfreechart.PolygonPlot; import de.intevation.gnv.jfreechart.PolygonRenderer; import de.intevation.gnv.raster.Palette; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.axis.SymbolAxis; import org.jfree.chart.title.PaintScaleLegend; import org.jfree.chart.renderer.LookupPaintScale; import org.jfree.ui.RectangleEdge; import org.jfree.ui.RectangleInsets; /** * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) * @author Sascha L. Teichmann (sascha.teichmann@intevation.de) */ public class VerticalCrossSectionChart implements Chart { public static final class PalettePaintLookup implements PolygonRenderer.PaintLookup { private Palette palette; public PalettePaintLookup(Palette palette) { this.palette = palette; } public Paint getPaint(int index) { return index < 0 ? Color.black : palette.getColor(index); } } // class PalettePaintLookup protected JFreeChart chart; protected AttributedXYColumns columns; protected Palette palette; protected Locale locale; public VerticalCrossSectionChart() { } public VerticalCrossSectionChart( AttributedXYColumns columns, Palette palette, Locale locale ) { this.columns = columns; this.palette = palette; this.locale = locale; } protected JFreeChart createChart() { String title = "Neues 2D-Diagramm"; String xAxis = "x-Achse des Diagramms"; String yAxis = "y-Achse des Diagramms"; boolean legendB = false; boolean tooltips = false; boolean urls = false; PlotOrientation po = PlotOrientation.HORIZONTAL; PolygonDataset data = columns.getPolygonDataset(); PolygonRenderer renderer = new PolygonRenderer( new PalettePaintLookup(palette)); ValueAxis domainAxis = new NumberAxis(xAxis); ValueAxis rangeAxis = new NumberAxis(yAxis); PolygonPlot plot = new PolygonPlot( data, renderer, domainAxis, rangeAxis, null); int colors = palette.getSize(); LookupPaintScale lookupPaint = new LookupPaintScale(-0.5d, colors-0.5d, Color.white); Color color = null; String [] labels = new String[colors]; for (int i = 0; i < colors; i++) { color = palette.getColor(colors-1-i); labels[i] = palette.getEntryByIndex(colors-1-i).getDescription(); lookupPaint.add(i-0.5d, color); } JFreeChart chart = new JFreeChart( title, JFreeChart.DEFAULT_TITLE_FONT, plot, legendB); chart.removeLegend(); SymbolAxis scale = new SymbolAxis("Temperatur", labels); scale.setRange(-1.5d, colors+0.5d); scale.setGridBandsVisible(false); scale.setPlot(plot); PaintScaleLegend legend = new PaintScaleLegend( lookupPaint, scale); legend.setMargin(new RectangleInsets(3d, 10d, 3d, 10d)); legend.setPosition(RectangleEdge.LEFT); legend.setAxisOffset(5d); chart.addSubtitle(legend); return chart; } public JFreeChart generateChart() { if (chart == null) { chart = createChart(); } return chart; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :