数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通讯息。web
基于XML来绘制矢量图形,SVG能够经过定义必要的线和形状来建立一个图形,也能够修改已有的位图,或者将这两种方式结合起来建立图形。 图形和其组成部分能够变形,能够合成,还能够经过滤镜彻底改变外观。canvas
<svg width="200px" height="160px">
<rect width="100%" height="100%" fill="red" />
<circle cx="100" cy="80" r="60" fill="green" />
<ellipse cx="22" cy="20" rx="20" ry="10" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)" />
<text x="100" y="100" text-anchor="middle" fill="white">SVG</text>
<line x1="10" x2="20" y1="0" y2="40" style="stroke-width:3;stroke:rgb(0,0,0)"/>
<polyline points="0,0 0,20 20,20 20,40 40,40 40,60" style="stroke:red;stroke-width:2"/>
<path d="M 20 130 Q 40 105, 50 130 T 90230" style="stroke-width:1;stroke:rgb(0,0,0)"/>
</svg>
复制代码
<path d="M 20 130 m 10 10 Q 40 105, 50 130 T 90230" style="stroke-width:1;stroke:rgb(0,0,0)"/>
复制代码
path元素是SVG基本形状中最强大的一个。 它是经过属性d定义的,d的值是一个“命令+参数”的序列小程序
M x y // move to
L x y (or l dx dy) // line
H x (or h dx) // H,绘制平行线。V,绘制垂直线
V y (or v dy)
C x1 y1, x2 y2, x y (or c dx1 dy1, dx2 dy2, dx dy) // 贝塞尔曲线
A rx ry x-axis-rotation large-arc-flag sweep-flag x y // 弧线
复制代码
canvas是一个可使用脚本(一般为JavaScript)来绘制图形的 HTML 元素.微信小程序
<canvas id="canvas" width="150" height="150"></canvas>
复制代码
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d'); //渲染上下文
//矩形
ctx.fillStyle = "rgb(200,0,0)";
ctx.fillRect (10, 10, 55, 50);
//线
ctx.beginPath();
ctx.moveTo(75,50);
ctx.lineTo(100,75);
ctx.lineTo(100,25);
ctx.fill();
//圆
ctx.arc(75,75,50,0,Math.PI*2,true);
// 二次贝塞尔曲线
ctx.beginPath();
ctx.moveTo(75,25);
ctx.quadraticCurveTo(25,25,25,62.5);
ctx.quadraticCurveTo(25,100,50,100);
ctx.quadraticCurveTo(50,120,30,125);
ctx.stroke();
复制代码
选择元素: 基于DOM进行一些操做,选择DOM,修改属性等 数据类型: 对原始数据进行处理 格式化:格式化显示数据,如日期时间格式等 加载数据:提供基本的http请求方法 数据映射:定义两种数据的转换关系 图形几何:用图形表示数据 布局:定义图形之间的排列关系 动态交互:响应事件,动画效果等浏览器
通常绘制步骤:准备数据,建立DOM, 绑定数据,设置属性bash
var data = [30, 86, 168, 281, 303, 365];
d3.select(".chart")
.selectAll("div")
.data(data)
.enter()
.append("div")
.style("width", function(d) { return d + "px"; })
.text(function(d) { return d; });
复制代码
chart:图表区、图形区和通用图表配置选项 colors:图表数据列颜色配置,是一个颜色数组 legend:图例,用不一样形状、颜色、文字等 标示不一样数据列,经过点击标示能够显示或隐藏该数据列 loading:加载中,加载选项控制覆盖绘图区的加载屏的外观和文字 navigation:导航,导出模块按钮和菜单配置选项组 series:数据列,图表上一个或多个数据系列 title:标题,包括即标题和副标题,其中副标题为非必须的, tooltip:数据点提示框,当鼠标滑过某点时,以框的形式提示改点的数据 Axis:坐标轴,包括x轴和y轴微信