本文链接:https://blog.csdn.net/cnds123321/article/details/89600644
目录链接:https://blog.csdn.net/cnds123321/article/details/89600379
使用JFreeChart从一个给定的业务数据创建气泡图表。
使用气泡图显示在三维方式的信息。气泡绘制在其中(x,y)坐标相交的地方。气泡的大小被认为是范围或X和Y轴的数量。
气泡图(bubble chart)是可用于展示三个变量之间的关系。它与散点图类似,绘制时将一个变量放在横轴,另一个变量放在纵轴,而第三个变量则用气泡的大小来表示。排列在工作表的列中的数据(第一列中列出 x 值,在相邻列中列出相应的 y 值和气泡大小的值)可以绘制在气泡图中。气泡图与散点图相似,不同之处在于:气泡图允许在图表中额外加入一个表示大小的变量进行对比。
7.1 测试数据
项目 | A | B | C | D | E |
---|---|---|---|---|---|
销售额(X轴) | 3259 | 2768 | 2379 | 1099 | 4069 |
数量(Y轴) | 90 | 56 | 38 | 98 | 62 |
毛利率(气泡大小) | 3 | 3 | 7 | 55% | 13% |
7.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.DefaultXYZDataset;
import javax.swing.*;
import java.io.IOException;
public class Chart {
public static void main(String[] args) throws IOException {
//设置气泡表的数据集
DefaultXYZDataset dataset=new DefaultXYZDataset();
double x_Data[]={3259,2768,2379,1099,4069};//X坐标
double y_Data[]={90,56,38,98,62};//Y坐标
double size[]={3,3,7,5,2};//气泡的大小
double d[][]={x_Data,y_Data,size};//将三个一维数组添加到二维数组中
dataset.addSeries("毛利率",d);//设置下面的目录标签
//实现简单的气泡图,设置基本的数据
JFreeChart freeChart=ChartFactory.createBubbleChart(
"数据气泡图",// 图表标题
"项目",//y轴方向数据标签
"分类",//x轴方向数据标签
dataset,//数据集,即要显示在图表上的数据
PlotOrientation.HORIZONTAL,//设置方向
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);
}
}
结果展示:
7.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.DefaultXYZDataset;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class Chart {
public static void main(String[] args) throws IOException {
//设置气泡表的数据集
DefaultXYZDataset dataset=new DefaultXYZDataset();
double x_Data[]={3259,2768,2379,1099,4069};//X坐标
double y_Data[]={90,56,38,98,62};//Y坐标
double size[]={3,3,7,5,2};//气泡的大小
double d[][]={x_Data,y_Data,size};//将三个一维数组添加到二维数组中
dataset.addSeries("毛利率",d);//设置下面的目录标签
//实现简单的气泡图,设置基本的数据
JFreeChart freeChart=ChartFactory.createBubbleChart(
"数据气泡图",// 图表标题
"项目",//y轴方向数据标签
"分类",//x轴方向数据标签
dataset,//数据集,即要显示在图表上的数据
PlotOrientation.HORIZONTAL,//设置方向
true,//是否显示图例
true,//是否显示提示
false//是否生成URL连接
);
//使用输出流输出图表文件
//输出JPG文件
OutputStream os=new FileOutputStream("c:/picture.jpg");
ChartUtilities.writeChartAsJPEG(os,freeChart,500,500);
//输出PNG文件
OutputStream os_png=new FileOutputStream("c:/pictrue_png.png");
ChartUtilities.writeChartAsPNG(os_png,freeChart,500,500);
}
}
结果展示: