<html>
<head>
<title>javascript绘图</title>
</head>
<body>
<table border="0" width="100%">
<tr>
<td width="100%" style="font-family: 方正舒体; font-size: 18pt; color: #FF0000" class="t1">javascript绘图</td>
</tr>
<tr>
<td width="100%" style="font-family: 幼圆; font-size: 12pt; color: #008000" class="t2">  
如果需要在网页上提供图形化的资料,通常是将其制作成图片,但这样一来网络上的开销就太大了。有什么办法呢?这里向你提供一组javascript函数,来解决这一问题。虽然简单了点,但是对画点线图来说还是绰绰有余的!</td>
</tr>
</table>
<script language="javascript">
IE4 = ! (navigator.appVersion.charAt(0) < "4" || navigator.appName == "Netscape")

var xo=0
var yo=0
var Ox = -1
var Oy = -1

var rad = Math.PI/180
var maxY = 400
var color = "red"

function print(str) {
document.write(str)
}

function orgY(y) {
return maxY-y
}
function outPlot(x,y,w,h) {
print('<span style="position:absolute;left:'+x+';top:'+y+';height:'+h+';width:'+w+';font-size:1px;background-color:'+color+'"></span>')
}

function Plot(x,y) {
outPlot(x,y,1,1)
if(Ox>=0 || Oy>=0) {
ShowLine(Ox,Oy,x-Ox,y-Oy)
}
Ox = x
Oy = y
}

function ShowLine(x,y,w,h) {
if(w<0) {
x += w
w = Math.abs(w)
}
if(h<0) {
y += h
h = Math.abs(h)
}
if(w<1) w=1
if(h<1) h=1
outPlot(x,y,Math.round(w),Math.round(h))
}

function LineTo(x,y) {
Line(xo,yo,x,y)
}

function sign(n) {
if(n>0)
return 1
if(n<0)
return -1
return n
}

function Line(x1,y1,x2,y2) {
x2 = Math.round(x2)
y2 = Math.round(y2)
xo = x2
yo = y2
y1 = orgY(y1)
y2 = orgY(y2)
var str = ""
var i=0

var x = x1
var y = y1
dx = Math.abs(x2-x1)
dy = Math.abs(y2-y1)
s1 = sign(x2-x1)
s2 = sign(y2-y1)

if(dx==0 || dy==0) {
ShowLine(x1,y1,x2-x1,y2-y1)
return
}

if(dx>dy) {
temp = dx
dx = dy
dy = temp
key = 1
}else
key = 0
e = 2*dy-dx

for(i=0;i<dx;i++) {
px = 0
py = 0
Plot(x,y)
while(e>=0) {
if(key==1) {
x += s1
px += s1
}else {
y += s2
py += s2
}
e = e-2*dx
}
if(key==1)
y += s2
else
x += s1
e = e+2*dy
}
}

function MoveTo(x,y) {
Ox = Oy = -1
xo = Math.round(x)
yo = Math.round(y)
}

// 圆
function Cir(x,y,r) {
MoveTo(x+r,y)
for(i=0;i<=360;i+=5) {
LineTo(r*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)
}
}
// 弧形
function Arc(x,y,r,a1,a2) {
MoveTo(r*Math.cos(a1*rad)+x,r*Math.sin(a1*rad)+y)
for(i=a1;i<=a2;i++) {
LineTo(r*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)
}
}
// 扇形
function Pei(x,y,r,a1,a2) {
MoveTo(x,y)
for(var i=a1;i<=a2;i++) {
LineTo(r*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)
}
LineTo(x,y)
}
// 弹出扇形
function PopPei(x,y,r,a1,a2) {
dx = r*Math.cos((a1+(a2-a1)/2)*rad)/10
dy = r*Math.sin((a1+(a2-a1)/2)*rad)/10
x += dx
y += dy
MoveTo(x,y)
for(var i=a1;i<=a2;i++) {
LineTo(r*Math.cos(i*rad)+x,r*Math.sin(i*rad)+y)
}
LineTo(x,y)
}

// 矩形
function Rect(x,y,w,h) {
MoveTo(x,y)
LineTo(x+w,y)
LineTo(x+w,y+h)
LineTo(x,y+h)
LineTo(x,y)
}

// 准星
function zhunxing(x,y) {
var ox = xo
var oy = yo
var oColor = color
color = "#000000"
Line(x-5,y,x+6,y)
Line(x,y-6,x,y+5)
print('<span style="position:absolute;font-size:10pt;left:'+(x+5)+';top:'+orgY(y+5)+';">['+x+','+y+']</span>')
color = oColor
xo = ox
yo = oy
}
// 标注
function biaozhuStr(x,y,s) {
return '<span style="position:absolute;font-size:10pt;left:'+x+';top:'+orgY(y)+';">'+s+'</span>'
}
function biaozhu(x,y,s,t) {
var ox = xo
var oy = yo
var oColor = color
point = "p01.gif"
if(t==1) {
print(biaozhuStr(x-5,y+6,"·"+s))
}
if(t==2) {
print(biaozhuStr(xo+x*Math.cos(y*rad)-10,yo+x*Math.sin(y*rad),s))
}
color = oColor
xo = ox
yo = oy
}

