JFreeChart报表实现饼状图(3D),柱状图(3D),折线图(3D)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36410795/article/details/80521543

JFreeChart是JAVA平台上的一个开放的图表绘制类库。

所需jar包:>点我下载

Demo实例下载:>点我下载

一:JFreeChart制作饼状图

①:加入所需的jar包

②:核心代码

import java.awt.Font;
import java.awt.Image;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
 /**
  * 饼状图实现
  * @author 谢豪
  *
  */
public class JFreeChart_PieChart {
    public static void main(String[] args) {
        try {
            //如果不使用Font,中文将显示不出来
            Font font = new Font("宋体", Font.BOLD, 15);
 
            DefaultPieDataset pds = new DefaultPieDataset();
            pds.setValue("sun", 100);
            pds.setValue("ibm", 300);
            pds.setValue("bea", 500);
            pds.setValue("oracle", 700);
            /**
             * 生成一个饼图的图表
             *
             * 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
             */
            JFreeChart chart = ChartFactory.createPieChart("标题", pds, true, false, true);
            //设置图片标题的字体
            chart.getTitle().setFont(font);
 
            //得到图块,准备设置标签的字体
            PiePlot plot = (PiePlot) chart.getPlot();
 
            //设置分裂效果,需要指定分裂出去的key
            plot.setExplodePercent("oracle", 0.3);
 
            //设置标签字体
            plot.setLabelFont(font);
 
            //设置图例项目字体
            chart.getLegend().setItemFont(font);
 
            /**
             * 设置开始角度(弧度计算)
             *
             * 度    0°    30°        45°        60°        90°        120°    135°    150°    180°    270°    360°
             * 弧度    0    π/6        π/4        π/3        π/2        2π/3    3π/4    5π/6    π        3π/2    2π
             */
            plot.setStartAngle(new Float(3.14f / 2f));
 
            //设置背景图片,设置最大的背景
            Image img = ImageIO.read(new File("D:/JFreeChart/背景图-白色.jpg"));
            chart.setBackgroundImage(img);
 
            //设置plot的背景图片
            img = ImageIO.read(new File("D:/JFreeChart/背景图-粉色.jpg"));
            plot.setBackgroundImage(img);
 
            //设置plot的前景色透明度
            plot.setForegroundAlpha(0.7f);
 
            //设置plot的背景色透明度
            plot.setBackgroundAlpha(0.0f);
 
            //设置标签生成器(默认{0})
            //{0}:key {1}:value {2}:百分比 {3}:sum
            plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1})/{2}"));
 
