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

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

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

    posts - 297,  comments - 1618,  trackbacks - 0
          昨天聽到“數(shù)據(jù)下探”這個(gè)名詞,結(jié)果一問(wèn)才發(fā)現(xiàn)是這樣的一回事,就是在圖表上,例如柱狀圖上點(diǎn)擊一個(gè)柱子,跳轉(zhuǎn)到另一個(gè)圖表頁(yè)面。昨天看了一下JFreeChart,發(fā)現(xiàn)可以StandardCategoryURLGenerator類來(lái)實(shí)現(xiàn)這個(gè)功能,昨天做了個(gè)簡(jiǎn)單的demo,效果還不錯(cuò),呵呵,共享一下。
         首先建立一個(gè)名為barSample的web項(xiàng)目,并將jfreechart1.0.6的相關(guān)包加入到其中,本人在該項(xiàng)目中加入的jar包如下:
         (1)gnujaxp.jar;
         (2)itext-2.0.2.jar;
         (3)jcommon-1.0.10.jar;
         (4)jfreechart-1.0.6.jar;
         (5)jfreechart-1.0.6-experimental.jar;
         (6)jfreechart-1.0.6-swt.jar;
         (7)servlet.jar;
         (8)swtgraphics2d.jar。
          并在web.xml中加入相關(guān)的配置,配置后的web.xml的內(nèi)容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
        xmlns
    ="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
        <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>
    </web-app>

            在WebRoot目錄下建立index.jsp,顯示第一個(gè)圖表,該柱狀圖的每根柱子都添加了鏈接,該頁(yè)面的代碼如下:
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="java.awt.Color,
                    org.jfree.chart.ChartFactory,
                    org.jfree.chart.JFreeChart,
                    org.jfree.chart.plot.PlotOrientation,
                    org.jfree.chart.servlet.ServletUtilities,
                    org.jfree.data.category.CategoryDataset,
                    org.jfree.data.general.
    *,
                    org.jfree.chart.plot.CategoryPlot,
                    org.jfree.chart.axis.CategoryAxis,
                    org.jfree.chart.axis.ValueAxis,
                    org.jfree.chart.renderer.category.BarRenderer3D,
                    org.jfree.chart.urls.StandardCategoryURLGenerator,
                    org.jfree.chart.
    *,
                    org.jfree.chart.entity.
    *,
                    org.jfree.chart.labels.
    *"%>
    <%
    java.io.PrintWriter pw
    =new java.io.PrintWriter(out);
    double[][] data = new double[][] {{672}{325}{332}{440}{550}{330}};
    String[] rowKeys 
    = {"蘋果""梨子""葡萄""桔子""西瓜""香蕉"};
    String[] columnKeys 
    = {""};
    CategoryDataset dataset 
    = DatasetUtilities.createCategoryDataset(
            rowKeys,
            columnKeys,
            data);


    JFreeChart chart 
    = ChartFactory.createBarChart3D("水果銷量圖統(tǒng)計(jì)",
                      
    "水果",
                      
    "銷量",
                      dataset,
                      PlotOrientation.VERTICAL,
                      
    true,
                      
    false,
                      
    false);

    chart.setBackgroundPaint(Color.WHITE);
    CategoryPlot plot 
    = chart.getCategoryPlot();

    CategoryAxis domainAxis 
    = plot.getDomainAxis();
    plot.setDomainAxis(domainAxis);

    ValueAxis rangeAxis 
    = plot.getRangeAxis();
    //設(shè)置最高的一個(gè) Item 與圖片頂端的距離
    rangeAxis.setUpperMargin(0.15);
    //設(shè)置最低的一個(gè) Item 與圖片底端的距離
    rangeAxis.setLowerMargin(0.15);

    plot.setRangeAxis(rangeAxis);

    BarRenderer3D renderer 
    = new BarRenderer3D();
    renderer.setBaseOutlinePaint(Color.BLACK);
    //設(shè)置 Wall 的顏色
    renderer.setWallPaint(Color.gray);
    //設(shè)置每種水果代表的柱的顏色
    renderer.setSeriesPaint(0new Color(00255));
    renderer.setSeriesPaint(
    1new Color(200200255));
    renderer.setSeriesPaint(
    2, Color.GREEN);
    renderer.setSeriesPaint(
    3, Color.MAGENTA);
    renderer.setSeriesPaint(
    4, Color.GRAY);
    renderer.setSeriesPaint(
    5, Color.CYAN);

    //設(shè)置平行柱的之間距離
    renderer.setItemMargin(0.3);

    //顯示每個(gè)柱的數(shù)值
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setBaseItemLabelsVisible(
    true);

    renderer.setBaseItemLabelsVisible(
    true);
    renderer.setBaseItemURLGenerator(
    new StandardCategoryURLGenerator(
            
    "detail.jsp""fruit"""));
    plot.setRenderer(renderer);

    //設(shè)置柱的透明度
    plot.setForegroundAlpha(0.5f);
    //設(shè)置地區(qū)、銷量的顯示位置
    //plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    ChartRenderingInfo info = new ChartRenderingInfo(new
                        StandardEntityCollection());

    String filename 
    = ServletUtilities.saveChartAsPNG(chart, 800600, info, session);
    String graphURL 
    = request.getContextPath() + "/DisplayChart?filename=" + filename;
    ChartUtilities.writeImageMap(pw, filename, info, 
    true);
                  pw.flush();
    %>

    <table width="100%">
        
    <tr>
            
    <td align="center">
                
    <img src="<%= graphURL %>" width=800 height=600 border=0 usemap="#<%= filename %>" alt="">
            
    </td>
        
    </tr>
    </table>
           鏈接到的詳情頁(yè)面detail.jsp的內(nèi)容如下所示:
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="java.awt.Color,
                    org.jfree.chart.ChartFactory,
                    org.jfree.chart.JFreeChart,
                    org.jfree.chart.plot.PlotOrientation,
                    org.jfree.chart.servlet.ServletUtilities,
                    org.jfree.data.category.CategoryDataset,
                    org.jfree.data.general.
    *,
                    org.jfree.chart.plot.CategoryPlot,
                    org.jfree.chart.axis.CategoryAxis,
                    org.jfree.chart.axis.ValueAxis,
                    org.jfree.chart.renderer.category.BarRenderer3D,
                    org.jfree.chart.labels.
    *"%>
    <%
    String fruit 
    = new String(request.getParameter("fruit").getBytes("ISO8859_1"), "utf-8");
    int count = 0;
    if ("蘋果".equals(fruit)) {
        count 
    = 100;
    }
     else if ("梨子".equals(fruit)) {
        count 
    = 26;
    }
     else if ("葡萄".equals(fruit)) {
        count 
    = -20;
    }
     else if ("桔子".equals(fruit)) {
        count 
    = -40;
    }
     else if ("西瓜".equals(fruit)) {
        count 
    = 80;
    }

    //String address = new String(request.getParameter("address").getBytes("ISO8859_1"), "utf-8");

    double[][] data = new double[][] {{672 + count}{325 + count}{332 + count}{440 + count},
                                      
    {550 + count}{330 + count}{435 + count}{553 + count},
                                      
    {335 + count}{443 + count}{378 + count}{733 + count}}
    ;
    String[] rowKeys 
    = {"一月份""二月份""三月份""四月份",
                        
    "五月份""六月份""七月份""八月份",
                        
    "九月份""十月份""十一月份""十二月份"}
    ;
    String[] columnKeys 
    = {""};
    CategoryDataset dataset 
    = DatasetUtilities.createCategoryDataset(
            rowKeys,
            columnKeys,
            data);

    JFreeChart chart 
    = ChartFactory.createBarChart3D("2007年度" + fruit + "銷量圖",
                      
    "月份",
                      
    "銷量",
                      dataset,
                      PlotOrientation.VERTICAL,
                      
    true,
                      
    false,
                      
    false);

    chart.setBackgroundPaint(Color.WHITE);
    CategoryPlot plot 
    = chart.getCategoryPlot();

    CategoryAxis domainAxis 
    = plot.getDomainAxis();
    plot.setDomainAxis(domainAxis);

    ValueAxis rangeAxis 
    = plot.getRangeAxis();
    //設(shè)置最高的一個(gè) Item 與圖片頂端的距離
    rangeAxis.setUpperMargin(0.15);
    //設(shè)置最低的一個(gè) Item 與圖片底端的距離
    rangeAxis.setLowerMargin(0.15);

    plot.setRangeAxis(rangeAxis);

    BarRenderer3D renderer 
    = new BarRenderer3D();
    renderer.setBaseOutlinePaint(Color.BLACK);
    //設(shè)置 Wall 的顏色
    renderer.setWallPaint(Color.gray);
    //設(shè)置每種水果代表的柱的顏色
    renderer.setSeriesPaint(0new Color(00255));
    renderer.setSeriesPaint(
    1new Color(200200255));
    renderer.setSeriesPaint(
    2, Color.GREEN);
    renderer.setSeriesPaint(
    3, Color.MAGENTA);
    renderer.setSeriesPaint(
    4, Color.GRAY);
    renderer.setSeriesPaint(
    5, Color.CYAN);

    //設(shè)置平行柱的之間距離
    renderer.setItemMargin(0.3);

    //顯示每個(gè)柱的數(shù)值
    renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setBaseItemLabelsVisible(
    true);

    plot.setRenderer(renderer);
    //設(shè)置柱的透明度
    plot.setForegroundAlpha(0.5f);

    String filename 
    = ServletUtilities.saveChartAsPNG(chart, 800550null, session);
    String graphURL 
    = request.getContextPath() + "/DisplayChart?filename=" + filename;
    %>

    <table width="100%">
        
    <tr>
            
    <td align="center">
                
    <a href="index.jsp">返回</a>
                
    <br>
                
    <img src="<%= graphURL %>" width=800 height=550 border=0 usemap="#<%= filename %>" alt="">
            
    </td>
        
    </tr>
    </table>

           在Tomcat下部署barSample項(xiàng)目后,輸入地址:http://localhost:8080/barSample/,運(yùn)行效果如下圖所示:

           點(diǎn)擊第一個(gè)柱子(蘋果所在的柱子)后,鏈接到的頁(yè)面如下圖所示:

    posted on 2008-02-20 10:34 阿蜜果 閱讀(8341) 評(píng)論(12)  編輯  收藏 所屬分類: JFreeChart


    FeedBack:
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2008-02-20 11:30 | voff12
    不錯(cuò),請(qǐng)教一個(gè)問(wèn)題。圖片放在session中,每次點(diǎn)擊會(huì)不會(huì)重新產(chǎn)生?有沒(méi)有緩存?怎樣最好的解少處理次數(shù)?
    另外可不可把數(shù)據(jù)和代碼處理與VIEW分開?  回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2008-02-20 11:40 | 阿蜜果
    可以將數(shù)據(jù)和代碼處理與VIEW分開,網(wǎng)上有相關(guān)的例子。  回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2008-02-20 19:37 | BeanSoft
    我來(lái)支持一下!  回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)[未登錄](méi)
    2008-03-14 10:02 | haha
    柱圖中如何顯示百分比?  回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2008-03-17 14:16 | jfreechart
    PiePlot pieplot = (PiePlot) chart.getPlot();
    pieplot.setLabelFont(new Font("宋體", 0, 12));

    //沒(méi)有數(shù)據(jù)的時(shí)候顯示的內(nèi)容
    pieplot.setNoDataMessage("無(wú)數(shù)據(jù)顯示");
    pieplot.setCircular(false);
    pieplot.setLabelGap(0.02D);
    pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
    ("{0}: ({2})")));//算出百分比
      回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2008-06-04 13:03 | manqinglb
    LZ看了你的例子 , 真的太感謝你了 , 對(duì)我有很大的幫助 , 謝謝謝謝!!  回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2008-06-05 10:05 | 碩士生
    頁(yè)面老死掉是怎么回事啊?  回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2008-06-05 10:11 | 碩士生
    第一個(gè)頁(yè)面老吧cup推到100%然后就卡住了,怎么辦啊?  回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2008-11-27 14:32 | 星彤
    學(xué)習(xí)一下  回復(fù)  更多評(píng)論
      
    # re: 用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2010-03-10 15:52 | 時(shí)的合適的
    白癡,設(shè)置都錯(cuò)了,還貼出來(lái)!!!  回復(fù)  更多評(píng)論
      
    # re: 蜜果私塾:用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)
    2014-02-24 17:00 | 劉能
    gnujaxp.jar;這個(gè)包最好不要放進(jìn)去,我放進(jìn)去之后一直報(bào)錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: 蜜果私塾:用JFreeChart實(shí)現(xiàn)數(shù)據(jù)下探(給柱狀圖的每根柱子加鏈接的例子)[未登錄](méi)
    2014-10-10 16:33 | james
    你好,請(qǐng)問(wèn)有在餅狀圖上做數(shù)據(jù)下探的么?  回復(fù)  更多評(píng)論
      
    <2008年2月>
    272829303112
    3456789
    10111213141516
    17181920212223
    2425262728291
    2345678

          生活將我們磨圓,是為了讓我們滾得更遠(yuǎn)——“圓”來(lái)如此。
          我的作品:
          玩轉(zhuǎn)Axure RP  (2015年12月出版)
          

          Power Designer系統(tǒng)分析與建模實(shí)戰(zhàn)  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊(cè)

    關(guān)注blog

    積分與排名

    • 積分 - 2294803
    • 排名 - 3

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产精品福利片免费看| 日本片免费观看一区二区| 女人让男人免费桶爽30分钟| 亚洲中文字幕第一页在线| 亚洲精品日韩一区二区小说| 久久这里只精品热免费99| 亚洲高清无码在线观看| 亚洲中文字幕AV在天堂| 99精品在线免费观看| 国产成人亚洲精品狼色在线 | 91亚洲导航深夜福利| 久久成人18免费网站| 免费在线观看日韩| 在线综合亚洲欧洲综合网站| 99爱在线精品视频免费观看9| 国产亚洲?V无码?V男人的天堂| 欧美色欧美亚洲另类二区| 四虎永久在线观看免费网站网址 | 久草免费福利视频| 红杏亚洲影院一区二区三区| 亚洲成AV人片高潮喷水| 免费大片黄在线观看yw| 精品亚洲成a人片在线观看少妇 | 久久久久成人片免费观看蜜芽| 亚洲一区视频在线播放| 国产区图片区小说区亚洲区| 丁香花在线观看免费观看| 亚洲熟妇av一区二区三区下载| 麻豆精品不卡国产免费看| 国产AⅤ无码专区亚洲AV| 免费看一级高潮毛片| 国产又长又粗又爽免费视频| 精品国产成人亚洲午夜福利| 67194国产精品免费观看| 亚洲AV日韩精品久久久久久久| 国产免费人成视频尤勿视频| 国产jizzjizz视频全部免费| 亚洲精品国产第一综合99久久| 四虎成人免费网址在线| 亚洲av永久中文无码精品综合| 妞干网免费观看视频|