Jfreechart

【JFreeChart】JFreeChart简介 JFreeChart是一个开源的java图形报表引擎项目,主要用来创建各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及仪表盘等。它可以生成Swing图形、PNG和JPEG图形以及PDF/EPS/SVG等一些矢量图形。 使用JFreeChart构建图表时需要导入一下两个jar包: 核心类包介绍: JFreeChart主要有... 阅读详情

最近一直在做Jfreechart的问题,今天终于有点进展,可以松一口气了。最主要的原因是数据集的生成没有做好。导致图形的失败。Jfreechart的图形类还是很强大的。这次引用了jfreechart developer guide source code,也请了其他的人帮忙。谢谢大家了。这里把堆积图和混合图的生成方法贴出来。供以后参考。


 public CategoryDataset createStackedBarDateSet(String strTtimePointZone,
   String[][] arr) {
  DefaultCategoryDataset dataset = new DefaultCategoryDataset();// 定义一个柱图的数据集合。
  int rowindex = arr[0].length;
  int columindex = arr.length;
  String ty = "";
  String tm = "";
  String[] rowKeys = new String[rowindex-1];//定义每个柱子,指标名称
  for (int i = 1; i < rowindex; i++) {
   rowKeys[i - 1] = arr[0][i];//指标名称
  }

  String[] columnKeys = new String[columindex-3];//定义统计时间
  double[][] data = new double[rowindex-1][columindex-3];
  for (int j = 3; j < columindex; j++) {
   for (int i = 1; i < rowindex; i++) {
    ty = arr[j][0].substring(2, 4);
    tm = arr[j][0].substring(4, 6);
    columnKeys[j-3] = ty + "/" + tm;//指标时间
    if (!arr[j][i].equals("--")) {
     data[i - 1][j-3] = Double.parseDouble(arr[j][i]);
    }
   }
  } 
  for(int n=0;n<data.length;n++){
   for(int m = 0;m<data[0].length;m++){
    dataset.addValue(data[n][m], rowKeys[n], columnKeys[m]);
   }
  }
  return dataset;
 }

图形生成方法:


 public String getStackedBarChart(HttpSession session,
   String strTtimePointZone, String[][] arr, PrintWriter pw) {
  // 1:得到 CategoryDataset
  // 2:JFreeChart对象
  CategoryDataset dataset = this.createStackedBarDateSet(
    strTtimePointZone, arr);// 数据集
  JFreeChart chart = ChartFactory.createStackedBarChart("堆积柱图", // 图表标题
    "时间", // x-axis label
    "值", // y-axis label
    dataset, // 数据集
    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
    true, // 是否显示图例(对于简单的柱状图必须是false)
    false, // 是否生成工具
    false // 是否生成URL链接
    );
  // 设置JFreeChart的显示属性,对图形外部部分进行调整
  chart.setBackgroundPaint(Color.white);// 设置图背景色
  TextTitle title = new TextTitle("指标堆积图", font);// 设置字体大小,形状
  chart.setTitle(title);
  // 图例字体清晰
  chart.setTextAntiAlias(true);
  CategoryPlot plot = chart.getCategoryPlot();//画布属性
  plot.setNoDataMessage("NO Data!");
  plot.setRangeGridlinesVisible(true);// 设置横虚线可见
  plot.setRangeGridlinePaint(Color.gray);// 虚线色彩
  plot.setBackgroundPaint(Color.WHITE);// 设置网格背景色
  plot.setDomainGridlinePaint(Color.DARK_GRAY);// 设置网格Y(Domain轴)颜色
  plot.setRangeGridlinePaint(Color.DARK_GRAY);// 设置网格X横线颜色
  plot.setRangeGridlineStroke(new BasicStroke(0.2f)); // 数据X轴网格线条笔触
  plot.setDomainGridlineStroke(new BasicStroke(0.1f)); // 数据Y轴网格线条笔触
  plot.setAxisOffset(new RectangleInsets(1.0, 1.0, 1.0, 1.0));// 设置曲线图与xy轴的距离
  plot.setDomainCrosshairVisible(true);
  plot.setRangeCrosshairVisible(true);
  
  NumberAxis vn = (NumberAxis) plot.getRangeAxis();// 数据轴精度
  vn.setAutoRangeIncludesZero(true);// 设置数据轴坐标从0开始
  vn.setLabelFont(fontAxis);// 轴标题
  
  DecimalFormat df = new DecimalFormat("");// 数据显示格式是百分比
  vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式
  // DomainAxis (区域轴,相当于 x 轴), RangeAxis (范围轴,相当于 y 轴)
  CategoryAxis domainAxis = plot.getDomainAxis();
  domainAxis.setLabelFont(fontAxis);// 轴标题
  domainAxis.setTickLabelFont(fontAxis);// 轴数值
  domainAxis.setMaximumCategoryLabelWidthRatio(0.6f);// 横轴上的 Lable 是否完整显示
//  domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 7.0));
  domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90);//X轴显示位置为90度
  plot.setDomainAxis(domainAxis);
  
  ValueAxis rangeAxis = plot.getRangeAxis();// y轴设置
  rangeAxis.setLabelFont(fontText);
  rangeAxis.setTickLabelFont(fontText);
  rangeAxis.setUpperMargin(0.15);// 设置最高的一个 Item 与图片顶端的距离
  rangeAxis.setLowerMargin(0.15);// 设置最低的一个 Item 与图片底端的距离
  plot.setRangeAxis(rangeAxis);

  // Renderer 对象是图形的绘制单元
