<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>svg</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
</body>
</html>
<script type="text/javascript">
(
function(){
var arr = new Array();
arr.push({x:0,y:10});
arr.push({x:2,y:2});
arr.push({x:4,y:8});
arr.push({x:6,y:5});
arr.push({x:8,y:7});
arr.push({x:10,y:0});
//最大值和最小值构成的矩形
function ChartRect(){
this.maxX = null;
this.minX = null;
this.maxY = null;
this.minY = null;
}
function Point(){
this.x = 0;
this.y = 0;
}
//绘制图像
function draw(width,height,arr,xLabel,yLabel,xTages,yTages,bottom,left){
var rect = getChartRect(arr);
var svg = createChart(500,400,'测试绘图');
var points = "";
//TODO draw x,y labels and tags
var unitY = (height-bottom-20)/(rect.maxY-rect.minY);
var unitX = (width-left-20)/(rect.maxX-rect.minX);
for(var i = 0; i < arr.length ; i++){
var pp = calPosition(arr[i],left,bottom,height,unitX,unitY)
points = points + pp.x + "," + pp.y + " ";
}
var line = document.createElementNS('http://www.w3.org/2000/svg','polyline');
line.setAttribute("points",points);
line.setAttribute("fill","white");
line.setAttribute("stroke","red");
line.setAttribute("stroke-width","2");
svg.appendChild(line);
var xl = createLine({x:left,y:0},{x:left,y:height});
svg.appendChild(xl);
var yl = createLine({x:0,y:height-bottom},{x:width,y:height-bottom});
svg.appendChild(yl);
}
function createLine(start,end){
var line = document.createElementNS('http://www.w3.org/2000/svg','line');
line.setAttribute("x1",start.x);
line.setAttribute("y1",start.y);
line.setAttribute("x2",end.x);
line.setAttribute("y2",end.y);
line.setAttribute("fill","white");
line.setAttribute("stroke","blue");
line.setAttribute("stroke-width","2");
return line;
}
//根据原始点获取坐标位置
function calPosition(po,left,bottom,height,unitX,unitY){
var point = new Point();
var oY = height-bottom;
var oX = left;
point.x = oX + po.x * unitX;
point.y = oY - po.y * unitY;
return point;
}
//var px = calPosition({x:10,y:19},10,10,400,10,10);
//alert(px.x + ' ' + px.y);
draw(500,400,arr,'x','y','xt','yt',10,10);
//得到矩形
function getChartRect(arr){
var rect = new ChartRect();
for(var i = 0;i<arr.length;i++){
var p = arr[i];
if(rect.maxX == null || p.x > rect.maxX){
rect.maxX = p.x;
}
if(rect.minX == null || p.x <rect.minX){
rect.minX = p.x;
}
if(rect.maxY == null || p.y > rect.maxY){
rect.maxY = p.y;
}
if(rect.minY == null || p.y <rect.minY){
rect.minY = p.y;
}
}
return rect;
}
//创建绘图
function createChart(width,height,title){
var svg=document.createElementNS('http://www.w3.org/2000/svg','svg');
svg.setAttribute("height",height);
svg.setAttribute("width",width);
var header = document.createElementNS('http://www.w3.org/2000/svg','text');
header.setAttribute("id","headerx");
header.setAttribute("x",10);
header.setAttribute("y",10);
header.textContent = "报表测试";
header.setAttribute("fill",'black');
svg.appendChild(header);
var body=document.getElementsByTagName('body')[0];
body.appendChild(svg);
return svg;
}
}
)();
</script>
仅仅在chrome上测试过。
- 大小: 18.1 KB
分享到:
相关推荐
纯Java动态生成SVG饼图与JFreeChart超强功能生成SVG图表
Ajax在实时绘制SVG图表中的应用研究及实例详解
jquery.graphviz.svg, 使 graphviz svg图表响应响应的jquery插件 jquery.graphviz.svg可以使Graphviz的输出更加交互和易于浏览的jQuery插件。 使具有以下特性的功能变得容易:突出显示节点/边放大/缩小图形导航- ...
利用SVG和XSLT实现统计图表的源代码
HTML5SVG滑块拖动曲线图表代码是一款可以通过鼠标拖动滑杆来选取需要统计的数据范围曲线图代码。 <html lang="en" > <head> <meta charset="UTF-8"> <title>HTML5SVG滑块拖动曲线...
本文基于对SVG矢量图表生出系统的实现做了详细的分析并实现了它,同时还分析了其他的技术特点
矢量格式转换程序,基于JAVA实现的SVG转EMF的的示例代码,下载后导入到eclipse即可运行。
自己工作外时间写的一个svg图形显示程序,带源代码放出,详细的说明可看我的博客.南瑞的open3000导出的svg图形是支持的.在data/graph目录下带一张工程中的svg图,大家可以看看效果.
这是一款简单直观的HTML5 SVG曲线图表代码,可以通过鼠标拖动滑杆来选取时间段查看需要统计的数据范围。
svg代码与css代码互相转换,并压缩
之前我们也分享过几个HTML5饼状图表应用,像HTML5 Canvas饼状图表,可以很清晰的展示各个数据的所占比例。今天要分享的这款HTML5...这款HTML5环形图表是利用SVG实现的,图表数据在初始化的时候将出现非常酷的动画效果。
一个观赏性较好的svg 实现的loading动画效果 其中调用的CSS、js内容较多,不适合用于实际项目中,所以说比较适合于观赏 且低版本浏览器支持度也不够好,使用方法这里也就不再赘述 使用方法: 1、将style....
svg实例 代码下载,svg实例 代码下载
格式化的HTML文本转换成SVG文本源代码。利用contenteditable属性,div标签里的文本将可以编辑。借助execCommand,div标签的字体样式可以动态调整。源代码中包含了计算HTML文本结构、判断换行等功能,生成跟HTML所见...
这款HTML5图表应用是一款线性图表,它主要是有SVG构造出来的,这款SVG线性图表可以用不同的颜色绘制出图表的数据区域。适用浏览器:Chrome、Safari、傲游、搜狗. 不支持IE8、360、Firefox、Opera 。建议大家使用火狐...
SVG编辑器 Qt加C++实现,可放缩的矢量图形编辑器
基于SVG的实时监控流程图实现技术.pdf
smile(“表情和压力”示例的代码).xhtml
基于vue的PC组件库和svg的图表组件源码+项目说明.zip基于vue的PC组件库和svg的图表组件源码+项目说明.zip基于vue的PC组件库和svg的图表组件源码+项目说明.zip基于vue的PC组件库和svg的图表组件源码+项目说明.zip基于...