Java 箱线图原理
什么是箱线图
箱线图也被称为箱形图、盒图等,是一种用于展示一组数据分布情况的统计图表。它可以直观地展示数据的中位数、四分位数、最小值、最大值以及异常值等信息。
箱线图的绘制方式是在一条水平线上绘制出数据的最小值、下四分位数、中位数、上四分位数和最大值,然后根据数据的分布情况添加异常值等信息。
箱线图的原理
箱线图的绘制主要根据数据的五个统计特征来展示数据的分布,这包括最小值、下四分位数、中位数、上四分位数和最大值。
- 最小值:数据中的最小值。
- 下四分位数(Q1):将数据从小到大排序后处于中间位置的值。
- 中位数(Q2):数据的中间值,将数据从小到大排序后处于中间位置的值。
- 上四分位数(Q3):将数据从小到大排序后处于 3/4 位置的值。
- 最大值:数据中的最大值。
箱线图一般绘制一个矩形箱体,箱体的上下边界分别是下四分位数和上四分位数,箱体中间的线代表中位数。箱体外部的两条线分别延伸至最小值和最大值,称为”须”。
在箱线图中,通常还会标记出异常值(Outliers),即相较于正常数据值明显偏离的数据点。
Java 箱线图绘制的实现
在 Java 中,可以使用 JFreeChart 这个开源的图表库来绘制箱线图。下面是一个简单的示例代码,演示了如何使用 JFreeChart 绘制箱线图:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBoxAndWhiskerRenderer;
import org.jfree.data.statistics.DefaultBoxAndWhiskerCategoryDataset;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
public class BoxPlotExample extends JFrame {
public BoxPlotExample(String title) {
super(title);
// Create a dataset
DefaultBoxAndWhiskerCategoryDataset dataset = new DefaultBoxAndWhiskerCategoryDataset();
List<Double> data = new ArrayList<>();
data.add(1.0);
data.add(2.0);
data.add(3.0);
data.add(4.0);
data.add(5.0);
dataset.add(data, "Series 1", "Category 1");
// Create a chart
JFreeChart chart = ChartFactory.createBoxAndWhiskerChart(
"Box Plot Example", // chart title
"Category", // domain axis label
"Value", // range axis label
dataset, // data
true // legend
);
XYPlot plot = (XYPlot) chart.getPlot();
XYBoxAndWhiskerRenderer renderer = new XYBoxAndWhiskerRenderer();
plot.setRenderer(renderer);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(800, 600));
setContentPane(chartPanel);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
BoxPlotExample example = new BoxPlotExample("Box Plot Example");
example.pack();
example.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
example.setLocationRelativeTo(null);
example.setVisible(true);
});
}
}
在上面的示例代码中,我们首先创建了一个 DefaultBoxAndWhiskerCategoryDataset
对象作为数据集,并向其中添加一组数据。然后使用 ChartFactory.createBoxAndWhiskerChart
方法创建一个箱线图,并设置标题、横轴标签、纵轴标签等信息。最后通过 ChartPanel
将图表显示在窗口当中。
运行结果
当我们运行上面的示例代码时,会弹出一个窗口显示箱线图,图表展示了数据的中位数、四分位数以及异常值等信息。
通过箱线图,我们可以直观地了解数据的分布情况,发现异常值,以便做进一步的分析和处理。