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 仪表盘** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括柱状图、饼图、线图、散点图以及仪表盘等。在给定的“JfreeChartDemo 仪表盘”中,我们将深入探讨如何使用 ...
JFreeChart是一个强大的Java库,专为创建高质量的图表而设计,其中包括仪表盘图表。仪表盘图表是一种有效的工具,可以清晰地展示各种指标,如性能、进度或健康状况,常用于管理和监控系统。本篇文章将深入探讨如何...
通过使用JfreeChart创建仪表盘,开发者可以实现动态更新、交互式操作,以及自定义图表布局等功能。 仪表盘的核心组件包括: 1. **刻度(Scales)**:刻度是仪表盘上的标记,用于指示测量值的范围和间隔。...
JFreeChart是一个强大的Java图表库,它...总的来说,JFreeChart提供了一套完整的工具,使得开发者能够灵活地创建自定义的、富有表现力的动态仪表盘,无论是在Web应用还是桌面应用中,都能实现丰富的数据可视化效果。
根据 JFreeChart 生成仪表盘, public static void main(String[] args) { System.out.println(new HC().getHC("TEST","123")); }
源码中可能包含关键类和方法,例如`Dial.java`,这可能是实现仪表盘图表的核心类,包含了设置指针、刻度、背景等元素的方法。 **JFreeChart仪表盘** 在Java Web项目中,仪表盘是一种常见的数据展示方式,用于快速...
一个用Jfreechart实现的硬盘数据转换器,读入硬盘数据,转换为三种图像。
Java 利用 JFreeChart 实现数据统计图 在数据挖掘中,数据分析的结果需要直观地展现给用户,这就需要使用数据统计图。Java 中可以使用 JFreeChart 库来实现各种数据统计图,如柱形图、饼图、折线图等。下面将详细...
在Java编程语言中,利用JFreeChart库实现实时曲线图是一种常见的数据可视化技术,尤其适用于需要实时监控或展示数据变化的应用场景。JFreeChart是一个开源的Java图表库,提供了丰富的图表类型和自定义选项,使得...
本文将深入探讨如何利用`JFreeChart`创建仪表盘(Dial Chart),并通过示例代码详细解释其配置方法。 #### 二、JFreeChart简介 `JFreeChart`是一款完全由Java编写的开源图表绘制类库,它能够生成各种类型的图表。...
在压缩包文件"Dialplot.java"中,可能包含了实现以上步骤的代码示例,通过阅读和理解这些代码,开发者可以学习如何使用JFreeChart库来创建自定义的仪表盘图表。实际应用中,可以根据需求调整刻度、指针样式、颜色、...
本文将详细介绍如何使用Java和JFreeChart库来实现这些统计图表,并提供相关示例代码。 首先,要使用JFreeChart库生成统计图,第一步是数据的组织。数据需要被整理成二维表格的形式,这是生成统计图的基础。数据可以...
集成JFreeChart到Spring应用中,首先需要引入JFreeChart的库文件,这通常通过Maven或Gradle的依赖管理来实现。在“lib”这个文件夹中,可能包含了JFreeChart的jar包,这是运行相关代码所必需的。 接下来,我们需要...
根据提供的信息,我们可以总结出以下关于使用 JFreeChart 实现柱状图排序的相关知识点: ### 一、背景介绍 在日常的数据分析与展示工作中,柱状图是非常常见的一种图表类型,它能直观地显示不同类别之间的数值差异...
Java使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的小游戏.zipJava使用SWT JFreeChart控件实现的...
用jfreechart实现动态曲线,有系统产生随机数,然后画出曲线,并能实时显示曲线
DWR与JFreeChart的结合则可以解决这个问题,它们可以实现在用户界面上无刷新地动态更新图表,提高交互性。 首先,我们需要了解DWR的基本原理。DWR在服务器端设置一个引擎,这个引擎可以映射到特定的Java方法,当...
下面我们将详细介绍如何利用JFreeChart实现这些图表。 1. **柱状图(Bar Chart)** 柱状图是表示分类数据的一种方式,每个类别由一个垂直的矩形表示,矩形的高度表示该类别的数量或比例。在JFreeChart中,你可以...
本文将深入探讨如何利用JFreeChart库来实现一个雷达图实例,这有助于数据可视化,特别是在数据分析和报告中。 首先,我们来看`WMPolarPlot.java`,这个文件很可能包含了对极坐标图(Polar Plot)的实现,因为雷达图...