<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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 国产一精品一AV一免费| 免费观看91视频| 青青青青青青久久久免费观看 | 国产在线观看麻豆91精品免费| 免费人成再在线观看网站| 免费视频专区一国产盗摄| 亚洲制服在线观看| 精品国产无限资源免费观看| 亚洲自偷精品视频自拍| 国内精品免费麻豆网站91麻豆| 看全色黄大色大片免费久久| 色婷婷六月亚洲综合香蕉| 日韩激情无码免费毛片| 国产91成人精品亚洲精品| 亚洲精品国产电影| 国产麻豆一精品一AV一免费| 亚洲AV福利天堂一区二区三 | 污视频网站免费在线观看| 免费看国产曰批40分钟| 成人免费夜片在线观看| 国产亚洲精品国看不卡| 中文在线免费不卡视频| 亚洲一区二区三区日本久久九| 色偷偷亚洲第一综合网| 亚洲精品无码久久千人斩| 99热这里只有精品免费播放| 久久亚洲精品成人AV| 永久免费AV无码国产网站| 国产精品亚洲精品久久精品| 久久久久噜噜噜亚洲熟女综合| 亚洲中文字幕乱码AV波多JI| 免费看少妇作爱视频| 久久久WWW成人免费精品| 亚洲av无码潮喷在线观看| 美女视频黄的全免费视频网站| 亚洲成A∨人片在线观看不卡| 综合偷自拍亚洲乱中文字幕| 亚洲午夜AV无码专区在线播放| 国产成人精品亚洲| 亚洲精品无码成人片久久| 无码国产精品一区二区免费虚拟VR|