JMSL Chart Programmer's Guide
|
Charting 2D Types >> Function Plot |
Function Plot
A function plot shows the value of a function f(x) over an interval [a,b]. The function must be defined as an implementation of the ChartFunction interface. A Data node constructor creates a line chart from the function. The look of the function is controlled by the line attributes.
The ChartFunction interface requires that the function name be "f
", that the function
has a single double argument and that it returns a double.
Example
This example plots the sinc function on the interval [-10,10]. The sinc function is
defined to be sin(
px)/
px. In this example, sinc is an anonymous inner class that
implements ChartFunction. This is required by the function Data constructor. In the
code, the case x=0 is handled specially to avoid returning NaN.
(Download Code)
import com.imsl.chart.*; import java.awt.Color; public class SampleFunction extends JFrameChart { public SampleFunction() { Chart chart = getChart(); AxisXY axis = new AxisXY(chart); ChartFunction sinc = new ChartFunction() { public double f(double x) { if (x == 0.0) return 1.0; return Math.sin(Math.PI*x) / (Math.PI*x); } }; Data data = new Data(axis, sinc, -10.0, 10.0); data.setLineColor(Color.blue); } public static void main(String argv[]) { new SampleFunction().setVisible(true); } }
Histogram Example
For another example of a ChartFunction, see Histogram.
Spline Chart
This example shows raw data points, as markers, and their fit to a shape preserving
spline. The spline is computed using CsShape found in the JMSL Math package
(which extends Spline). The ChartSpline
class wraps the Spline into a ChartFunction
. This example also enables the Legend.
(Download Code)
import com.imsl.chart.*; import com.imsl.math.CsShape; import java.awt.Color; public class SampleSpline extends JFrameChart { public SampleSpline() { try { Chart chart = getChart(); AxisXY axis = new AxisXY(chart); chart.getLegend().setPaint(true); double x[] = {0, 1, 2, 3, 4, 5, 8, 9, 10}; double y[] = {1.0, 0.8, 2.4, 3.1, 4.5, 5.8, 6.2, 4.9, 3.7}; Data dataMarker = new Data(axis, x, y); dataMarker.setTitle("Data"); dataMarker.setDataType(Data.DATA_TYPE_MARKER); dataMarker.setMarkerType(Data.MARKER_TYPE_FILLED_CIRCLE); CsShape spline = new CsShape(x, y); Data dataSpline = new Data(axis, new ChartSpline(spline), 0., 10.); dataSpline.setTitle("Fit"); dataSpline.setLineColor(Color.blue); } catch (com.imsl.IMSLException e) { e.printStackTrace(); } } public static void main(String argv[]) { new SampleSpline().setVisible(true); } }
© Visual Numerics, Inc. All rights reserved. |