JFreechart繪制2D散點圖
覺得有用的話,歡迎一起討論相互學習~




- JFreechart是一款使用java進行數據繪圖的jar包,功能十分強大,具體有多強大可以參考多年前的博文JFreechart從入門到放棄
- 經過這么多年,現在我又要用java進行算法設計了,經過多方挑選我還是選擇了我最熟悉的jfreechart.
- 如果你還不知道JFreechart的基本代碼以及使用方式這里可以找到常用的demo示例
- 下面介紹一下使用jfreechart繪制散點圖的方法
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.DefaultXYDataset;
import javax.swing.*;
import java.awt.*;
public class test2Dplot {
double[][] a = {{1, 2, 3}, {4, 5, 6}};
void plot_2D(double[][] data, String name, String title) {
DefaultXYDataset xydataset = new DefaultXYDataset();
xydataset.addSeries(title, data);//設置點的圖標title一般表示這畫的是決策變量還是目標函數值
JFreeChart chart = ChartFactory.createScatterPlot(name, "X", "Y", xydataset,
PlotOrientation.VERTICAL, true, true, false);//設置表頭,x軸,y軸,name表示問題的類型
ChartFrame frame = new ChartFrame("2D scatter plot", chart, true);
XYPlot xyplot = (XYPlot) chart.getPlot();
xyplot.setBackgroundPaint(Color.white);//設置背景面板顏色
ValueAxis vaaxis = xyplot.getDomainAxis();
vaaxis.setAxisLineStroke(new BasicStroke(1.5f));//設置坐標軸粗細
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String arg[]) {
test2Dplot test2dplot_ = new test2Dplot();
test2dplot_.plot_2D(test2dplot_.a, "nils1", "2ddcv");
}
}
- 從代碼中可以看出,Jfreechart需要有幾個要素,
- 首先要新建一個Dataset
- xydataset.addSeries(title, data); 設置數據和標題,其中數據data是一個2*N的二維數組,N表示數據點的數量。
- 通過ChartFactory.createScatterPlot設置一個表格形式
- 新建一個frame用於畫圖
- XYPlot xyplot = (XYPlot) chart.getPlot(); 然后通過這個xyplot設置圖像的各種屬性,比如線條顏色,粗細,坐標軸,等等
- 最后是一系列套話-這是從awt和swing中繼承的,不多說
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
- 然后看看效果
