Files
ch.psi.plot/ch.psi.plot/tmp/xyz/plugable/GradientPlot.java

63 lines
1.8 KiB
Java

package ch.psi.plot.xyz.plugable;
import java.awt.Dimension;
import javax.swing.JFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.VectorRenderer;
import org.jfree.data.xy.VectorSeriesCollection;
import ch.psi.plot.util.XYPoint;
public class GradientPlot extends JFrame{
private static final long serialVersionUID = 1L;
/**
* Constructor
* Creates a ChartPanel that plots the gradientField
* @param title
* @param gradientField
* @param lowerLeft
* @param upperRight
*/
public GradientPlot(String title, VectorSeriesCollection gradientField, XYPoint lowerLeft, XYPoint upperRight) {
super(title);
JFreeChart chart = createChart(gradientField, lowerLeft, upperRight);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(500, 270));
setContentPane(chartPanel);
}
/**
* Creates a chart that plots the gradientField in a specified range (lowerleft and upperright rectangle)
* @param gradientField
* @param lowerLeft
* @param upperRight
* @return
*/
private JFreeChart createChart(VectorSeriesCollection gradientField, XYPoint lowerLeft, XYPoint upperRight) {
// create the chart...
NumberAxis xAxis = new NumberAxis("X");
xAxis.setLowerBound(lowerLeft.getX());
xAxis.setUpperBound(upperRight.getX());
NumberAxis yAxis = new NumberAxis("Y");
yAxis.setLowerBound(lowerLeft.getY());
yAxis.setUpperBound(upperRight.getY());
VectorRenderer renderer = new VectorRenderer();
XYPlot vectorPlot = new XYPlot(gradientField, xAxis, yAxis, renderer);
JFreeChart chart = new JFreeChart("Gradient Field", vectorPlot);
return chart;
}
}