<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java范例

    java

    JFreeChart 靜態曲線圖(初級入門篇)

    曲線圖
    接著我們來介紹曲線圖的使用。在筆者日常的開發工作中,曲線圖用得最多,它可以用來繪制趨勢圖、統計分析等。首先我們在WebRoot下建立一個line目錄,用來存放曲線圖實例的jsp頁面。我們在該目錄下建立sample1.jsp頁面來做一個簡單的曲線圖的例子。在開始編碼前,讓我們來看看與畫曲線圖密切相關的幾個類:
    1) TimeSeriesCollection
    曲線數據的集合。
    2) TimeSeries
    曲線信息序列。
    3) ChartFactory
    可以利用該類的createTimeSeriesChart方法來創建曲線的JFreeChart對象。
    在下例中,我們顯示阿蜜果的blog在2007年度各月份的訪問量情況,修改后的sample1.jsp的內容如下:
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import = "org.jfree.chart.ChartFactory,
                  org.jfree.chart.JFreeChart,
                  org.jfree.chart.servlet.ServletUtilities,
                  org.jfree.chart.title.TextTitle,
                  org.jfree.data.time.TimeSeries,
                  org.jfree.data.time.Month,
                  org.jfree.data.time.TimeSeriesCollection,
                  java.awt.Font"%>
    <%
    //訪問量統計時間線
    TimeSeries timeSeries = new TimeSeries("阿蜜果blog訪問量統計", Month.class);
    //時間曲線數據集合
    TimeSeriesCollection lineDataset = new TimeSeriesCollection();
     
    //構造數據集合
    timeSeries.add(new Month(1, 2007), 11200);
    timeSeries.add(new Month(2, 2007), 9000);
    timeSeries.add(new Month(3, 2007), 6200);
    timeSeries.add(new Month(4, 2007), 8200);
    timeSeries.add(new Month(5, 2007), 8200);
    timeSeries.add(new Month(6, 2007), 12200);
    timeSeries.add(new Month(7, 2007), 13200);
    timeSeries.add(new Month(8, 2007), 8300);
    timeSeries.add(new Month(9, 2007), 12400);
    timeSeries.add(new Month(10, 2007), 12500);
    timeSeries.add(new Month(11, 2007), 13600);
    timeSeries.add(new Month(12, 2007), 12500);
     
    lineDataset.addSeries(timeSeries);
    JFreeChart chart = ChartFactory.createTimeSeriesChart("訪問量統計時間線", "月份", "訪問量", lineDataset, true, true, true);
     
    //設置子標題
    TextTitle subtitle = new TextTitle("2007年度", new Font("黑體", Font.BOLD, 12));
    chart.addSubtitle(subtitle);
    //設置主標題
    chart.setTitle(new TextTitle("阿蜜果blog訪問量統計", new Font("隸書", Font.ITALIC, 15)));
    chart.setAntiAlias(true);
     
    String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
    String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
    %>
    <img src="<%= graphURL %>"width=500 height=300 border=0 usemap="#<%= filename %>">
    =================================================================

    =================================================================
    有時我們需要顯示各數據點及其數值,這是我們需要對上例進行一點改動,在JFreeChart chart = ChartFactory.createTimeSeriesChart……后,TextTitle subtitle = new TextTitle……前加上如下的代碼:
    XYPlot plot = (XYPlot) chart.getPlot();
    XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
    //設置網格背景顏色
    plot.setBackgroundPaint(Color.white);
    //設置網格豎線顏色
    plot.setDomainGridlinePaint(Color.pink);
    //設置網格橫線顏色
    plot.setRangeGridlinePaint(Color.pink);
    //設置曲線圖與xy軸的距離
    plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D));
    //設置曲線是否顯示數據點
    xylineandshaperenderer.setBaseShapesVisible(true);
    //設置曲線顯示各數據點的值
    XYItemRenderer xyitem = plot.getRenderer();  
    xyitem.setBaseItemLabelsVisible(true);  
    xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
    xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
    xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 14));
    plot.setRenderer(xyitem);
        并引入了一些另外的包,引入包的語句變成:
    <%@ page import = "org.jfree.chart.ChartFactory,
                  org.jfree.chart.title.TextTitle,
                  org.jfree.data.time.TimeSeries,
                  org.jfree.data.time.Month,
                  org.jfree.data.time.TimeSeriesCollection,
                  org.jfree.chart.plot.XYPlot,
                  org.jfree.chart.renderer.xy.XYLineAndShapeRenderer,
                  java.awt.Color,
                  org.jfree.ui.RectangleInsets,
                  java.awt.Font,
                  org.jfree.chart.renderer.xy.XYItemRenderer,
                  org.jfree.chart.JFreeChart,
                  org.jfree.chart.servlet.ServletUtilities,
                  org.jfree.chart.labels.*,
                  org.jfree.ui.*"%>
           運行該實例,效果如下所示:
    ===================================================================

    ===================================================================
    上面兩例的曲線圖都是但曲線的,有時候我們對兩個曲線進行比較,例如對阿蜜果在2006年度和2007年度的blog訪問量進行比較,在此種情況下,我們需要在一個曲線圖中顯示兩個曲線。在此種情況下,我們只需要在sample1.jsp的基礎上新建一個TimeSeries對象,給它添加數據后,將其添加到TimeSeriesCollection型數據集合對象中,修改后的程序主體部分如下所示:
    //訪問量統計時間線
    TimeSeries timeSeries2006 = new TimeSeries("2006年度", Month.class);
    TimeSeries timeSeries2007 = new TimeSeries("2007年度", Month.class);
    //時間曲線數據集合
    TimeSeriesCollection lineDataset = new TimeSeriesCollection();
     
    //構造數據集合
    timeSeries2006.add(new Month(1, 2007), 7200);
    timeSeries2006.add(new Month(2, 2007), 7000);
    timeSeries2006.add(new Month(3, 2007), 4200);
    timeSeries2006.add(new Month(4, 2007), 8200);
    timeSeries2006.add(new Month(5, 2007), 7300);
    timeSeries2006.add(new Month(6, 2007), 8200);
    timeSeries2006.add(new Month(7, 2007), 9200);
    timeSeries2006.add(new Month(8, 2007), 7300);
    timeSeries2006.add(new Month(9, 2007), 9400);
    timeSeries2006.add(new Month(10, 2007), 7500);
    timeSeries2006.add(new Month(11, 2007), 6600);
    timeSeries2006.add(new Month(12, 2007), 3500);
     
    timeSeries2007.add(new Month(1, 2007), 10200);
    timeSeries2007.add(new Month(2, 2007), 9000);
    timeSeries2007.add(new Month(3, 2007), 6200);
    timeSeries2007.add(new Month(4, 2007), 8200);
    timeSeries2007.add(new Month(5, 2007), 8200);
    timeSeries2007.add(new Month(6, 2007), 11200);
    timeSeries2007.add(new Month(7, 2007), 13200);
    timeSeries2007.add(new Month(8, 2007), 8300);
    timeSeries2007.add(new Month(9, 2007), 10400);
    timeSeries2007.add(new Month(10, 2007), 12500);
    timeSeries2007.add(new Month(11, 2007), 10600);
    timeSeries2007.add(new Month(12, 2007), 10500);
     
    lineDataset.addSeries(timeSeries2006);
    lineDataset.addSeries(timeSeries2007);
    JFreeChart chart = ChartFactory.createTimeSeriesChart("訪問量統計時間線", "月份", "訪問量", lineDataset, true, true, true);
     
    //設置子標題
    TextTitle subtitle = new TextTitle("2006/2007年度訪問量對比", new Font("黑體", Font.BOLD, 12));
    chart.addSubtitle(subtitle);
    //設置主標題
    chart.setTitle(new TextTitle("阿蜜果blog訪問量統計", new Font("隸書", Font.ITALIC, 15)));
    chart.setAntiAlias(true);
    該例的運行效果如下:
    ===============================================================

    ===============================================================
    本文通過詳盡的實例講述了如何利用JFreeChart開發常用的柱狀圖、餅圖和曲線圖。從這些實例中可以看出,JFreeChart是我們開發圖表或報表的理想選擇,它簡單易用,并且容易理解,是我們開發的利刃


    *********************************************************************************************
    web.xml 配置如下    完整圖例 + 源碼  http://tech.it168.com/j/2007-09-29/200709291132796.shtml
    <servlet>
    <servlet-name>DisplayChart</servlet-name>
    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>DisplayChart</servlet-name>
    <url-pattern>/DisplayChart</url-pattern>
    </servlet-mapping>

    posted on 2007-10-25 15:54 王波 閱讀(4976) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 黄色免费网站网址| 国产精品免费观看| 亚洲第一页综合图片自拍| 亚洲熟妇无码一区二区三区| 免费无码中文字幕A级毛片| 亚洲AV综合色区无码一区| 欧洲人成在线免费| 亚洲高清中文字幕| 中文毛片无遮挡高潮免费| 亚洲中文字幕日本无线码| 成年性羞羞视频免费观看无限| 亚洲一区二区三区91| 在线观看特色大片免费视频| 亚洲男人的天堂网站| 亚洲成A人片在线观看中文| 国产精品偷伦视频免费观看了 | 亚洲自偷自偷在线制服| 中文字幕永久免费视频| 亚洲αv在线精品糸列| xx视频在线永久免费观看| 99久久婷婷国产综合亚洲| 四虎www成人影院免费观看| 猫咪免费人成网站在线观看入口 | 99热在线精品免费全部my| 亚洲成AV人片在WWW| 亚洲性久久久影院| 亚洲a一级免费视频| 亚洲AV日韩综合一区尤物| 亚洲M码 欧洲S码SSS222| 国产精品免费看久久久| 亚洲一区二区三区免费视频| 亚洲AV中文无码乱人伦在线视色| 久久免费线看线看| 中国china体内裑精亚洲日本| vvvv99日韩精品亚洲| 久久精品免费电影| 亚洲乱色熟女一区二区三区蜜臀| 亚洲精品国产精品国自产观看 | 国产精品成人免费一区二区| 日韩欧美亚洲国产精品字幕久久久| 国产偷窥女洗浴在线观看亚洲 |