`
zjx2388
  • 浏览: 1334430 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

jfreechart实现仪表盘dashbord

    博客分类:
  • J2SE
 
阅读更多
package com.htcf.dashbord;

import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Point;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.dial.DialBackground;
import org.jfree.chart.plot.dial.DialCap;
import org.jfree.chart.plot.dial.DialPlot;
import org.jfree.chart.plot.dial.DialTextAnnotation;
import org.jfree.chart.plot.dial.DialValueIndicator;
import org.jfree.chart.plot.dial.StandardDialFrame;
import org.jfree.chart.plot.dial.StandardDialRange;
import org.jfree.chart.plot.dial.StandardDialScale;
import org.jfree.data.general.DefaultValueDataset;
import org.jfree.ui.GradientPaintTransformType;
import org.jfree.ui.StandardGradientPaintTransformer;

/**
 * @description 构造数据,测试仪表盘图片生成
 */
public class DashBords {
	  
    public static void main(String[] args) {
    	DashBords test = new DashBords();
    	test.getDataSet();
    	test.temperatureData();
    }   
    
    
    public void getDataSet(){
    	//数据集合对象 
    	DefaultValueDataset dataset = new DefaultValueDataset();
    	//当前指针指向的位置,即:我们需要显示的数据
    	dataset = new DefaultValueDataset(20D);
    	//实例化DialPlot
    	DialPlot dialplot = new DialPlot();
    	//设置数据集合
    	dialplot.setDataset(dataset);
        //开始设置显示框架结构
        StandardDialFrame standarddialframe= new StandardDialFrame();
        standarddialframe.setBackgroundPaint(Color.black);//Color.lightGray
        standarddialframe.setForegroundPaint(Color.darkGray);//圆边的颜色
        dialplot.setDialFrame(standarddialframe);
         //结束设置显示框架结构           
        GradientPaint gradientpaint = new GradientPaint(new Point(), new Color(255, 255, 255), new Point(), new Color(170, 170, 220));
        DialBackground dialbackground = new DialBackground(gradientpaint);
        dialbackground.setGradientPaintTransformer(new StandardGradientPaintTransformer(GradientPaintTransformType.VERTICAL));
        dialplot.setBackground(dialbackground);
        //设置显示在表盘中央位置的信息
        DialTextAnnotation dialtextannotation = new DialTextAnnotation("成本执行");
        dialtextannotation.setFont(new Font("Dialog", 17, 17));
        dialtextannotation.setRadius(0.6D);//字体距离圆心的距离
        dialplot.addLayer(dialtextannotation);
        DialValueIndicator dialvalueindicator = new DialValueIndicator(0);
        dialplot.addLayer(dialvalueindicator);
        //根据表盘的直径大小(0.88),设置总刻度范围
        StandardDialScale standarddialscale = new StandardDialScale(0.0D,100.0D,-120.0D,-300.0D,10D,9);
        standarddialscale.setTickRadius(0.9D);
        standarddialscale.setTickLabelOffset(0.1D);//显示数字 距离圆边的距离
        standarddialscale.setTickLabelFont(new Font("Dialog", 0, 14));
        //主意是 dialplot.addScale()不是dialplot.addLayer()
        dialplot.addScale(0, standarddialscale);
        //设置刻度范围(红色)
        StandardDialRange standarddialrange = new StandardDialRange(0D, 50D, Color.green);
        standarddialrange.setInnerRadius(0.6D);
        standarddialrange.setOuterRadius(0.62D);
        dialplot.addLayer(standarddialrange);
        //设置刻度范围(橘黄色)           
        StandardDialRange standarddialrange1 = new StandardDialRange(50D, 80D, Color.orange);
        standarddialrange1.setInnerRadius(0.6D);// 半径返回两条线  
        standarddialrange1.setOuterRadius(0.62D);
        dialplot.addLayer(standarddialrange1);
        //设置刻度范围(绿色)               
        StandardDialRange standarddialrange2 = new StandardDialRange(80D, 100D, Color.red);
        standarddialrange2.setInnerRadius(0.6D);
        standarddialrange2.setOuterRadius(0.62D);
        dialplot.addLayer(standarddialrange2);
        //设置指针
        org.jfree.chart.plot.dial.DialPointer.Pointer pointer = new org.jfree.chart.plot.dial.DialPointer.Pointer();
        dialplot.addLayer(pointer);
        //实例化DialCap
        DialCap dialcap = new DialCap();
        dialcap.setRadius(0.1D);//指针中心圆的大小
        dialplot.setCap(dialcap);
        //生成chart对象
        JFreeChart jfreechart = new JFreeChart(dialplot);
        
        //设置标题
        jfreechart.setTitle("目标成本执行情况分析");
        
        DashBords testBords = new DashBords();
        testBords.saveAsFile(jfreechart, "d:\\jfreechart\\dashbord_"+Math.random()*20+".png", 400, 400);
    }
   
    
    public void temperatureData(){

    	//数据集合对象 
    	DefaultValueDataset dataset = new DefaultValueDataset();
    	//当前指针指向的位置,即:我们需要显示的数据
    	dataset = new DefaultValueDataset(16D);
    	//实例化DialPlot
    	DialPlot dialplot = new DialPlot();
    	//设置数据集合
    	dialplot.setDataset(dataset);
        //开始设置显示框架结构
        StandardDialFrame standarddialframe= new StandardDialFrame();
        standarddialframe.setBackgroundPaint(Color.lightGray);
        standarddialframe.setForegroundPaint(Color.darkGray);//圆边的颜色
        dialplot.setDialFrame(standarddialframe);
         //结束设置显示框架结构           
        GradientPaint gradientpaint = new GradientPaint(new Point(), new Color(255, 255, 255), new Point(), new Color(170, 170, 220));
        DialBackground dialbackground = new DialBackground(gradientpaint);
        dialbackground.setGradientPaintTransformer(new StandardGradientPaintTransformer(GradientPaintTransformType.VERTICAL));
        dialplot.setBackground(dialbackground);
        //设置显示在表盘中央位置的信息
        DialTextAnnotation dialtextannotation = new DialTextAnnotation("温度");
        dialtextannotation.setFont(new Font("Dialog", 1, 14));
        dialtextannotation.setRadius(0.69999999999999996D);//字体距离圆心的距离
        dialplot.addLayer(dialtextannotation);
        DialValueIndicator dialvalueindicator = new DialValueIndicator(0);
        dialplot.addLayer(dialvalueindicator);
        //根据表盘的直径大小(0.88),设置总刻度范围
        StandardDialScale standarddialscale = new StandardDialScale(-40D,60D,-120.0D,-300.0D,10D,9);//???
        standarddialscale.setTickRadius(0.88D);
        standarddialscale.setTickLabelOffset(0.14999999999999999D);//显示数字 距离圆边的距离
        standarddialscale.setTickLabelFont(new Font("Dialog", 0, 14));
        //主意是 dialplot.addScale()不是dialplot.addLayer()
        dialplot.addScale(0, standarddialscale);
        //设置刻度范围(红色)
        StandardDialRange standarddialrange = new StandardDialRange(40D, 60D, Color.red);
        standarddialrange.setInnerRadius(0.52000000000000002D);
        standarddialrange.setOuterRadius(0.55000000000000004D);
        dialplot.addLayer(standarddialrange);
        //设置刻度范围(橘黄色)           
        StandardDialRange standarddialrange1 = new StandardDialRange(10D, 40D, Color.orange);
        standarddialrange1.setInnerRadius(0.52000000000000002D);// 半径返回两条线  
        standarddialrange1.setOuterRadius(0.55000000000000004D);
        dialplot.addLayer(standarddialrange1);
        //设置刻度范围(绿色)               
        StandardDialRange standarddialrange2 = new StandardDialRange(-40D, 10D, Color.green);
        standarddialrange2.setInnerRadius(0.52000000000000002D);
        standarddialrange2.setOuterRadius(0.55000000000000004D);
        dialplot.addLayer(standarddialrange2);
        //设置指针
        org.jfree.chart.plot.dial.DialPointer.Pointer pointer = new org.jfree.chart.plot.dial.DialPointer.Pointer();
        dialplot.addLayer(pointer);
        //实例化DialCap
        DialCap dialcap = new DialCap();
        dialcap.setRadius(0.1D);//指针中心圆的大小
        dialplot.setCap(dialcap);
        //生成chart对象
        JFreeChart jfreechart = new JFreeChart(dialplot);
        
        //设置标题
        jfreechart.setTitle("设备取水温度采样");
        
        DashBords testBords = new DashBords();
        testBords.saveAsFile(jfreechart, "d:\\jfreechart\\dashbord_"+Math.random()*20+".png", 400, 400);
    
    }
    
    
    /**保存为文件*/   
    public void saveAsFile(JFreeChart chart, String outputPath, int width, int height) {   
        FileOutputStream out = null;   
        try {   
            File outFile = new File(outputPath);   
            if (!outFile.getParentFile().exists()) {   
                outFile.getParentFile().mkdirs();   
            }   
            out = new FileOutputStream(outputPath);   
            // 保存为PNG   
            ChartUtilities.writeChartAsPNG(out, chart, width, height);   
            // 保存为JPEG   
            // ChartUtilities.writeChartAsJPEG(out, chart, width, height);   
            out.flush();   
        } catch (FileNotFoundException e) {   
            e.printStackTrace();   
        } catch (IOException e) {   
            e.printStackTrace();   
        } finally {   
            if (out != null) {   
                try {   
                    out.close();   
                } catch (IOException e) {   
                       
                }   
            }   
        }   
    }  
}

 

分享到:
评论

相关推荐

    JfreeChartDemo 仪表盘

    **JFreeChartDemo 仪表盘** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图以及仪表盘等。在给定的“JfreeChartDemo 仪表盘”中,我们将深入探讨如何使用 ...

    利用jfreechart制作仪表盘

    JFreeChart是一个强大的Java库,专为创建高质量的图表而设计,其中包括仪表盘图表。仪表盘图表是一种有效的工具,可以清晰地展示各种指标,如性能、进度或健康状况,常用于管理和监控系统。本篇文章将深入探讨如何...

    JfreeChart 仪表盘2

    通过使用JfreeChart创建仪表盘,开发者可以实现动态更新、交互式操作,以及自定义图表布局等功能。 仪表盘的核心组件包括: 1. **刻度(Scales)**:刻度是仪表盘上的标记,用于指示测量值的范围和间隔。...

    利用jfreechart制作动态仪表盘

    JFreeChart是一个强大的Java图表库,它...总的来说,JFreeChart提供了一套完整的工具,使得开发者能够灵活地创建自定义的、富有表现力的动态仪表盘,无论是在Web应用还是桌面应用中,都能实现丰富的数据可视化效果。

    根据 JFreeChart 生成仪表盘

    根据 JFreeChart 生成仪表盘, public static void main(String[] args) { System.out.println(new HC().getHC("TEST","123")); }

    JFreeChart Java仪表盘制作,源码,类包,效果图整体打包

    源码中可能包含关键类和方法,例如`Dial.java`,这可能是实现仪表盘图表的核心类,包含了设置指针、刻度、背景等元素的方法。 **JFreeChart仪表盘** 在Java Web项目中,仪表盘是一种常见的数据展示方式,用于快速...

    用Jfreechart实现的硬盘数据转换器

    一个用Jfreechart实现的硬盘数据转换器,读入硬盘数据,转换为三种图像。

    java利用JFreeChart实现各类数据统计图柱形图饼图折线图.pdf

    Java 利用 JFreeChart 实现数据统计图 在数据挖掘中,数据分析的结果需要直观地展现给用户,这就需要使用数据统计图。Java 中可以使用 JFreeChart 库来实现各种数据统计图,如柱形图、饼图、折线图等。下面将详细...

    java中关于JFreeChart实现实时曲线图

    在Java编程语言中,利用JFreeChart库实现实时曲线图是一种常见的数据可视化技术,尤其适用于需要实时监控或展示数据变化的应用场景。JFreeChart是一个开源的Java图表库,提供了丰富的图表类型和自定义选项,使得...

    jfreechart 仪表应用详解

    本文将深入探讨如何利用`JFreeChart`创建仪表盘(Dial Chart),并通过示例代码详细解释其配置方法。 #### 二、JFreeChart简介 `JFreeChart`是一款完全由Java编写的开源图表绘制类库,它能够生成各种类型的图表。...

    Dialplot.zip_dialplot java_site:www.pudn.com_仪表盘

    在压缩包文件"Dialplot.java"中,可能包含了实现以上步骤的代码示例,通过阅读和理解这些代码,开发者可以学习如何使用JFreeChart库来创建自定义的仪表盘图表。实际应用中,可以根据需求调整刻度、指针样式、颜色、...

    java利用JFreeChart实现各种数据统计图(柱形图_饼图_折线图).pdf

    本文将详细介绍如何使用Java和JFreeChart库来实现这些统计图表,并提供相关示例代码。 首先,要使用JFreeChart库生成统计图,第一步是数据的组织。数据需要被整理成二维表格的形式,这是生成统计图的基础。数据可以...

    Spring+JFreeChart 自动生成统计图

    集成JFreeChart到Spring应用中,首先需要引入JFreeChart的库文件,这通常通过Maven或Gradle的依赖管理来实现。在“lib”这个文件夹中,可能包含了JFreeChart的jar包,这是运行相关代码所必需的。 接下来,我们需要...

    jfreechart实现柱状图排序

    根据提供的信息,我们可以总结出以下关于使用 JFreeChart 实现柱状图排序的相关知识点: ### 一、背景介绍 在日常的数据分析与展示工作中,柱状图是非常常见的一种图表类型,它能直观地显示不同类别之间的数值差异...

    Java使用SWT JFreeChart控件实现的小游戏.zip

    Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...

    用jfreechart实现的动态曲线

    用jfreechart实现动态曲线,有系统产生随机数,然后画出曲线,并能实时显示曲线

    dwr 与 jfreechart 实现无刷新报表功能

    DWR与JFreeChart的结合则可以解决这个问题,它们可以实现在用户界面上无刷新地动态更新图表,提高交互性。 首先,我们需要了解DWR的基本原理。DWR在服务器端设置一个引擎,这个引擎可以映射到特定的Java方法,当...

    利用JFreeChart 实现柱状图,饼图,时序图,折线图等

    下面我们将详细介绍如何利用JFreeChart实现这些图表。 1. **柱状图(Bar Chart)** 柱状图是表示分类数据的一种方式,每个类别由一个垂直的矩形表示,矩形的高度表示该类别的数量或比例。在JFreeChart中,你可以...

    用JFreeChart写的雷达图实例

    本文将深入探讨如何利用JFreeChart库来实现一个雷达图实例,这有助于数据可视化,特别是在数据分析和报告中。 首先,我们来看`WMPolarPlot.java`,这个文件很可能包含了对极坐标图(Polar Plot)的实现,因为雷达图...

Global site tag (gtag.js) - Google Analytics