//  StackedBarRenderer renderer = (StackedBarRenderer) plot.getRenderer();
  StackedBarRenderer3D renderer = new StackedBarRenderer3D();//just test
  renderer.setItemLabelFont(fontText);
  renderer.setMaximumBarWidth(0.05);// 设置柱子宽度
  renderer.setMinimumBarLength(0.1);// 设置柱子高度
  renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱的边框颜色
  renderer.setDrawBarOutline(true);// 设置柱的边框可见
        renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());  
  renderer.setItemMargin(0.05);// 设置每个地区所包含的平行柱的之间距离
  plot.setRenderer(renderer);
  
  // 取得统计图表的第一个图例
  LegendTitle legend = chart.getLegend(0);
   //设置图例的字体
  legend.setItemFont(fontText);

  ChartRenderingInfo info = new ChartRenderingInfo(
    new StandardEntityCollection());
  try {
   fileName = ServletUtilities.saveChartAsPNG(chart, 720, 540, info,
     session);// 生成图片,放到服务器的临时文件夹下
   // Write the image map to the PrintWriter
   ChartUtilities.writeImageMap(pw, fileName, info, false);
  } catch (IOException e) {
   e.printStackTrace();
  }
  pw.flush();
  return fileName;
 }

 
 public String getBarChart(HttpSession session, String strTimePointZone,
   String[][] arr, PrintWriter pw) {
  
  CategoryDataset categorydataset1 = this.createBarDataSet(strTimePointZone, arr);//柱线数据集
  CategoryDataset categorydataset = this.createBarDataSet(strTimePointZone, arr);//折线数据集(相同方法)
  
  JFreeChart chart = ChartFactory.createBarChart("指标混合图",
    "时间",
    "值",
    categorydataset1,
    PlotOrientation.VERTICAL,
    true,
    false,
    false);
  chart.setBackgroundPaint(Color.white);// 设置曲线图背景色
  TextTitle title = new TextTitle("指标混合图", font);// 设置字体大小,形状
  chart.setTitle(title);
  chart.setTextAntiAlias(true);
  
  CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
  categoryplot.setNoDataMessage("NO Data!");
  categoryplot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
  //映射折线数据集
  categoryplot.setDataset(1, categorydataset);
  categoryplot.mapDatasetToRangeAxis(1, 1);
  categoryplot.setBackgroundPaint(Color.white);
  categoryplot.setRangeGridlinesVisible(true);// 设置横虚线可见
  categoryplot.setRangeGridlinePaint(Color.gray);// 虚线色彩
  categoryplot.setDomainGridlinePaint(Color.DARK_GRAY);// 设置网格Y(Domain轴)颜色
  categoryplot.setRangeGridlinePaint(Color.DARK_GRAY);// 设置网格X横线颜色
  categoryplot.setRangeGridlineStroke(new BasicStroke(0.2f)); // 数据X轴网格线条笔触
  categoryplot.setDomainGridlineStroke(new BasicStroke(0.1f)); // 数据Y轴网格线条笔触
  categoryplot.setAxisOffset(new RectangleInsets(1.0, 1.0, 1.0, 1.0));// 设置图与xy轴的距离
  categoryplot.setDomainCrosshairVisible(true);
  categoryplot.setRangeCrosshairVisible(true);
  
  CategoryAxis categoryaxis = categoryplot.getDomainAxis();//X轴
  categoryaxis.setLabelFont(fontText);
  categoryaxis.setTickLabelFont(fontText);
//  categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 7.0));
  categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90);//X轴显示位置为90度
  
  NumberAxis left = new NumberAxis("值");//Y轴
  NumberAxis numberaxis = new NumberAxis("比率");//Y轴
  numberaxis.setLabelFont(fontText);
  left.setLabelFont(fontText);
  categoryplot.setRangeAxis(0, left);//左侧Y轴
  categoryplot.setRangeAxis(1, numberaxis);//右侧Y轴
  
  BarRenderer3D renderer = new BarRenderer3D();
  renderer.setBaseOutlinePaint(Color.BLACK);
