1 最终效果图

2 代码

package com.cpcnet.util;import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.servlet.http.HttpSession;import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Day;
import org.jfree.data.time.Minute;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;/**
* @author caiwb 曲线图的绘制
*/
public class JFreeChartUtil
{/*** 返回生成图片的文件名* @param session* @param pw* @return 生成图片的文件名* @throws ParseException */public JFreeChart getLineXYChart( XYDataset dataset,String downOrUpStream,String timeStr) throws ParseException{//初始化chart的x值String xName = this.getXName(timeStr);String fileName = null;//建立JFreeChartJFreeChart chart = ChartFactory.createTimeSeriesChart(downOrUpStream, // titlexName, // x-axis label"", // y-axis labeldataset, // datatrue, // create legend?true, // generate tooltips?false // generate URLs?);
//        //设置JFreeChart的显示属性,对图形外部部分进行调整
//        chart.setBackgroundPaint(Color.gray);//设置曲线图背景色//设置字体大小,形状Font font = new Font("宋体", Font.BOLD, 16);TextTitle title = new TextTitle(downOrUpStream, font);chart.setTitle(title);XYPlot plot = (XYPlot) chart.getPlot();//获取图形的画布plot.setBackgroundPaint(Color.white);//设置网格背景色plot.setDomainGridlinePaint(Color.gray);//设置网格竖线(Domain轴)颜色plot.setRangeGridlinePaint(Color.gray);//设置网格横线颜色plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));//设置曲线图与xy轴的距离plot.setDomainCrosshairVisible(true);plot.setRangeCrosshairVisible(true);plot.setNoDataMessage("no data");XYItemRenderer r = plot.getRenderer();//设置整个chart背景颜色Color c = new Color(230,230,230);chart.setBackgroundPaint(c);//设置ValueAxis类ValueAxis valueAxis = plot.getDomainAxis();valueAxis.setAutoTickUnitSelection(true);//      设置 x轴最大值和最小值this.setXValue(plot, timeStr);
//        dateAxis.setRange(this.changeStingToDate("2015-02-01 00:00:00"),this.changeStingToDate("2015-02-27 23:59:59")); ////设置Y轴NumberAxis numAxis = (NumberAxis) plot.getRangeAxis();NumberFormat numFormater = NumberFormat.getNumberInstance();numFormater.setMinimumFractionDigits(4);numAxis.setNumberFormatOverride(numFormater);//设置X轴(日期轴)DateAxis axis = (DateAxis) plot.getDomainAxis();axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd"));ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());return chart;//返回生成图片的文件名}/** 设置x轴最大值和最小值* */public void setXValue( XYPlot plot,String timeStr){DateAxis dateAxis = (DateAxis)plot.getDomainAxis();String firstDay = LastMonthUtil.getLastMonthFirstDay(timeStr);String lastDay = LastMonthUtil.getLastMonthLastDay(timeStr);try {dateAxis.setRange(this.changeStingToDate(firstDay),this.changeStingToDate(lastDay));} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} //}/** 设置x轴名称* */public String getXName(String timeStr ){int year = Integer.parseInt(timeStr.split(" ")[0].split("-")[0]);int month = Integer.parseInt(timeStr.split(" ")[0].split("-")[1]);String monthStr;switch(month){case 1: monthStr = "Jan";break;case 2: monthStr = "Feb";break;case 3: monthStr = "Mar";break;case 4: monthStr = "Apr";break;case 5: monthStr = "May";break;case 6: monthStr = "Jun";break;case 7: monthStr = "Jul";break;case 8: monthStr = "Aug";break;case 9: monthStr = "Sep";break;case 10: monthStr = "Oct";break;case 11: monthStr = "Nov";break;case 12: monthStr = "Dec";break;default :  monthStr = "error";break;}String name = monthStr + " " + year;return name;}/*** 建立生成图形所需的数据集* @return 返回数据集* @throws ParseException */private XYDataset createDateSet() throws ParseException{TimeSeriesCollection dataset = new TimeSeriesCollection();//时间曲线数据集合TimeSeries s1 = new TimeSeries("quxian1", Minute.class);//创建时间数据源,每一个//TimeSeries在图上是一条曲线TimeSeries s2 = new TimeSeries("quxian2", Minute.class);//创建时间数据源,每一个//TimeSeries在图上是一条曲线//s1.add(new Day(day,month,year),value),添加数据点信息String time1 = "2015-02-01 00:00:00";String time2 = "2015-02-09 22:16:27";String time3 = "2015-02-09 22:21:27";String time4 = "2015-02-10 22:26:27";String time5 = "2015-02-10 22:31:27";String time6 = "2015-02-09 22:36:27";String time7 = "2015-02-10 22:41:27";String time8 = "2015-02-09 22:46:27";String time9 = "2015-02-09 22:51:27";String time10 = "2015-02-27 23:16:27";s1.add(new Minute(this.changeStingToDate(time2)),126.51);s1.add(new Minute(this.changeStingToDate(time3)),153.51);s1.add(new Minute(this.changeStingToDate(time4)),158); s1.add(new Minute(this.changeStingToDate(time5)),133.51);s1.add(new Minute(this.changeStingToDate(time6)),123.51);s1.add(new Minute(this.changeStingToDate(time7)),136);s1.add(new Minute(this.changeStingToDate(time8)),173.51);s1.add(new Minute(this.changeStingToDate(time9)),193.51); s1.add(new Minute(this.changeStingToDate(time10)),183.51);s2.add(new Minute(this.changeStingToDate(time2)),226.51);s2.add(new Minute(this.changeStingToDate(time3)),253.51);s2.add(new Minute(this.changeStingToDate(time4)),235); s2.add(new Minute(this.changeStingToDate(time5)),233.51);s2.add(new Minute(this.changeStingToDate(time6)),223.51);s2.add(new Minute(this.changeStingToDate(time7)),256);s2.add(new Minute(this.changeStingToDate(time8)),273.51);s2.add(new Minute(this.changeStingToDate(time9)),293.51); s2.add(new Minute(this.changeStingToDate(time10)),283.51);dataset.addSeries(s1);dataset.addSeries(s2);dataset.setDomainIsPointsInTime(true);return dataset;}public void saveImage(JFreeChart chart,String fileName){String imageName = "d:/chartTest/XYLineChart.png";try {   //年的用600*400;月的用800*400,用PNG生生成的图片比较清楚   ChartUtilities.saveChartAsPNG(new File(imageName), chart, 640, 360);   } catch (IOException exz) {   System.out.print("....Cant’t Create image File");   }  }public static void main(String args[]) throws ParseException{JFreeChartUtil jFreeChartUtil = new JFreeChartUtil();XYDataset dataset = jFreeChartUtil.createDateSet();//建立数据集JFreeChart chart = jFreeChartUtil.getLineXYChart(dataset,"Traffic Report - Up Stream","2015-02-09 22:31:27");//增加子标题String title[] = new String[]{"DC MAX:85kb/s","Partition 1 MAX:1332kb/s AVG:10kb/s","Partition 2 MAX:0kb/s"};jFreeChartUtil.addSubTitle(chart, title);//保存图片jFreeChartUtil.saveImage(chart,"");System.out.println("success");
//
//      jFreeChartUtil.test1();//1 生成dataset//2 初始化chart}/** 增加子标题* */public void addSubTitle(  JFreeChart chart,String title[]){//摄者chart的子标题if(title.length > 0){for(int i = 0 ; i < title.length ; i++){chart.addSubtitle(new TextTitle(title[i]));}}}public Date changeStingToDate(String timeStr) throws ParseException{SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");return  sdf.parse(timeStr);}public void test1() throws ParseException{String time5 = "2015-05-09 22:31:27";
//    Date test =  this.changeStingToDate(time5);
//     System.out.println("test = " + test);
//     System.out.println("date = " + new Date());JFreeChartUtil chart = new JFreeChartUtil();String name = chart.getXName(time5);System.out.println("name = " + name);}
}

jfreechart 时序图 ,生成图表相关推荐

