本文链接:https://blog.csdn.net/cnds123321/article/details/89600541
目录链接:https://blog.csdn.net/cnds123321/article/details/89600379
在xy图(散点图)是根据一个数据系列组成的x和y值的列表。每个值对(x,y)是坐标系中的一个点。这里1值确定水平(X)位置,而另一个确定垂直(Y)位置。本章演示了如何使用JFreeChart从一个给定的业务数据创建XY图表。
5.1 测试数据
考虑这种情况,我们要创建一个XY图表所有主要浏览器的一个例子。在这里,不同的性能分数是从不同类型的人们聚集,如下所示:
Firefox
Category(X) | Score(Y) |
---|---|
1.0 | 1.0 |
2.0 | 4.0 |
3.0 | 3.0 |
Chrome
Category(X) | Score(Y) |
---|---|
1.0 | 4.0 |
2.0 | 5.0 |
3.0 | 6.0 |
IE
Category(X) | Score(Y) |
---|---|
3.0 | 4.0 |
4.0 | 5.0 |
5.0 | 4.0 |
5.2 基于swing的应用
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import javax.swing.*;
import java.io.IOException;
public class Chart {
public static void main(String[] args) throws IOException {
//设置散点图数据集
//设置第一个
XYSeries firefox = new XYSeries("Firefox");
firefox.add(1.0, 1.0);
firefox.add(2.0, 4.0);
firefox.add(3.0, 3.0);
//设置第二个
XYSeries chrome = new XYSeries("Chrome");
chrome.add(1.0, 4.0);
chrome.add(2.0, 5.0);
chrome.add(3.0, 6.0);
//设置第三个
XYSeries ie = new XYSeries("IE");
ie.add(3.0, 4.0);
ie.add(4.0, 5.0);
ie.add(5.0, 4.0);
//添加到数据集
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(firefox);
dataset.addSeries(chrome);
dataset.addSeries(ie);
//实现简单的散点图,设置基本的数据
JFreeChart freeChart = ChartFactory.createScatterPlot(
"数据散点图",// 图表标题
"Category",//y轴方向数据标签
"Score",//x轴方向数据标签
dataset,//数据集,即要显示在图表上的数据
PlotOrientation.VERTICAL,//设置方向
true,//是否显示图例
true,//是否显示提示
false//是否生成URL连接
);
//以面板显示
ChartPanel chartPanel = new ChartPanel(freeChart);
chartPanel.setPreferredSize(new java.awt.Dimension(560, 400));
//创建一个主窗口来显示面板
JFrame frame = new JFrame("饼图");
frame.setLocation(500, 400);
frame.setSize(600, 500);
//将主窗口的内容面板设置为图表面板
frame.setContentPane(chartPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
结果展示:
5.3 创建图像
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class Chart {
public static void main(String[] args) throws IOException {
//设置散点图数据集
//设置第一个
XYSeries firefox = new XYSeries("Firefox");
firefox.add(1.0, 1.0);
firefox.add(2.0, 4.0);
firefox.add(3.0, 3.0);
//设置第二个
XYSeries chrome = new XYSeries("Chrome");
chrome.add(1.0, 4.0);
chrome.add(2.0, 5.0);
chrome.add(3.0, 6.0);
//设置第三个
XYSeries ie = new XYSeries("IE");
ie.add(3.0, 4.0);
ie.add(4.0, 5.0);
ie.add(5.0, 4.0);
//添加到数据集
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(firefox);
dataset.addSeries(chrome);
dataset.addSeries(ie);
//实现简单的散点图,设置基本的数据
JFreeChart freeChart = ChartFactory.createScatterPlot(
"数据散点图",// 图表标题
"Category",//y轴方向数据标签
"Score",//x轴方向数据标签
dataset,//数据集,即要显示在图表上的数据
PlotOrientation.VERTICAL,//设置方向
true,//是否显示图例
true,//是否显示提示
false//是否生成URL连接
);
//使用输出流输出图表文件
//输出JPG文件
OutputStream os = new FileOutputStream("D:\\picture.jpg");
ChartUtilities.writeChartAsJPEG(os, freeChart, 500, 500);
//输出PNG文件
OutputStream os_png = new FileOutputStream("D:\\pictrue_png.png");
ChartUtilities.writeChartAsPNG(os_png, freeChart, 500, 500);
}
}
结果展示: