Zhihao's Studio.

Zhihao's Studio.

每天进步一点点

D3 on Angular(2)
More Dynamic visualizations上一篇博客介绍了如何借助Angular来完成一个指令,达到可复用目的,但是似乎依然不够动态,我们不得不提前输入想要展示的数组。Angular的最大的特点是双向数据绑定,我们能否借助这个特性来完成更动态的可视化图呢?让Angular帮我们盯着数据,一旦数据改变了,就更新DOM元素。这一切都是Angular帮我们完成的,我们唯一需要做的是指定数据和DOM元素之间的关系,不需要写很多的代码。 双向数据绑定先来用一个简单的例子来展示一下Angular帮我们完成的双向数据绑定,这里用一个简单的例子来展示一下。 12345678//\<bo...
D3 on Angular
Angular与D3前面写了几篇分别介绍AngularJS和D3的博客,他们各司其职,都在各自的一亩三分地里备受好评,那么,他们之间能否完成合作,实现共赢呢?这篇博客就来介绍如何将它们结合起来使用,使得我们的可视化能够更具有模块化、方便复用、具有交互性。 Why Angular使用Angular做可视化有很多原因,但其中最主要的原因还是directives(指令)。 指令使得做可复用的可视化更容易,可以使得我们做的可视化的时候就像使用内置的HTML那么简单,比如我需要一个热力图(后面写博客怎么做),那么我仅仅需要用\\就可以了,想想这种酸爽的滋味吧。即使你不知道热力图是怎么做的,但是你用...
polybrush in d3
前言你是否也像我一样,厌倦了d3默认的矩形的brush,或者你发现矩形的brush已经不能满足你的需要了;又或者你只是单纯的被上面的图片所吸引。不管怎样,我们将介绍一下polybrush。 这篇博客的名字叫polybrush in d3,现在想来,好像有点错误,因为polybrush并不是d3内置的,它是由Geoffrey T. Bell在2012年开发的d3插件,因其方便、好用,所以广受好评。 但无奈目前中文的相关资料和博客几乎没有,因此我来试着写一下如何使用它,以及它的原理,还会包含源码粗略解读,polybrush.js的github参考项目下载地址是:https://gist.g...
associate brush
这篇博客记录了在上一篇博客加入scatterplot matrix的基础上,实现了associate brush的操作,即,从RadViz中brush一块区域,右边16个scatterplot里对应的点都会高亮出来,其他的点将暗淡下去;同样的,从右边16个scatterplot matrix里任一scatterplot cell里brush一些点,另外15个cell以及左边的RadViz里相应的点都会被highlight出来。具体的效果如下图: 代码如下: 123456789101112131415161718192021222324252627282930313233343536373...
数据可视化之散点图
D3.js是当下最火的可视化库之一,这篇博客记录了如何实现一个最基本的散点图,并用三角形表示数据点。 代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283\<!DOCTYPE html\>\<html\>\<head lang="en"\>\<meta ch...
浅谈d3.js中强制异步文件读取同步的四种方法
问题提出在使用d3.js时,我们经常会使用d3.csv()或者d3.json()函数来从文件中读取出数据,不幸的是,偶尔代码的结果并不是我们预料的那样。习惯了过程式编程的我开始的时候也是这样,最让人头疼的是javascript并不会告诉你问题出在哪里了。我第一次遇到这个问题的时候,找了半天bug,确定代码主体部分没有问题之后,我只能开始使用console.log()将变量一个一个的输出到控制台里。第一次遇到这个问题时的图片是这样的:问题出在第72行和第75行,中间几行完全没有对ordertxt进行操作,但是最后的结果就是和预想的输出不吻合,后来找了个其他方法把这个问题给解决了,今天又遇到...
drop and drag in d3
Behavior in d3在d3中,行为被设计成了一种组件,可以创建一系列的事件,并绑定到调用这些行为的元素上。最常见的行为有拖拽与缩放,使用这些行为可以很方便地在拖拽或者缩放的开始、过程中以及结束时达到想要的效果。 这篇博客中,就以拖拽为例,并借助之前实现的热力图,实现拖拽dimension的label以达到reoder维度的效果。为了使用三个阶段,我们会让开始拖拽的时候,维度名变成红色、字体变大来表示强调的效果;在拖拽过程中,让label紧跟鼠标的位置;并且判断最终的位置,交换两个维度,并重新绘制整个热力图。 理想情况下,开始移动的时候的,运行情况应该像下面这样。 drag创建一个...
冷门但实用的d3.js内置函数
前言在d3.js的API文档中,提供了很多内置的函数,但是有些很有用的内置函数却被无情的忽略了,这篇博客就来整理整理这些被遗忘却很实用的函数。希望整理过后,他们不再被遗忘。 selection.classed(name,【value】)value参数可选,如果没有指定,则返回与name参数匹配的第一个非空元素是否绑定了指定的CSS类,true表示绑定,false表示未绑定。如果value指定了的话,就是为selection添加/删除CSS类。这点与selection.attr(name,【value】)非常类似,但是相比而言,就冷门的多,恐怕没有多少人不知道selection.attr(...
用Java生成Json文件
JsonJson是什么 【百度百科】JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。 Json语法规则JSON 语法是 JavaScript 对象表示语法的子集。1.数据在键值对中2.数据由逗号分隔3.花括号保存对象4.方括号保存数组例如:1...
Zhihao Zhang
Happy Hacking
本站总访问量