微博: frontnode
QQ: 2080432723
开源地址: github.com/frontnode
Web开发,流程改进,最佳实践,性能优化
一般的数据图表都可以拆分成最基本的两类元素
我们暂且将其分别定义为指标和指标值。
比如一个性别分布中,男性占比30%,女性占比70%,
那么指标就是男性、女性,指标值对应为30%、70%。
时间
通过时间的维度来查看指标值的变化情况,一般通过增加时间轴的形式,也就是常见的趋势图。
空间
当图表存在地域信息并且需要突出表现的时候,可用地图将空间可视化,地图作为主背景呈现所有信息点。
下图是一个介绍中国烟民数量的图表:如果只看左半部分中国烟民的数量:32000000,知道数据量级很大,但具体有多大却很难感知;直到看到右半部分:中国烟民数量超过了美国人口总和,这样一对比,对数据的感知就加深了。
交互包括鼠标浮动、点击、多图表时的联动响应等等

Google Chart API工具集中取消了静态图片功能,目前只提供动态图表工具。能够在所有支持SVG\Canvas和VML的浏览器中使用,但是Google Chart的一个大问题是:图表在客户端生成,这意味着那些不支持JavaScript的设备将无法使用,此外也无法离线使用或者将结果另存其他格式,之前的静态图片就不存在这个问题。尽管存在上述问题,不可否认的是Google Chart API的功能异常丰富,如果没有特别的定制化需要,或者对Google视觉风格的抵触,那么你大可以从Google Chart开始。
Flot是一个优秀的线框图表库,支持所有支持canvas的浏览器(目前主流的浏览器如火狐、IE、Chrome等都支持)。
Raphaël是创建图表和图形的JavaScript库,与其他库最大的不同是输出格式仅限SVG和VML。SVG是矢量格式,在任何分辨率下的显示效果都很好。
D3(Data Driven Documents)是支持SVG渲染的另一种JavaScript库。但是D3能够提供大量线性图和条形图之外的复杂图表样式,例如Voronoi图、树形图、圆形集群和单词云等。虽然D3能够提供非常花哨的互动图表,但你在选择数据可视化工具时,需要牢记的一点是:知道在何时保持简洁。
作为用来分析大数据集的统计组件包,R是一个非常复杂的工具,需要较长的学习实践,学习曲线也是本文所介绍工具中最陡峭的。但是R拥有强大的社区和组件库,而且还在不断成长。当你能驾驭R的时候,一切付出都是物有所值的。
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"><script/>
数据
var dataset = [1,2,3,4,5];
d3.select("body").selectAll("p")
.data(dataset)
.enter()
.append("p")
.text("New paragraph!");
结果如下图
将最后一行修改为
.text(function(d) { return d; });
结果如下
我们用数据填充了每个段落,机关都在data() 方法里。在连缀方法中,只要调用data() 了,就可以随时创建一个接收d 为输入的匿名函数。与当前元素对应,方法data() 确保了每个d 都会被赋予原始数据集中的一个值。随着D3 遍历每个元素,“当前元素”的这个值也会跟着变化。
var svg = d3.select("body")
.append("svg")
.attr("width", 500)
.attr("height", 50);
var dataset = [ 5, 10, 15, 20, 25 ];
var circles = svg.selectAll("circle")
.data(dataset)
.enter()
.append("circle");
最后设置图形的样式
circles.attr("cx", function(d, i) {
return (i * 50) + 25;
})//设置x的位置
.attr("cy", 50 / 2)//设置y的位置
.attr("r", function(d) {
return d;
})//设置圆的半径
.attr("fill", "yellow")//设置填充颜色
.attr("stroke", "orange")//设置圆的边缘线颜色
.attr("stroke-width", function(d) {
return d / 2;
});//设置圆的边缘线的宽度
结果如下图
sudo vi /etc/apt/sources.list
添加资源
deb http://mirrors.ustc.edu.cn/CRAN/bin/linux/ubuntu/ precise/
安装
apt-get update
apt-get install r-base
apt-get install r-base-dev
R q() curve(x^2, 0, 100);
curve(x/20,0,20,lty=0); for (i in 0:20) {points(i,0.5,pch=i);}
x=seq(0, 10, 0.1); y=sin(x)+rnorm(101); #x的值必须排序,rnorm(n)则是按正态分布随机产生n个数据。
plot(x,y); #做散点图