用html5做的柱状图,使用h5新特性canvas简单生成一个柱状图
要展现一种数据,最直观的方式便是生成数据图,图例永远要比文字说明更加的清晰明了。因此,今天来生成一个利用canvas画布上的柱状图。
首先,先设置一个x,y轴,以便于柱状图的生成
var canvas = document.getElementById('mycanvas')
var ctx = canvas.getContext('2d')
//获取画布的id。以及声明画布的书写方式为2d
//创建备用的数据
var data = {
x: ["一月", "二月", "三月", "四月", "五月", "六月"],
y: ["0", "100", "200", "300", "400", "500", "600", "700", "800", "900", "1000"],
val: ["300", "210", "120", "560", "800", "660"],
col: ["red", "green", "blue", "skyblue", "limegreen", "pink"]
}
//画出x,y轴,并提前设置居中样式
ctx.translate(10, 900)
ctx.beginPath();
ctx.moveTo(10, 0);
ctx.lineTo(810, 0);
ctx.strokeStyle = 'blue';
ctx.closePath()
ctx.stroke()
ctx.beginPath();
ctx.moveTo(10, 0);
ctx.lineTo(10, -800);
ctx.strokeStyle = 'blue';
ctx.closePath()
ctx.stroke()
ctx.textAlign='center';
ctx.textBaseline='middle'
准备完成后,开始绘出柱状图
for (var i = 0; i < data.val.length; i++) {
ctx.beginPath();
ctx.moveTo(60 * (i + 1), 0);
//画出柱状图的位置,并给柱状图设置一个宽度
ctx.lineWidth = 40;
ctx.lineTo(60 * (i + 1), -data.val[i] / (10 / 8));
//按照比例对柱状图实际的尺寸进行缩小
ctx.strokeStyle = data.col[i];
//将数据,以及x轴参照数据点写入
ctx.fillText(data.x[i],60*(i+1),-data.val[i]/(10/8)-10)
ctx.closePath()
ctx.stroke()
}
绘制出y轴的数据点
for (var j = 0; j < data.y.length; j++) {
ctx.beginPath();
ctx.moveTo(0, -80*j);
ctx.lineTo(10, -80 * j);
ctx.fillText(data.y[j],20,-80*j)
ctx.strokeStyle = 'blue';
ctx.closePath();
ctx.stroke();
}
完整代码:
Document
var canvas = document.getElementById('mycanvas')
var ctx = canvas.getContext('2d')
//获取画布的id。以及声明画布的书写方式为2d
//创建备用的数据
var data = {
x: ["一月", "二月", "三月", "四月", "五月", "六月"],
y: ["0", "100", "200", "300", "400", "500", "600", "700", "800", "900", "1000"],
val: ["300", "210", "120", "560", "800", "660"],
col: ["red", "green", "blue", "skyblue", "limegreen", "pink"]
}
//画出x,y轴,并提前设置居中样式
ctx.translate(10, 900)
ctx.beginPath();
ctx.moveTo(10, 0);
ctx.lineTo(810, 0);
ctx.strokeStyle = 'blue';
ctx.closePath()
ctx.stroke()
ctx.beginPath();
ctx.moveTo(10, 0);
ctx.lineTo(10, -800);
ctx.strokeStyle = 'blue';
ctx.closePath()
ctx.stroke()
ctx.textAlign='center';
ctx.textBaseline='middle'
for (var j = 0; j < data.y.length; j++) {
ctx.beginPath();
ctx.moveTo(0, -80*j);
ctx.lineTo(10, -80 * j);
ctx.fillText(data.y[j],20,-80*j)
ctx.strokeStyle = 'blue';
ctx.closePath();
ctx.stroke();
}
for (var i = 0; i < data.val.length; i++) {
ctx.beginPath();
ctx.moveTo(60 * (i + 1), 0);
//画出柱状图的位置,并给柱状图设置一个宽度
ctx.lineWidth = 40;
ctx.lineTo(60 * (i + 1), -data.val[i] / (10 / 8));
//按照比例对柱状图实际的尺寸进行缩小
ctx.strokeStyle = data.col[i];
//将数据,以及参照数据点写入
ctx.fillText(data.x[i],60*(i+1),-data.val[i]/(10/8)-10)
ctx.closePath()
ctx.stroke()
}
用html5做的柱状图,使用h5新特性canvas简单生成一个柱状图相关推荐
- html5新特性表单控件,老生常谈h5新特性1:(表单)
老生常谈h5新特性1:(表单) HTML5新特性 -- 十大新特性 (1)新的语义标签和属性 (2)表单新特性 (3)视频和音频 (4)Canvas绘图 (5)SVG绘图 (6)地理定位 (7)拖放A ...
- 前端16天--IFC、BFC、H5新特性、选择器、伪类元素、扩展盒模型、圆角、盒子阴影等--2021/4/21
前端16天–IFC.BFC.H5新特性–2021/4/21 HTML5是HTML标准的最新演进版本: 1.是一个新的HTML语言版本包含了新的元素.属性和行为. 2.同时包含了一系列可以被用来让web ...
- 前端面试题二:ES6/7/8新特性、性能优化、数据交互、H5新特性
目录 一.ES6/7/8新特性 二.性能优化 三.数据交互 四.H5新特性 一.ES6/7/8新特性 1.ES6中新增了哪些数据类型? Symbol类型(基本) Set类型(复杂) Map类型(复杂) ...
- 【面试】面试官:说一说H5新特性
H5 新特性 1.拖拽释放(Drap and drop) API ondrop拖放是一种常见的特性,即抓取对象以后拖到另一个位置 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放 2.自定义 ...
- H5新特性(一)——音视频标签
H5新特性--音视频标签 大家都有在网页中浏览音频和视频的经历,在HTML5之前,对视频和音频没有一个标准,因此在网页中看到的视频,都是通过第三插件的方式嵌入的,可能是QuickTime,也可能是 R ...
- h5新特性DOMAST的简单理解
h5新特性 1.一些语义化标签 header.footer.nav.aside.article.section.hgroup(h1~h6的集合) document.createElement('hea ...
- html5新特性 gps,老生常谈H5新特性:地理定位
HTML5新特性 1.新的语义标签 2.表单2.0 3.视频和音频 4.Canvas绘图 5.SVG绘图 6.地理定位 7.拖放API 8.WebWorker 9.WebStorage 10.WebS ...
- 前端面试html5新特性,前端面试基础-html篇之H5新特性
h用能境战求道,重件开又是正易里是了些之框5的新特性(目前个人所了解)如求圈分件圈浏第用代是水刚道.的它还下 语义化标签 表单新特性 视频(vi朋不功事做时次功好来多这开制的请一例农在deo)和音频( ...
- HTML5学习01-基础讲解、新特性
一.基础讲解 二.新特性 三.兼容性 HTML5为了保证兼容前面各个版本,语法达到了最大程度的兼容设计. (1).不允许写结束标记的元素: area.base.br.col.command.embed ...
最新文章
- vim/vi的使用(Ubuntu12.04)
- swiper左右切换按钮无效_BMD为ATEM切换台发布新的2 M/E和4M/E控制面板
- python loop call soon_python3-asyncio 学习笔记 1 -- call_soon
- oracle 取整的几种方法
- 基于NEO的私链(Private Blockchain)
- Windows系统下,好用的录屏软件工具/屏幕录制工具
- 中国制造2025变革,背后的大数据来龙去脉
- Nexus 安装 使用说明
- 用FPGA实现视频中物体边缘二值化
- jfinal中使用freemarker
- Junit学习笔记(二): 源码分析(2)-命令和组合模式
- poi实现Excel文件导出【SpringBoot篇】
- 正则表达式的语法汇总
- 计算机产品校园营销方案,惠普笔记本电脑校园营销策划方案.doc
- Hugo Travis
- 解决IOP 使用latex模板出现iopart.cls及setstack.sty未找到的问题,环境为texlive+texstudio
- 关于PDU电源插座,你了解多少?
- 怎样让手机打电话显示不在服务器,不想接电话,不想开飞行模式,教你一招打电话手机变空号...
- 查询注册表的命令行工具reg
- 一次与sql注入 webshell 的美丽“邂逅”
热门文章
- 现代氧吧智能云音响,为何京东众筹能破百万
- lamp mysql大小限制_LAMP---Mysql 参数说明
- mybatis 分页
- 本地储存 localstorage sessionstorage 的兼容性,API,特点
- iOS 把数据库文件打包到mainbundle中,查找不到路径的解决办法
- JS 当前日期减一天
- 双非计算机科学与技术大学排行,这2所双非大学,计算机专业全国有名,实力不输211,考上就赚!...
- 最新UI界面漫画小程序源码,带后台支持流量主,全自动更新
- 合并图层和拼合图稿,锁定与解锁图层,显示与隐藏图层,剪切蒙版,了解图层样式面板,创建图形样式,编辑图形样式
- 创作手机短片技巧总结