java 画数学函数图
java 画数学函数图不太方便,需要用第三方包 jfree,安装或下载方法网上有。
要用到 jfree 里面的 XYSeries,生成一系列数据。
然后根据生成的数据,使用 chart 描点画图。
举例:
1. 画图 y= x^2
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class DrawMath {
public static void main(String[] args) {
XYSeries series = new XYSeries("xySeries");
for (int x = -100; x < 100; x++) {
int y = x*x;
series.add(x, y);
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
JFreeChart chart = ChartFactory.createXYLineChart(
"y = x^2", // chart title
"x", // x axis label
"x^2", // y axis label
dataset, // data
PlotOrientation.VERTICAL,
false, // include legend
false, // tooltips
false // urls
);
ChartFrame frame = new ChartFrame("my picture", chart);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
显示效果:
2. 画图 y= sin(x)
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class DrawMath {
public static void main(String[] args) {
XYSeries series = new XYSeries("xySeries");
for (double x = -10; x < 10; x = x + 0.1) {
double y = Math.sin(x);
series.add(x, y);
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
JFreeChart chart = ChartFactory.createXYLineChart(
"y = sin(x)", // chart title
"x", // x axis label
"sin(x)", // y axis label
dataset, // data
PlotOrientation.VERTICAL,
false, // include legend
false, // tooltips
false // urls
);
ChartFrame frame = new ChartFrame("my picture", chart);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
显示效果:
3. 画散点图
画散点图时,要用到 plot 与 render 进一步设置了。
举例:
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class DrawMath {
public static void main(String[] args) {
XYSeries series = new XYSeries("xySeries");
for (double x = -10; x < 10; x = x + 0.1) {
double y = Math.sin(x);
series.add(x, y);
}
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
JFreeChart chart = ChartFactory.createXYLineChart(
"y = sin(x)", // chart title
"x", // x axis label
"sin(x)", // y axis label
dataset, // data
PlotOrientation.VERTICAL,
false, // include legend
false, // tooltips
false // urls
);
XYPlot plot = (XYPlot)chart.getPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesLinesVisible(0, false); // 设置连线不可见
plot.setRenderer(renderer);
ChartFrame frame = new ChartFrame("my picture", chart);
frame.pack(); // fit window to figure size
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
显示效果: