63 lines
1.8 KiB
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;
|
|
}
|
|
|
|
|
|
}
|