if(IE4) {

// 基本图形
color = "maroon"
Cir(50,40,20)
Arc(100,40,20,60,120)
Pei(150,60,40,240,300)
Rect(200,20,40,40)

// 折线图
color = "#FF0000"
var jd = new Array(
203,232,277,223,271,234,273,284,276,250,267,280
)
MoveTo(30,jd[0]-40)
biaozhu(xo,yo,jd[0])
for(i=1;i<jd.length;i++) {
LineTo(i*30+30,jd[i]-40)
biaozhu(xo,yo,jd[i],1)
}
color = "#C0C0C0"
Line(30,140,i*30+30,140)
Line(30,140,30,260)

// 饼图
color = "#00FF00"
var gc = new Array(
150,120,200,180,180
)
var s = 0
var m = 0
var n = 0
for(i=0;i<gc.length;i++) {
s +=gc[i]
if(gc[i] > m) {
m = gc[i]
n = i
}
}
var k = s/360
var mm = 0
var a =0
for(i=0;i<gc.length;i++) {
b = Math.round((gc[i]+mm)/k)
if(i==n)
PopPei(600,150,100,a,b)
else
Pei(600,150,100,a,b)
biaozhu(60,a+(b-a)/2,Math.round(gc[i]/s*100)+"%",2)
mm = mm+gc[i]
a = b
}

// 十字标注
MoveTo(280,20)
zhunxing(xo,yo)

}else {
document.write("<p> </p><table bgcolor=#FF0000><tr><td><font color=#FFFF00>对不起!您的浏览器不能支持该页的某些功能,请换用IE4.0以上版本的浏览器!谢谢!</font></td></tr></table>")
}
</script>

</body>
</html>

Javascript绘图相关推荐

  1. html 按钮调用javascript,如何使html按钮调用外部javascript绘图功能

    我不知道这是否有用但是..如图所示你可以调用setup()函数中的第二个函数draw(), JSFiddle 更新 HTML: Draw me a circle! JS: btn = document ...

  2. 向 Web 开发人员推荐35款 JavaScript 图形图表库

    图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等.可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web 应用和项目的可靠性. 在这篇文章中,我们收集了3 ...

  3. JavaScript canvas

    简介 HTML5 <canvas> 是绘制 图形/图像 的容器.它本身并没有绘制能力,您必须使用脚本来完成实际的绘图任务(通常是 JavaScript). 如果浏览器不支持<canv ...

  4. 35款 JavaScript 图形图表库

    图表是数据图形化的表示,通过形象的图表来展示数据,比如条形图,折线图,饼图等等.可视化图表可以帮助开发者更容易理解复杂的数据,提高生产的效率和 Web 应用和项目的可靠性. 在这篇文章中,我们收集了3 ...

  5. 35 款 JavaScript 图形图表库

    图表是数据图形化的表示,也就是"通过形象的图表来展示数据,比如条形图,折线图,饼图".几乎每个开发或者项目管理团队都需要图表或者图形来简化 理解,可视化复杂的数据和 web 应用工 ...

  6. JavaScript 王者归来

    JavaScript 王者归来 作者:月影 清华大学出版社 第一部分 概论 第一章 从零开始 程序设计之道无远弗届,御晨风而返 --杰弗瑞.詹姆士 在人类漫漫的历史长河里,很难找到第二个由简单逻辑和抽 ...

  7. JavaScript技术

    ● &运算符_1.htm ● ·JavaScript的脆弱性_1.htm ● ·JavaScript技巧环绕三维文字_1.htm ● ·JavaScript时间显示三大心法_1.htm ● · ...

  8. 给开发者提供的 35 款 JavaScript 图形图表库

    给开发者提供的 35 款 JavaScript 图形图表库 图表是数据图形化的表示,也就是"通过形象的图表来展示数据,比如条形图,折线图,饼图".几乎每个开发或者项目管理团队都需要 ...

  9. 使用Electron.js运行JavaScript图应用程序

    MindFusion.Diagramming for WinForms是一个能帮助你创建工作流和进程图表的.NET控件:数据库实体关系图表:组织图表:对象层次和关系图表:图表和树.它是基于对象-图表框 ...

最新文章

  1. java 中文分词 比较_中文分词工具评估:chinese-segmentation-evaluation
  2. 转贴 DISCUZ7.0 恢复被删除的会员的UID
  3. 如何为你的回归问题选择最合适的机器学习方法?
  4. 树状数组 + 位运算 LA 4013 A Sequence of Numbers
  5. Python中copy,deepcopy,浅拷贝(“=”)和深拷贝(“copy.deepcopy()”)
  6. Struts2之拦截器篇
  7. 03-03 APP 控件定位
  8. 夺命雷公狗---微信开发09----玩转单图文消息回复
  9. 求1+2+3+.....+n
  10. 保存自动修复_模糊照片修清晰,使用自动修复软件,做出专业级老照片修复效果...
  11. xshell 5连接NAT模式的虚拟机
  12. 宋宝华_2010年11-12月Linux驱动和内核讲座PPT下载
  13. AndroidStudio 抓包工具Profiler使用
  14. 数学建模一:层次分析法 附代码详解
  15. 2021-2027全球与中国功能性涂层复合材料市场现状及未来发展趋势
  16. 交通领域主要SCI期刊——2017年JCR
  17. Android 超简单音乐播放器(九)搜索网络歌曲,获得热门榜单(GridView)(易源api的使用)(JSON的解析)(刷新)
  18. VC驿站一个不错的学习编程的地方
  19. 全国翻译资格考试 介绍
  20. 冷链物流行业市场调研 冷链物流将朝着智慧化方向发展

热门文章

  1. 算法分析赛:从数据中挖掘价值,72万奖金,DCIC 2020 大数据赛道来了!
  2. 【廖雪峰python入门笔记】函数
  3. 冠军方案分享:ICPR 2020大规模商品图像识别挑战赛冠军解读
  4. 世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
  5. celery源码分析-wroker初始化分析(上)
  6. ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`meiduo`.`
  7. 爬虫之xpath语法-节点修饰语法
  8. 最全综述 | 图像目标检测
  9. 树莓派安装openCV做图像识别
  10. 浅谈图网络在视觉任务中的应用