//  设置每个地区所包含的平行柱之间的距离renderer.setItemMargin(0.1);
  renderer.setMaximumBarWidth(0.05);// 设置柱子宽度
  renderer.setMinimumBarLength(0.1);// 设置柱子高度
  renderer.setBaseOutlinePaint(Color.BLACK);// 设置柱的边框颜色
  renderer.setDrawBarOutline(true);// 设置柱的边框可见
        renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator()); 
  renderer.setItemMargin(0.05);
  
  LineAndShapeRenderer lineandshaperenderer = new LineAndShapeRenderer();//折线对象
  lineandshaperenderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
  lineandshaperenderer.setSeriesPaint(0, new Color(0, 0, 255));

  categoryplot.setRenderer(0,renderer);
  categoryplot.setRenderer(1, lineandshaperenderer);
  categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
  //图例各个属性
  LegendTitle legendtitle = chart.getLegend(0);
  legendtitle.setMargin(new RectangleInsets(2D, 2D, 2D, 2D));
  legendtitle.setBorder(new BlockBorder());
  legendtitle.setItemFont(fontText);
  ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
  try {
   fileName = ServletUtilities.saveChartAsPNG(chart, 720, 540, info,
     session);// 生成图片
   ChartUtilities.writeImageMap(pw, fileName, info, false);
  } catch (IOException e) {
   e.printStackTrace();
  }
  pw.flush();
  return fileName;// 返回生成图片的文件名
 }

贴图:

终于搞定了。终于搞定了。

谢谢参观!

【JFreeChart】JFreeChart—输出柱形图 如何将数据以柱状图的形式显示出来? 实现过程: 1、获取数据; 2、根据工厂模式生成图形对象,通过获取该图形对象,来进一步获得该图形对象内部的小对象,并对它们的字体等进行设置; 3、将图形放到面板中; 4、构建一个方法,将放置了图形的面板返回出去,当需要使用该面板时只需调用该方法即可(封装); 5、创建一个窗体,将面板放到该窗体中进行显示; 柱形图比饼状图复杂,生成的图标数据需要有两... 阅读详情

相关推荐

JFreeChart初始和下载

JFreeChart初始和下载

私信可回答各种问题~ 2154

JFreeChart最佳实践:折线图

在这个公司,用到了太多的JfreeChart,今天就对折线图作一个总结,希望对大家有点帮助,我这里直接是与业务逻辑相关的,业务需要的数据加载到数据集等,不过我会作一些注释的,呵,之前有网友建议写注释。折线图,大可分为两种,(1)X轴值类型为String的。2)常用的是X轴值是日期的,并且,有时需要满足这样的需求:1、时间要连续。2、时间可以设置固定的跨度,比如,2009-02-01,2009-02