  1. PowerDesigner顺序图(时序图)生成协作图(通信图)

    右键即可

  2. JFreeChart(八)之时序图

    转载自  JFreeChart时序图 时序图表显示的数据点在相等的时间间隔序列变化.本章演示了如何从一个给定的业务数据使用JFreeChart,建立时序图. 业务数据 让我们考虑通过使用标准 Java ...

  3. 用代码画时序图!YYDS

    前言 最近通过代码来画时序图,UML用例图,感觉很不错,所以给大家分享一下. 日常开发,一般在设计阶段,我们都需要画时序图.用例图等等.大家平时画图的时候,是用draw.io还是processOn呢? ...

  4. 用代码画时序图!绝了!

    日常开发,一般在设计阶段,我们都需要画时序图.用例图等等.大家平时画图的时候,是用draw.io还是processOn呢?用它们画出的图,其实都很挺好看的.但是呢,今天田螺哥介绍一个款开源的,画图神器 ...

  5. idea中如何生成程序运行的时序图

    IDEA中如何生成程序运行的时序图 程序运行的时序图,可以帮助我们分析程序执行流程和理解一些关键的业务逻辑或者阅读源码. 那么怎么样才能生成时序图尼,经过了一番寻找,发现idea中有个插件可以实现自动 ...

  6. 【数据挖掘】时序模式-白噪音-时序图-ADF检验-一阶差分-acf pacf(2021-11-11

    时序模式 2. 根据课堂上所讲的概念,编写程序产生以下时间序列数据(时间可以简化用1,2,3. . . . .表示),每种类型数据至少20条数据.并根据自己想法,使用程序画出相应的图. 一. 纯随机序 ...

  7. Java通过JfreeChart生成转Base64图片字符串(饼图、折线图、柱状图、折线图-多条、3D柱状图、气泡图、时序图、曲线图、区域图、分布图、联合分类图、双X轴图、K线图、柱状图-横向等图)

    工具类 CreatLineChart.java package DrawLine;import java.awt.BasicStroke; import java.awt.Color; import ...

  8. 【JFreeChart】JFreeChart—输出时序图

    时序图(Time Series Chart)是按照时间轴显示的图形.通常可以按照年.月.日等时间周来显示. 实现代码: TimeChartServlet.java package com.lmb.jf ...

  9. jfreechart的时序图(曲线图)运行时间长了就变的很卡

    这几天项目里要用到一些图表,于是采用jfreechart来做这些时序图之类的东西.一切都很顺利,直到我忘了关程序去吃饭然后回来一看电脑卡得不行了,这才发现程序随着运行时间会占用越来越多的电脑资源.开始 ...

最新文章

  1. python编程有哪些-python编程工具有哪些
  2. 科大星云诗社动态20210909
  3. github使用-知乎的某小姐的一篇文章
  4. 在使用selenium,Chrome无界面浏览模式与自定义插件加载问题
  5. 有“嗅觉”的电脑:英特尔神经拟态芯片能嗅出危险化学品气味
  6. 结巴分词有前空格_NLP 分词的那些事儿
  7. java用dda算法绘制直线_使用DDA算法画出给定两点的直线
  8. 计算机创新设计2大赛获奖作品3Done,走向3D创意世界——3Done创客设计比赛
  9. 初等模型---交通流和道路通行能力
  10. Springboot后台管理系统
  11. 微信公众号推送的模板消息无法跳转到小程序指定页面?
  12. Unity - Timeline 之 Deleting tracks(删除轨道)
  13. Excel导入导出之easypoi用法
  14. 支付宝小程序对接错误
  15. 联想售后服务偷换主板
  16. 怎么使用7zip进行分批压缩_7z解压软件(7-zip)分卷压缩怎么做?
  17. Docker常见使用
  18. tcpdump命令解析
  19. Android FaceBook登录问题记录
  20. mcinabox运行库下载_MCinaBox运行库下载-MCinaBox启动器官网版下载v0.1.3- 游侠下载站...

热门文章

  1. 【Java数据库】使用properties资源文件,简化数据库连接
  2. 【PAT甲级 一个字符数组是否被另一个包含】1092 To Buy or Not to Buy (20 分) C++
  3. 查找出现次数超过一半的数
  4. MySQLdump常用命令
  5. spark写入elasticsearch限流
  6. ES6减少魔法操作之Reflect
  7. 【已解决】applicationContext.xml cannot be opened because it does not exist
  8. NIO Buffer
  9. 思科bfd静态路由切换_思科路由器与华为路由器静态路由关联双向BFD配置
  10. php基础教程文档,PHP5基础教程