- 浏览: 24003 次
- 性别:
- 来自: 湖北荆州
最近访客 更多访客>>
文章分类
最新评论
-
wcd.5:
谢谢提供,该教材太适合刚入门的人了
JQuery学习 -
zzg810314:
不错,可以做个数据图表展示
javascript+vml做柱状统计图
最近因工作需要需要用javascript在客户端做图表统计功能,在网上找到一个不错的方式法,用VML来绘制图表(showPercent.html):
java 代码
- <html xmlns:v="urn:schemas-microsoft-com:vml">
- <head>
- <title>图表</title>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></head>
- <STYLE>
- v\:* { BEHAVIOR: url(#default#VML) }
- .memo{
- border-top: solid black;
- border-right:solid black;
- border-bottom:solid black;
- border-left:solid black;
- padding-top:10px;
- padding-left:10px;
- padding-bottom:10px;
- padding-right:10px;
- border-width:1px;
- background-color:#EFEFEF;
- font-size:9pt;
- font-family:宋体;
- }
- .memo1{
- padding-top:3px;
- padding-left:3px;
- padding-bottom:3px;
- padding-right:3px;
- border-width:1px;
- background-color:#EFEFEF;
- font-size:9pt;
- font-family:宋体;
- }
- .ddd{
- border-top: solid silver;
- border-right:solid silver;
- border-bottom:solid silver;
- border-left:solid silver;
- border-width:1px;
- }
- .title{
- padding-top:5px;
- padding-left:10px;
- padding-bottom:5px;
- padding-right:10px;
- font-size:10pt;
- font-family:宋体;
- }
- A{
- font-size:9pt;
- color: blue;
- text-decoration:none;
- }
- A:hover{color:red;text-decoration:underline;}
- </STYLE>
- <script>
- // 该段变量用 ASP 获取表单值 来设置
- var aoNum = new Array(); // 分数集合
- var aoMember = new Array(); // 分数对应集合
- // 该段变量用 ASP 获取表单值 来设置
- var aoPercent = null; // 保存对 aoNum 成员对应应百分比
- var count = 0;
- // 设置 aoPercent
- function InintaoPercent(){
- aoMember = window.location.search.match(/counts=([^&]+)/)[1].split(",");
- aoNum = window.location.search.match(/members=([^&]+)/)[1].split(",");
- count = eval(aoMember.join("+"));
- if(aoNum.length == 0) return false;
- aoPercent = new Array();
- for(var i=0; i<aoNum.length; i++){
- aoPercent[i] = Math.round(100*aoMember[i]/count);
- }
- for(var i = 0 ; i < aoNum.length; i ++)
- {
- temarray0[i] = aoNum[i];
- temarray1[i] = Math.round(10* aoPercent[i]) // 1000 * aoPercent[i] / 100
- }
- dataarray[0] = temarray0
- dataarray[1] = temarray1
- }
- ///////////////////////////////////////////////////////
- var dSumData = 0
- var dCs = 0
- var MaxData = 0
- var dataarray = new Array()
- var temarray0 = new Array()
- var temarray1 = new Array()
- function drawLinesX(m)
- {
- var num = aoMember;
- for(var i=0;i<num.length;i++){
- for(var j=0;j<i;j++){
- if(parseInt(num[j])<parseInt(num[i])){
- var filter = num[j];
- num[j]=num[i];
- num[i]=filter;
- }
- }
- }
- var temp = num[0]/5;
- count=0; //画横坐标
- var str = 1;
- var textPoint=Math.round(temp);
- for(var i=1;i<=10;i++){
- var py=2750-i*245;
- var strTo=m+" "+py;
- var newLine = document.createElement("<v:line from='200 "+py+"' to='"+strTo+"' style='position:absolute;z-index:8'></v:line>");
- group2.insertBefore(newLine);
- if(count%2!=0){
- var newStroke = document.createElement("<v:stroke color='#c0c0c0'>");
- newLine.insertBefore(newStroke);
- var newShape= document.createElement("<v:shape style='position:absolute;left:0;top:"+(py-50)+";WIDTH:1000px;HEIGHT:200px;z-index:8' coordsize='21600,21600' fillcolor='white'></v:shape>")
- group2.insertBefore(newShape);
- var newText = document.createElement("<v:textbox id='tx"+textPoint+"' inset='3pt,0pt,3pt,0pt' style='font-size:10pt;v-text-anchor:bottom-right-baseline'></v:textbox>");
- newShape.insertBefore(newText);
- newText.innerText=textPoint;
- str += 1;
- textPoint = Math.round(temp*str);
- }
- else{
- var newStroke = document.createElement("<v:stroke dashstyle='dot' color='black'/>");
- newLine.insertBefore(newStroke);
- }
- count++;
- }
- }
- function drawLinesY()
- {
- //画X轴上的刻度
- var textPoint= "";
- var fColWidth = 4200 / (dataarray[0].length + 1)
- var iCols = dataarray[0].length + 1
- for(var i=1;i<=iCols;i++){
- if(i != iCols) textPoint = dataarray[0][i-1]
- else textPoint = ""
- var py=170+ i * fColWidth ;
- var newLine = document.createElement("<v:line from='"+py+" 2700' to='"+py+" 2750' style='position:absolute;z-index:8'></v:line>");
- group2.insertBefore(newLine);
- var newStroke = document.createElement("<v:stroke color='black'>");
- newLine.insertBefore(newStroke);
- var newShape= document.createElement("<v:shape style='position:absolute;left:"+(py-50)+";top:2750;WIDTH:200px;HEIGHT:150px;z-index:8' coordsize='21600,21600' fillcolor='white'></v:shape>")
- group2.insertBefore(newShape);
- var newText = document.createElement("<v:textbox id='ty"+textPoint+"' inset='0pt,0pt,0pt,0pt' style='font-size:9pt;v-text-anchor:top-right-baseline'></v:textbox>");
- //生成文本筐
- newShape.insertBefore(newText);
- newText.innerHTML= textPoint;
- }
- }
- function drawBar(v,t,color)
- {
- var textPoint= "";
- var fColWidth = 4200 / (dataarray[0].length + 1);
- var iCols = dataarray[0].length + 1;
- for(var i = 0; i < iCols - 1; i ++)
- {
- if(MaxData < dataarray[1][i]) MaxData = dataarray[1][i];
- dSumData = dSumData + dataarray[1][i];
- }
- if(dSumData == 0) dSumData = 1;
- if(MaxData == 0) MaxData = 1;
- dCs = 2400 / MaxData;
- for(var i = 0; i < iCols - 1; i ++)
- {
- var textPoint = dataarray[1][i];
- var h = dCs * dataarray[1][i];
- var px=2700 - h;
- var py=170 + i * fColWidth + fColWidth / 4 * 3;
- var color1="rgb("+Math.round(Math.random()*255)+","+Math.round(Math.random()*255)+","+Math.round(Math.random()*255)+")";
- //alert(color1)
- var newShape= document.createElement("<v:rect style='position:absolute;left:"+py+";top:"+px+";WIDTH:" + fColWidth / 2 + "px;HEIGHT:"+h+"px;z-index:9;border-width:0' fillcolor='" + color1 + "' title = '本项数值为:" + aoMember[i] + " 总和为:" + count + " 百分比:" + (aoPercent[i]) + "%'></v:rect>");
- group2.insertBefore(newShape);
- }
- }
- function drawBars()
- {
- drawLinesX(4500);
- //画横线
- drawLinesY();
- //画X轴的刻度
- drawBar(2.5,1,"blue");
- }
- function window.onload(){
- InintaoPercent();
- drawBars();
- }
- </script>
- <body style="margin: 0px; border: 0px;">
- <table align="center" ID="Table1">
- <tr>
- <td >
- <div class="memo" style="width:700;line-height:23px">
- <center><strong>数据图表</strong></center>
- <br>
- <v:group ID="group2" style="WIDTH:700px;HEIGHT:500px" coordsize="4900,3500">
- <v:line from="200,100" to="200,2700" style="Z-INDEX:8;POSITION:absolute" strokeweight="1pt">
- <v:stroke StartArrow="classic"/>
- </v:line>
- <v:line from="200,2700" to="4500,2700" style="Z-INDEX:8;POSITION:absolute" strokeweight="1pt">
- <v:stroke EndArrow="classic"/>
- </v:line>
- <v:rect style="WIDTH:4600px;HEIGHT:2900px" coordsize="21600,21600" fillcolor="white" strokecolor="black">
- <v:shadow on="t" type="single" color="silver" offset="4pt,3pt"></v:shadow>
- </v:rect>
- <v:shape style="position:absolute;left:50;top:2650;WIDTH:1000px;HEIGHT:200px;z-index:8" coordsize="21600,21600" fillcolor="white">
- <v:textbox id="text1" inset="3pt,0pt,3pt,0pt" align="center" style="font-size:10pt;v-text-anchor:bottom-center-baseline">0</v:textbox>
- </v:shape>
- </v:group>
- </div>
- </td>
- </tr>
- </table>
- </body>
上面是生成图表的代码,调用的代码如下:
showPercent.html?counts=a,b,c,d,e,f&members=3,5,2,7,4,5
相关推荐
JavaScript 和 VML(Vector Markup Language)技术在网页中创建统计图表是一种早期的解决方案,尤其在SVG(Scalable Vector Graphics)在所有现代浏览器得到广泛支持之前。本教程将深入探讨如何利用这两种技术来构建...
Echarts是一个基于SVG/VML/Canvas的高性能、跨浏览器、跨平台的图表库,支持多种图表类型,如折线图、柱状图、饼图、散点图等。它提供了一套完整的API和交互设计,使得开发者能够方便地进行图表配置和定制,实现...
在IT领域,尤其是在数据可视化和前端开发中,3D柱状统计图是一种常见的图表类型,用于展示多维度数据。这个程序“3D柱状统计图,支持旋转功能”由小可编写,它能够根据XML数据动态创建具有3D效果的柱状图,并且具备...
总之,使用VML在ASP.NET中创建统计图是一种轻量级且灵活的方法,尤其适用于对性能和依赖管理有较高要求的项目。尽管现在SVG更为广泛地被采用,但在某些情况下,VML仍然不失为一个有效的解决方案。
在JavaScript中使用VML绘制柱状图,主要步骤包括: 1. 创建一个包含图表的容器元素,如`<div>`。 2. 为容器元素添加VML样式,使其能够显示VML图形。 3. 使用JavaScript动态创建VML形状(如`<v:shape>`),并设置其...
常见的统计图有折线图、柱状图、饼图、散点图和直方图等。 4. **直方图**:直方图与条形图类似,但区别在于其主要用于连续数据的分布,通过矩形的宽度表示数据的区间,高度则表示该区间的数据量。直方图可以帮助...
在给定的资源中,"asp\asp.net统计图VML"是一个关于如何在ASP和ASP.NET中创建统计图表的教程或组件,主要涵盖了饼图、曲线图和柱图这三种常见的数据可视化形式。 VML,全称Vector Markup Language,是一种用于在...
这种图表库可以用来显示各种类型的统计数据,如柱状图、折线图、饼图等,帮助用户更好地理解和分析数据。 首先,了解VML的基本概念是必要的。VML元素通常被嵌入HTML文档中,通过定义形状(如矩形、线条、曲线)、...
在“自制:ASP.NET利用VML绘制统计图”这个主题中,我们将探讨如何利用VML技术在ASP.NET环境下生成3D饼图和3D柱状图,以实现立体视觉效果。 1. **VML介绍** VML是Visual Markup Language的缩写,它允许开发者在HTML...
在本主题中,我们关注的是如何使用C#语言进行VML绘制统计图表,如柱状图和条形图。通过反编译已有的库并结合个人经验,我们可以更深入地理解VML的底层工作原理,以便于自定义开发和学习。 首先,让我们了解一下VML...
在本文中,我们将深入探讨如何利用JavaScript和VML(Vector Markup Language)技术来实现3D柱状图,并针对IE浏览器的兼容性进行讲解。 首先,让我们了解一下VML。VML全称为矢量标记语言,它是一种用于在网页上绘制...
总的来说,这个网友的三维统计图项目展示了早期Web开发中的一些技术,如VML和JavaScript,以及如何利用它们在受限环境下创建可视化效果。虽然如今这些技术已经被SVG和WebGL等更先进的标准取代,但它们在历史上的作用...
在"asp+vml(2版)"这个压缩包中,很可能是包含了使用VML和ASP结合创建统计图的示例代码或者教程。这些资源可以帮助开发者了解如何在不依赖额外JavaScript库或插件的情况下,利用服务器端的ASP技术来生成统计图形。 ...
"使用js画统计图"这个主题涉及到的是如何利用JavaScript库或者自定义代码来创建各种图表,如柱状图、折线图、饼图、散点图等,以便直观地展示数据。这种技术的优点在于其灵活性、兼容性和无需依赖额外插件。 ...
**ECharts前端统计图DEMO** 是一个基于jQuery和ECharts的统计图表示例集合,旨在帮助开发者快速理解和应用ECharts库。ECharts是一款由百度开源的、基于JavaScript的数据可视化库,它支持丰富的图形类型,如柱状图、...
柱状图是一种常用的统计图表,用于比较不同类别的数据。在AmCharts中,柱状图由一系列垂直或水平的矩形(柱子)表示,每个柱子的高度(或长度)对应着数据值的大小。 ### 三、创建柱状图的步骤 1. **引入库文件**...
**Highcharts**:Highcharts是一个基于JavaScript的开源图表库,支持多种图表类型,包括柱状图、折线图、饼图等。它允许开发者创建高度自定义的、互动性强的图表,适用于Web和移动设备。Highcharts采用SVG(可缩放...
- **丰富的图表类型**:提供多种图表类型,如折线图、柱状图、饼图、散点图、面积图、热力图等,满足不同数据展示需求。 - **交互性**:图表具有良好的交互性,允许用户通过点击、悬浮、缩放和滚动来探索数据。 -...
FusionCharts是一款强大的JavaScript图表库,它提供了丰富的图表类型,如饼图、折线图、柱状图等,用于创建交互式的数据可视化解决方案。在这个例子中,你将找到如何使用FusionCharts来创建这些基本图表的实践应用。...