            //将内存中的图片写到本地硬盘
            ChartUtilities.saveChartAsJPEG(new File("D:/JFreeChart/数据图.jpg"), chart, 600, 300);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

③:生成的图片

④:设置3D效果方法:

ChartFactory.createPieChart() 改为 ChartFactory.createPieChart3D()
PiePlot plot = (PiePlot) chart.getPlot() 改为 PiePlot3D plot = (PiePlot3D) chart.getPlot()
即可。

二:JFreeChart制作树状图

①:加入所需的jar包

②:核心代码

import java.awt.Font;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
 
/**
 * 树状图实现
 * @author 谢豪
 *
 */
public class JFreeChart_Dendrogram {
    public static void main(String[] args) {
        try {
            //种类数据集
            DefaultCategoryDataset ds = new DefaultCategoryDataset();
 
            ds.setValue(100, "ibm", "第一季度");
            ds.setValue(200, "ibm", "第二季度");
            ds.setValue(600, "ibm", "第三季度");
 
            ds.setValue(500, "google", "第一季度");
            ds.setValue(333, "google", "第二季度");
            ds.setValue(780, "google", "第三季度");
 
            ds.setValue(600, "用友", "第一季度");
            ds.setValue(1500, "用友", "第二季度");
            ds.setValue(300, "用友", "第三季度");
 
            Font font = new Font("宋体", Font.BOLD, 20);
            //创建柱状图,柱状图分水平显示和垂直显示两种
            JFreeChart chart = ChartFactory.createBarChart("前三季度各大公司JEEAS市场销售情况", "季度", "销量(万台)", ds, PlotOrientation.VERTICAL, true, true, true);
 
            //设置整个图片的标题字体
            chart.getTitle().setFont(font);
 
            //设置提示条字体
            font = new Font("宋体", Font.BOLD, 15);
            chart.getLegend().setItemFont(font);
 
            //得到绘图区
            CategoryPlot plot = (CategoryPlot) chart.getPlot();
            //得到绘图区的域轴(横轴),设置标签的字体
            plot.getDomainAxis().setLabelFont(font);
 
            //设置横轴标签项字体
            plot.getDomainAxis().setTickLabelFont(font);
 
            //设置范围轴(纵轴)字体
            plot.getRangeAxis().setLabelFont(font);
            //存储成图片
 
            //设置chart的背景图片
            chart.setBackgroundImage(ImageIO.read(new File("D:/JFreeChart/背景图-白色.jpg")));
 
            plot.setBackgroundImage(ImageIO.read(new File("D:/JFreeChart/背景图-粉色.jpg")));
 
            plot.setForegroundAlpha(1.0f);
 
            ChartUtilities.saveChartAsJPEG(new File("D:/JFreeChart/数据图.jpg"), chart, 600, 400);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

③:生成的图片

④:设置3D效果方法:

JFreeChart chart = ChartFactory.createBarChart() 改为 JFreeChart chart = ChartFactory.createBarChart3D()
即可。

三:JFreeChart制作折线图

①:加入所需的jar包

②:核心代码

import java.awt.Font;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
 
/**
 * 折线图实现
 * @author 谢豪
 *
 */
public class JFreeChart_FoldLine {
    public static void main(String[] args) {
        try {
            //种类数据集
            DefaultCategoryDataset ds = new DefaultCategoryDataset();
            ds.setValue(100, "ibm", "第一季度");
            ds.setValue(200, "ibm", "第二季度");
            ds.setValue(600, "ibm", "第三季度");
 
            ds.setValue(500, "google", "第一季度");
            ds.setValue(333, "google", "第二季度");
            ds.setValue(780, "google", "第三季度");
 
            ds.setValue(600, "用友", "第一季度");
            ds.setValue(1500, "用友", "第二季度");
            ds.setValue(300, "用友", "第三季度");
 
            Font font = new Font("宋体", Font.BOLD, 20);
            //创建柱状图
            JFreeChart chart = ChartFactory.createLineChart("前三季度各大公司JEEAS市场销售情况", "季度", "销量(万台)", ds, PlotOrientation.VERTICAL, true, true, true);
 
            //设置整个图片的标题字体
            chart.getTitle().setFont(font);
 
            //设置提示条字体
            font = new Font("宋体", Font.BOLD, 15);
            chart.getLegend().setItemFont(font);
 
            //得到绘图区
            CategoryPlot plot = (CategoryPlot) chart.getPlot();
            //得到绘图区的域轴(横轴),设置标签的字体
            plot.getDomainAxis().setLabelFont(font);
 
            //设置横轴标签项字体
            plot.getDomainAxis().setTickLabelFont(font);
 
            //设置范围轴(纵轴)字体
            plot.getRangeAxis().setLabelFont(font);
            //存储成图片
            //设置chart的背景图片
            chart.setBackgroundImage(ImageIO.read(new File("D:/JFreeChart/背景图-白色.jpg")));
 
            plot.setBackgroundImage(ImageIO.read(new File("D:/JFreeChart/背景图-粉色.jpg")));
 
            plot.setForegroundAlpha(1.0f);
            ChartUtilities.saveChartAsJPEG(new File("D:/JFreeChart/数据图.jpg"), chart, 600, 400);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

③:生成的图片

④:设置3D效果方法:

JFreeChart chart = ChartFactory.createLineChart() 改为 JFreeChart chart = ChartFactory.createLineChart3D()
即可。

猜你喜欢

转载自blog.csdn.net/qq_36410795/article/details/80521543
今日推荐