新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论SVG, GML, X3D, VRML, VML, XAML, AVALON, Batik等基于XML的图形技术,以及有关GIS的应用。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 SVG/GML/VRML/X3D/XAML 』 → jsp页面生成柱状图——源代码[转帖] 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 11254 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: jsp页面生成柱状图——源代码[转帖] 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     求索 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:14
      积分:171
      门派:W3CHINA.ORG
      注册:2006/1/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给求索发送一个短消息 把求索加入好友 查看求索的个人资料 搜索求索在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看求索的博客楼主
    发贴心情 jsp页面生成柱状图——源代码[转帖]

    柱状图生成源码

    1.jsp
    //给定要显示的柱的个数

    <%@ page contentType="text/html;charset=gb2312"%>
    <html>

    <form name="form" action="2.jsp" >
       <table align=center>
                     <tr><td><b>统计项目个数</b></td></tr>
                       <td><input type="text" name="num" value="" size="8"></td>
                     </tr>
                     <td ><input type="reset" name="Reset" value="clear"></td>
                     <td align=center><input type="submit" name="Submit2" value="Let's Go"></td>
      </table>
    </html>


    2.jsp
    //给出对应个数的数据的id和num


    <%@ page contentType="text/html;charset=gb2312"%>
    <html>
    <title>demo</title>
    <% int i=0;
       int j=0;

    i = Integer.parseInt(request.getParameter("num"));
    %>

    <form name="inputform1" action="3.jsp">
        <table align=center>
    <%  for(j=0;j<i;j++){ %>
              <tr>
              <td><b>ID<%=j+1%></b></td>
                                   <td><input type="text" name="id<%=j+1%>" value="" size="8"></td>
                            <td><b>NUM<%=j+1%></b></td>    
                     <td><input type="text" name="num<%=j+1%>" value="" size="8"></td>
                             
              </tr>  
    <%}%>
                          <tr> <td><b>个数</b></td>    
                     <td><input type="text" name="num" value="<%=i%>" size="8"></td>
                       </tr>
    <tr>                
                      <td align=center ><input type="reset" name="Reset" value="clear"></td>
                     <td align=center><input type="submit" name="Submit2" value="Let's Go"></td>
    </tr>

      </table>
      </form>

    </html>

    3.jsp
    //具体生成图形,包含js代码

    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>
    <%@ page import="java.util.*"%>
    <html>
    <title>数据统计表</title>
    <script language="javascript">

    var root;
    var svg;
    var canvas;
    var array = new Array;
    var array1 = new Array;
    var array2 = new Array;

    var points1;
    var points2;
    var m;
    function init_2D(n,color,cor_x,cor_y,cor_name,rate)
    {
      root = id1.getSVGDocument();
      canvas = root.getElementById( "canvas" );
      m=600/n ;

      for (j=0,k=0; j <590; j +=m,k++)
        {
           var obj_rect = new_rectangle(j,600,m/3,0,color);
            array.push( obj_rect );
           canvas.appendChild( obj_rect );
          }
      var obj_x = new_text(630,650,cor_x);
      canvas.appendChild( obj_x );
      var obj_y = new_text(-100,-100,cor_y);
      canvas.appendChild( obj_y );
      var obj_b = new_text(300,-100,cor_name)
      canvas.appendChild( obj_b );
      
    var text1=new_text(-100,10,Math.round(600*rate));
    var text2=new_text(-100,110,Math.round(500*rate));
    var text3=new_text(-100,210,Math.round(400*rate));
    var text4=new_text(-100,310,Math.round(300*rate));
    var text5=new_text(-100,410,Math.round(200*rate));
    var text6=new_text(-100,510,Math.round(100*rate));
    canvas.appendChild( text1 );
    canvas.appendChild( text2 );
    canvas.appendChild( text3 );
    canvas.appendChild( text4 );
    canvas.appendChild( text5 );
    canvas.appendChild( text6 );
    }


    function init_3D(n,color,cor_x,cor_y,cor_name,rate)
    {
      root = id1.getSVGDocument();
      canvas = root.getElementById( "canvas" );
         m=600/n ;

      for (j =0,k=0; j <600; j +=m,k++)
        {
           var obj_rect = new_rectangle(j,580,m/3,20,color);
            array.push( obj_rect );
           canvas.appendChild( obj_rect );

          var obj_polygon1= new_polygon_1(j,580,m/3,color);
            array1.push( obj_polygon1);
           canvas.appendChild( obj_polygon1 );

          var obj_polygon2= new_polygon_2(j,580,m/3,color);
            array2.push( obj_polygon2);
           canvas.appendChild( obj_polygon2 );


      //     var obj_x_text= new_text(j,630,item);
       //    canvas.appendChild( obj_x_text );
          }

      var obj_x = new_text(630,650,cor_x);
      canvas.appendChild( obj_x );

      var obj_y = new_text(-150,-100,cor_y);
      canvas.appendChild( obj_y );

      var obj_b = new_text(300,-100,cor_name)
      canvas.appendChild( obj_b );
      
    var text1=new_text(-100,10,Math.round(600*rate));
    var text2=new_text(-100,110,Math.round(500*rate));
    var text3=new_text(-100,210,Math.round(400*rate));
    var text4=new_text(-100,310,Math.round(300*rate));
    var text5=new_text(-100,410,Math.round(200*rate));
    var text6=new_text(-100,510,Math.round(100*rate));
    canvas.appendChild( text1 );
    canvas.appendChild( text2 );
    canvas.appendChild( text3 );
    canvas.appendChild( text4 );
    canvas.appendChild( text5 );
    canvas.appendChild( text6 );
    }

    function put_text(j,item)
    {  root = id1.getSVGDocument();
       canvas = root.getElementById( "canvas" );
       var obj_x_text= new_text(j,630,item);
       canvas.appendChild( obj_x_text );
    }
    function new_rectangle( x,y,w,h,color)
    {
       var rectangle = root.createElement( 'rect' );
       rectangle.setAttribute( 'x', x );
       rectangle.setAttribute( 'y', y );
       rectangle.setAttribute( 'width', w );
       rectangle.setAttribute( 'height', h );
       var style = rectangle.getStyle();
       style.setProperty('fill', color);

       return rectangle;

    }

    function new_text(x,y,item)
        { var text=root.createElement('text');
          text.setAttribute('x',x);
          text.setAttribute('y',y);
          text.setAttribute('fill','black');
          text.setAttribute('font-size',30);
          var textnode=root.createTextNode(item);
          text.appendChild(textnode);
          return text;
         }

    function  new_polygon_1(x,y,w,color)
    { var polygon1=root.createElement('polygon');
       points1=x+','+y+' '+(x+20)+','+(y-20)+' '+(x+20+w)+','+(y-20)+' '+(x+w)+','+y ;  
       polygon1.setAttribute('points',points1);
       polygon1.setAttribute('fill',color);
       return polygon1;
    }

    function  new_polygon_2(x,y,w,color)
    {
       var polygon2=root.createElement('polygon');
       points2=(x+w)+','+y+' '+(x+w+20)+','+(y-20)+' '+(x+w+20)+', 590'+' '+(x+w)+', 600';  
       polygon2.setAttribute('points',points2);
       polygon2.setAttribute('fill',color);
       return polygon2;
    }

    function SetHeight2(num,i)
       {  
         var obj = array[i];
         obj.setAttribute("y",600-num);
         obj.setAttribute("height",num);
    }

    function SetHeight(num,i,x)
       {  
         var obj = array[i];
         obj.setAttribute("y",600-num);
         obj.setAttribute("height",num);

         points1=(x)+','+(600-num)+' '+(x+20)+','+(600-num-20)+' '+(x+m/3+20)+', '+(600-num-20)+' ' +(x+m/3)+ ','+(600-num);  
         var obj1 = array1[i];
         obj1.setAttribute("points",points1 );

         points2=(x+m/3)+','+(600-num)+' '+(x+m/3+20)+','+(600-num-20)+' '+(x+m/3+20)+', 590'+' '+(x+m/3)+','+600;  
         var obj2 = array2[i];
         obj2.setAttribute("points",points2 );
       
    }

    function  GetHeight(i,rate)

        {
          var obj=array[i];
          var long=obj.getAttribute("height");
          Record_num=root.getElementById("record");
          Record_num.firstChild.data = long*rate;
             
        }
    function  NotGetHeight()
        {
          Record_num=root.getElementById("record");
          Record_num.firstChild.data = " ";
      
        }

    </script>
    <body>

    <embed name="id1" pluginspage=http://www.adobe.com/svg/viewer/install/ align="top" src="3.svg" height="600px" width="600px" type="image/svg+xml">

    <%
       String[] id=new String[12];   int[] num=new int[12];
      int i,j,p; int max;double rate;

    i= Integer.parseInt(request.getParameter("num"));

    for(j=0;j<i;j++)
    {
    num[j] = Integer.parseInt(request.getParameter("num"+(j+1)));
    id[j] = (String) request.getParameter("id"+(j+1));
    }
        max=num[0];
        for( j=0;j<i;j++)
           if(num[j]>=max) max=num[j];

    if(max>=600)
           {
                  if(max%600==0) rate=max/600.00;
                  else rate=max/600+1;
            }
       else  rate=max/600.00;   

    p=600/i;
    %>
    <table>
       <tr>
    <%  for(j=0;j<i;j++)  {  %>
          <td>
           <a href="javascript:SetHeight(<%=num[j]/rate%>,<%=j%>,<%=j%>*<%=p%>)"
    onclick="SetHeight(<%=num[j]/rate%>,<%=j%>,<%=j%>*<%=p%>);put_text(<%=j%>*<%=p%>,'<%=id[j]%>')" onmouseover="GetHeight(<%=j%>,<%=rate%>); " onmouseout= " "> <%=id[j]%> </a>  
         </td>
    <% }  %>
       </tr>
       </table>
    <form name="inputform2">
        <table>
              <tr>
              <td><b>横坐标名称</b></td>
                     <td><input type="text" name="x" value="" size="8"></td>
       <td><b>纵坐标名称</b></td>
        <td><input type="text" name="y" value="" size="8"></td>
                            <td><b>统计表标题</b></td>
        <td><input type="text" name="name" value="" size="15"></td>
                            <td><b>颜色</b></td>
        <td><input type="text" name="color" value="" size="6"></td>
       <td><input type="button" value="绘图"
                             onclick="init_3D(<%=i%>,document.inputform2.color.value,
                        document.inputform2.x.value,document.inputform2.y.value,document.inputform2.name.value,<%=rate%>)">
                             </td>
        
       </tr>
      </table>
      </form>

    </body>
    </html>

    3.svg
    //svg文件

    <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
      "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
    <svg width="1200" height="900" viewBox=" -300 200 1300 100" xmlns="http://www.w3.org/2000/svg"
                          xmlns:xlink="http://www.w3.org/1999/xlink"  >

    <g id="canvas"></g>

    <g>

    <text  x="600" y="200" style="font-size :30;fill:red " >The record is :</text>

    <!-- display the record-->
    <text id="record" x="850" y="200" style="font-size :30;fill:red " >  </text>

    <!-- the vertical  -->
    <line x1="0" y1="600" x2="0" y2="-100" style="fill:red;stroke:red;srtoke-width:3;"/>
    <polygon points=" -10,-100 0,-110 10,-100"  style="fill:red;stroke:red;srtoke-width:3;"/>

    <!-- the horizontal  -->
    <line x1="0" y1="600" x2="620" y2="600" style="fill:red;stroke:red;srtoke-width:3;"/>
    <polygon points=" 620,590 630,600 620,610" style="fill:red;stroke:red;srtoke-width:3;"/>

    <!-- the unit -->
    <line  x1="0" y1="0" x2="600" y2="0" />
    <line  x1="0" y1="100" x2="600" y2="100" />
    <line  x1="0" y1="200" x2="600" y2="200" />
    <line  x1="0" y1="300" x2="600" y2="300" />
    <line  x1="0" y1="400" x2="600" y2="400" />
    <line  x1="0" y1="500" x2="600" y2="500" />

    </g>


    </svg>


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/7 14:34:00
     
     行云流水 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:11
      积分:95
      门派:XML.ORG.CN
      注册:2005/3/2

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给行云流水发送一个短消息 把行云流水加入好友 查看行云流水的个人资料 搜索行云流水在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看行云流水的博客2
    发贴心情 
    好久没编这些图了,支持一个
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/1/17 10:50:00
     
     qsc800528 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:75
      门派:XML.ORG.CN
      注册:2005/10/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给qsc800528发送一个短消息 把qsc800528加入好友 查看qsc800528的个人资料 搜索qsc800528在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看qsc800528的博客3
    发贴心情 
    zhichi
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/2 16:43:00
     
     一座城池 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:86
      门派:XML.ORG.CN
      注册:2007/5/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给一座城池发送一个短消息 把一座城池加入好友 查看一座城池的个人资料 搜索一座城池在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看一座城池的博客4
    发贴心情 
    谢谢 参考下!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/8/8 16:02:00
     
     markbn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:77
      门派:XML.ORG.CN
      注册:2008/1/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给markbn发送一个短消息 把markbn加入好友 查看markbn的个人资料 搜索markbn在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看markbn的博客5
    发贴心情 
    不好意思,请问楼主,你可以注释一下吗?我是新手.
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/9 9:37:00
     
     markbn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:6
      积分:77
      门派:XML.ORG.CN
      注册:2008/1/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给markbn发送一个短消息 把markbn加入好友 查看markbn的个人资料 搜索markbn在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看markbn的博客6
    发贴心情 
    终于可以显示页面了.
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/1/18 9:42:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/26 10:25:22

    本主题贴数6,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms