canvas 是 html5 支持的一个标签,用于图形的绘制。canvas 标签仅仅提供了图形的容器,必须通过 js 脚本来绘制。

比如,绘制一个简单的矩形:

矩形.png

var c=document.getElementById("myCanvas");

var ctx=c.getContext("2d");

ctx.fillStyle="#FF0000";

ctx.fillRect(0,0,150,75);

这里就不做入门普及了,可直接搜索相关 API 查看。

比如,我要做一个折线的效果:

lineCanvas.png

首先,获取到画布的上下文,getContext("2d");

然后,根据要显示的数值,调用上下文的 lineTo() 方法画出一条条的线,这些线连接起来就形成了趋势线的效果,

mycanvas

line canvas

window.onload = function () {

var arr = [40, 50, 30, 70, 80, 40, 90, 60, 80, 60, 69, 80, 80, 40, 50, 30, 70, 80, 40, 77, 80, 70, 60, 50, 80];

drawLine.minCurve(arr);

}

var drawLine = {};

!function () {

//求数组最大值

Array.prototype.max = function () {

var max = this[0];

var len = this.length;

for (var i = 1; i < len; i++) {

if (this[i] > max) {

max = this[i];

}

}

return max;

}

function draw(arr) {

var width = 300, height = 200;

var maxV = arr.max();

//计算y轴增量

var yStep = height / maxV;

console.log(maxV);

var domCan = document.getElementById("myCanvas");

var context = domCan.getContext("2d");

context.beginPath();

context.lineWidth = 2;

context.strokeStyle = "#395B73";

//context.moveTo(0, 0);//开始画图的位置

var x_space = width / (arr.length - 1);//水平点的间隙像素

//context.lineTo(15, 60); x表示水平向右延伸,y表示垂直高度位置,从画板最左上角(0,0)开始计算坐标

var xLen = 0;

for (var i = 0; i < arr.length; i++) {

var yValue = arr[i];//纵坐标值

xLen += x_space;

var yPont = height - yValue * yStep;

if (i == 0) {

xLen = 0;

}

var m = xLen + "," + yPont;

console.log(m);

context.lineTo(xLen, yPont);

}

context.stroke();

context.closePath();

}

drawLine.minCurve = draw;

}();

下面来个组合练习,我要实现动态的效果,就是折线是动态生成的;这个也不难,就是设置一个定时器,一段一段触发就行了;那么,咱们再增加一点难度,我要同时展示 4 个趋势折线,4 个折线都与时间关联,也就是同一个时间点显示 4 组不同的数据,同时,还要支持时间段的切换,比如 1 分钟和 10 分钟不同的时间段;像下面这样:

canvas.gif

你可以尝试自己实现一下,这里提供一个前端的实现参考,前端代码下载。

html5画布画出折线图,canvas 画出动态折线图相关推荐

  1. PHP画a梦,使用canvas画“哆啦A梦”时钟的代码

    这篇文章主要介绍了JavaScript学习小结之使用canvas画"哆啦A梦"时钟的相关资料,需要的朋友可以参考下 前言:今天看完了Js书的canvas画布那张,好开心~又是心爱的 ...

  2. Android画布画圆,android_studio的canvas画圆

    1.怎样设置代码 package com.example.rk1130; import android.content.Context; import android.graphics.Canvas; ...

  3. 怎么用canvas画秒针_用canvas画一个钟表

    body{ background: #000000; } #c1{ background: #FFFFFF; } span{color: #FFFFFF;} var oC=document.getEl ...

  4. python画心电图_用canvas画心电图

    效果图: 思路: ​1.模拟点(如果你有真实的数据,那就是把数据幻化成canvas对应的坐标点) ​ 模拟点时注意的点就是高起部分需要对称以及为了好看要随机出现上上下下 2.画线 ​ 画线需要注意有一 ...

  5. 【前端学习笔记—canvas标签和使用canvas画哆啦A梦案例】

    目录 canvas 1. canvas是H5新增标签 2.使用canvas画出矩形 (1)第一步,要新建画布 (2)第二步,要创建一支画笔 (3)第三步,用canvas画出矩形 3. 如何使用canv ...

  6. html绘制直角坐标系,canvas画直角坐标系

    canvas画直角坐标系 2017年3月17日 利用canvas画直角坐标系其实挺简单的,只要确定了原点(0,0)点,也可以是其他的点,只要自己知道那是原点就行!知道了原点再分别向X轴方向和Y轴方向画 ...

  7. 使用Canvas扩展绘制动态ASP.NET Core Blazor条形图

    目录 介绍 背景 使用代码 步骤1:创建ASP.NET Core Blazor服务器应用程序 运行测试应用程序 步骤2:安装软件包 步骤3:建立模型类别 创建服务类 步骤4:将服务添加到Startup ...

  8. unity3d 动态合批设置_【CocosCreator】突破动态合图

    1. 动态合图的默认规则 引擎中对动态合图的描述如下: 它能在项目运行时动态的将贴图合并到一张大贴图中.当渲染一张贴图的时候,动态合图系统会自动检测这张贴图是否已经被合并到了图集(图片集合)中,如果没 ...

  9. pyecharts绘制省级地图(Map地图、Geo动态涟漪散点图、Geo动态轨迹图)

    Ⅰ.原始数据 第七次全国人口普查(广东人口数据) 数据来源:广东统计年鉴 城市 人口 广州市 18676605 深圳市 17560061 珠海市 2439585 汕头市 5502031 佛山市 949 ...

最新文章

  1. php导出excel数据使用csv替代xls格式
  2. IDE to AHCI/RAID 蓝屏补丁
  3. 1066 Root of AVL Tree (25 分)【难 / 知识点: 平衡树 未完成】
  4. 手把手教你手动创建线程池
  5. build.xml引用其它文件的任务
  6. Java开发之上班摸鱼!写最少的代码!
  7. Exchange2010安装过程中先决条件报错得处理方法
  8. maven配置(myeclipse版)
  9. linux junit
  10. 13. PHP OPcache
  11. UGUI Text组件扩展
  12. 状语从句不是简单句_简单句、并列句、复合句
  13. Excel双样本T检验之异方差检验
  14. ROC评分中概念之阳性预测值/阴性预测值计算方法
  15. ζ(2)的夹逼代数证明
  16. PS基础教程[6]如何快速制作一寸照片
  17. android老人字体变大,适合老年人用的安卓手机软件 一键让Android字体变大
  18. 如何把Dom对象转换成jQuery对象,如何把jQuery对象转换成Dom对象
  19. 2023软考高项-你必须知道的6件事(脱水版)【附超好用的记忆法】
  20. 02现代软件工程作业

热门文章

  1. 修改传奇私服服务器,传奇SF 肿么修改服务器时间
  2. 删除360天擎(企业版)---不知道密码情况下
  3. iframe中加入html,HTML中IFRAME标签的使用
  4. 鸿蒙系统的软件怎么下载,怎么下载鸿蒙系统?
  5. Android EditText设置边框
  6. 怎么更改锁定计算机背景图片,电脑锁屏背景图片如何更改
  7. Python实现计算机的自动化控制!
  8. 我九点钟上计算机课用英语怎么说,9点18分的英语怎么写(9点18用英语怎么说二种)...
  9. webpack、sass-loader、npm audit fix、npm audit fix --force兼容性问题
  10. v90绝对值编码器回零_由“V90使用绝对值编码器掉电后位置丢失”所想到的