jbgtwang的专栏 3238

jfreechart 漂亮的折线图

利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境

jfreeChart 柱状图和折线图结合

import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.geom.Ellipse2D; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io....

iteye_11020的博客 770

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 550

开源onlyoffice编译完整过坑版

onlyoffice 编译过坑完整版;

sHImart 4551

jfreechart折线图x轴间距设置

jfreechart折线图x轴间距设置 将背景颜色设为白色,对max/10的整数倍的刻度对应下标设为黑色,其他仍设置为白色,达到间隔显示效果,但存在一定问题,x轴范围大时显示模糊,范围小时清晰度尚可,而且改变字体也不能改善。可以尝试换成时序图的方式来绘图,具体的请看我博客的其他文章。 public static void setDomainAxis(CategoryAxis domainAxi...

hongdunyang的博客 3889

silvaco——GaN HEMT探索

上图为输出特性曲线 ,分别是在栅压为1v、3v、5v的情况下,可以看出在1v时器件处于截止状态,只有非常小近似于0的电流通过,随着栅压逐渐增大,沟道开启,产生漏极电流。上图为栅极漏电流曲线和转移特性曲线以及其提取的参数,可以看到阈值电压为=1.30249V,当栅压为0v时,Id=8.01032e-006,当栅压为5V时,Ig=3.11627e-006。albrct.n,低场迁移率模型,bn.albrct,an.albrct是albrct模型中的参数,可以由用户自己设定。lat.temp,晶格自热模型;

weixin_61913839的博客 7616

JFreeChart使用总结(四)

JFreeChart使用总结 1. JFreeChart简介 JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。JFreeChart是开源项目,可以方便的从其官方网站上获得其源

alvin的博客 1万+

Zabbix Trigger actions访问出现500

本篇博客详细介绍了Zabbix访问'Trigger actions'出现的错误状况,访问界面出现500,并提供了解决方案。

格子的博客 561

有限元分析必看:如何用ANSYS检查关键区域的网格质量(附操作截图)

本文聚焦有限元分析中决定仿真精度的关键环节,详细讲解了如何利用ANSYS Workbench对关键区域进行网格质量检查与优化。文章提供了从思维转变、实战操作到指标解读的完整流程,强调通过命名选择、Worksheet过滤器等工具实现定向检查,并给出了针对结构分析的关键区域网格质量阈值建议,帮助工程师提升仿真结果的可靠性与效率。

weixin_29200741的博客 464

1.JFreeChart安装

本文链接:https://blog.youkuaiyun.com/cnds123321/article/details/89600328 JFreeChart教程目录链接:https://blog.youkuaiyun.com/cnds123321/article/details/89600379 1.JFreeChart安装 要安装JFreeChart,首先需要在系统上安装Java。 一般要用jfreechar...

二木成林 7522

Flatten 层的深度理解与运用

Flatten 层的深度理解与运用

你要拥有一个你喜欢并且热爱的人生 7029

JFreeChart

JfreeChart是用Java开发的开源库,它可以在基于Java的应用程序可用于创建各种各样的图表。通过使用JFreeChart,可以创建2D和3D图表,如饼图,条形图,折线图,XY图和3D图表所有常用的主要类型。

qq_26817225的博客 1527

深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总

本文简要介绍深度学习的前向传播与反向传播,以及前馈神经网络与反馈神经网络。

haopinglianlian的博客 3042

R语言实战应用精讲50篇(二)-多重线性回归系列之稳健回归

前言 线性回归的参数估计主要采用的是最小二乘法(又称最小平方法),该法是将使观测值与模型预测值之差的平方达到最小的值作为参数估计值。如果数据存在异常点或者异方差,最小二乘法估计会存在偏差,常用的处理策略就是改用稳健回归(Robust Regression)。 稳健回归就是采用更为稳健的参数估计方法来拟合模型,所谓稳健就是数据的波动对参数估计影响不大,比如不受异常值影响,或删除某一观测后对结果影响不大。稳健估计的方法有很多,主要有这么几类:最小绝对值回归(也称最小一乘法回归,lAV),最小中位数二乘法(L

wenyusuran的专栏 3160

JfreeChart 散点图

用JfreeChart画散点图  首先,看画图的API,参数有: ChartFactory.createScatterPlot(),其中,有一个xydataset,那么,我们先要知道这个xydataset是什么结构的,再看所需xydataset,散点图,也就是单独画出点,也就是一个二维数据了,x ,y坐标嘛! 那么,先做好准备工作,第一步,拿数据,这就不用啰嗦了,就是得到一个List也好,S

Devil不加V 4206

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

JFreeChart的总结

因为之前在工作中用到了Echarts这个非常简单易用的图表插件,所以这段时间对图表的相关知识很感兴趣。回想到自己的毕业设计中也用到了图表的显示,当时使用的是JFreeChart,现在看看当时做的真的是不堪入目,虽然功能完成了,但是生成的图表实在是不忍直视。

Earl_yuan的专栏 3372

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jfreechart java配置_JFREECHART环境安装配置

[环境:操作系统Centos 7 64-bit3台节点ip 主机名 10.91.99.101 master10.91.99.102 slave110.91.99.103 slave210.91.99.104 slave3 三个节点上已经布署好had本次安装环境如下:JDK:j2sdk-1_4_2_13文件名:j2sdk-1_4_2_13-windows-i586-p.ex...

weixin_32737183的博客 799

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JFreeChart在webwork中的应用

前言:webwork是当今流行的J2EE几大架构之一,在实际的项目中,我们往往要在webwork的输出流中调用一个图表chart,代替直接用response.out输出。那么我们应该怎么样去实现呢?本文将详细阐述JFreeChart在webwork中的应用。本文调试环境为windows2000+tomcat5.0。共分三个部分:1,JFreeChart 简介 2,webwork简介及webwork

键者天行 6539

jFreeChart初探

//**************************************

小李专栏 4419

JFreeChart 的几则应用之jsp篇。

配置一个serverlet然后调用jFreeChart的一个类。之间需要的jar包包括: jfreechart-1.0.5.jarjcommon-1.0.9.jargnujaxp.jar这些开源jar包和JDOC在jfree的主站就能下载得到:http://www.jfree.org/index.php但是,这个的帮助文档却是收费的所以一些相关的论坛和比较好的实例网站需要提供两个:ht

Jimmybly Lee 的专栏 1684

JFreeChart 实例

一、简介 WW 的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。但是这两者之间有着天壤之别,虽然对于数据获取、业务处理等方面基本类似,但是最大的差别在于用户界面。为了能在web浏览器上显示要求用户界面使用 HTML以及图片的方式来展现数据,而传统的一些利用操作系统本身的控件来开发的用户界面无法适应琳琅满目的客

天涯石头的专栏 1073

关于JFreeChart的standardlegend类找不到的解决办法

昨天搞了一天,没解决JFREECHART中文的问题,大家说的都是LINUX的,一般说是字体不支持我找了一些高手收集的中文API里面有几个设置字体的类如下:TextTitle类:void setFont(Font font)     标题字体StandardLegend(Legend)类:void setTitleFont(Font font)    图示标题字体Axis类:

For_suzhen的专栏 3750

java jfreechart 柱状图,JFreeChart -- 柱状图

不知道 JFreeChart 项目组出于什么目的,他们提供的 sample code 里面的例子给人感觉就是乱,同样的结果可以用不同方式、使用不的方法。再加上网上流传的 JFreeChart 旧的使用方法,使刚接触 JFreeChart 的朋友进到 JFreeChart 中不花一些时间很难理出一个头绪来。前面已经介绍过 JFreeChart 生成饼状图,可能由于上面提到的原因,有些朋友来信和留言希...

weixin_42306938的博客 2088
上一篇: JFreeChart从一个给定的业务数据创建条形图。
下一篇: eclipse 下创建maven项目
Y_JY
博客等级 码龄15年 7粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值