日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jfreechart 时序图 ,生成图表

發布時間:2024/1/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jfreechart 时序图 ,生成图表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 时序图 ,生成图表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。