当前位置: 首页 > 教程 > JFreeChart >

JFreeChart 散点图

精华
小牛编辑
225浏览
2023-03-14

什么是JFreeChart 散点图

散点图或散点图包含一组绘制在水平轴和垂直轴上的数据点。它显示来自 XYDataset 的数据。

下图显示了 JFreeChart 库中包含的散点图的一些演示版本:

JFreeChart 散点图的示例

让我们考虑散点图的以下示例数据。

男孩 重量 女孩 重量
1 72.9 1 72.5
2 81.6 2 80.1
3 88.9 3 87.2
4 96 4 94.5
5 102.1 5 101.4
6 108.5 6 107.4
7 113.9 7 112.8
8 119.3 8 118.2
9 123.8 9 122.9
10 124.4 10 123.4

以下代码根据上述示例数据创建散点图:

package cn.xnip;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import javax.swing.*;
import java.awt.*;

public class ScatterPlotExample extends JFrame {
  private static final long serialVersionUID = 6294689542092367723L;  
  
  public ScatterPlotExample(String title) {  
    super(title);  
  
    // Create dataset  
    XYDataset dataset = createDataset();
  
    // Create chart  
    JFreeChart chart = ChartFactory.createScatterPlot(
        "Boys VS Girls weight comparison chart",   
        "X-Axis", "Y-Axis", dataset);  
  
      
    //Changes background color  
    XYPlot plot = (XYPlot)chart.getPlot();
    plot.setBackgroundPaint(new Color(255,228,196));
      
     
    // Create Panel  
    ChartPanel panel = new ChartPanel(chart);
    setContentPane(panel);  
  }  
  
  private XYDataset createDataset() {  
    XYSeriesCollection dataset = new XYSeriesCollection();
  
    //Boys (Age,weight) series  
    XYSeries series1 = new XYSeries("Boys");
    series1.add(1, 72.9);  
    series1.add(2, 81.6);  
    series1.add(3, 88.9);  
    series1.add(4, 96);  
    series1.add(5, 102.1);  
    series1.add(6, 108.5);  
    series1.add(7, 113.9);  
    series1.add(8, 119.3);  
    series1.add(9, 123.8);  
    series1.add(10, 124.4);  
  
    dataset.addSeries(series1);  
      
   //Girls (Age,weight) series  
    XYSeries series2 = new XYSeries("Girls");  
    series2.add(1, 72.5);  
    series2.add(2, 80.1);  
    series2.add(3, 87.2);  
    series2.add(4, 94.5);  
    series2.add(5, 101.4);  
    series2.add(6, 107.4);  
    series2.add(7, 112.8);  
    series2.add(8, 118.2);  
    series2.add(9, 122.9);  
    series2.add(10, 123.4);  
  
    dataset.addSeries(series2);  
  
    return dataset;  
  }  
  
  public static void main(String[] args) {  
    SwingUtilities.invokeLater(() -> {  
      ScatterPlotExample example = new ScatterPlotExample("小牛知识库网:Scatter Chart Example");
      example.setSize(800, 400);  
      example.setLocationRelativeTo(null);  
      example.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  
      example.setVisible(true);  
    });  
  }  
}  

输出结果为: