本篇收录于《数据可视化和图形学》专栏
上文介绍了纹理相关的内容,并使用WebGL进行了3d的实现,emm.....
本篇文章呢算是一个新方向,也算探索写作的一个思路。(应着群内小伙伴的需求来讲讲框架的日常使用) 当然理论知识肯定是依旧会穿插进来。
写作方式会从学习(调研),使用,深入进行混讲。 其实就是我日常使用某一个(框架)库的基础流程分享出来希望帮助到大家。
在开始前简单介绍下今天的主角D3JS
(下面简称D3)
D3的优势 :
今天对于如何学习D3,使用D3,深入D3做一次浅显的探讨。 follow me!
D3
怎么说1.首先看库是否满足业务开发和业务拓展
D3支持SVG(HTML)/Canvas的渲染模式,简单来说一些适合的抽象业务场景
第2,3点问题呢 贴几个图吧
commit的一个情况和issues反馈情况
从成员以及提交曲线来看(截图不全 可以去github查看 还有这个是近一年的,可能不太准 bug太少了哈哈)
首先很多人都处于第1种和第2种情况一直徘徊.这个原因说直白点还是代码搬运工的水平. 当然这个更多属于深入模块 只有知道它是什么才能发挥更大的优势。这方面的分享可能目前来说较少
实现上图只需要下面几个步骤
需要限制画布的一些属性,宽高
var width = 1000;
var height = 500;
var margin = ({
top:20,
right:0,
bottom:30,
left:40
})
const svg = d3.select("body").append("svg");
需要绘制2个刻度尺。
var x =
d3.scaleBand()
.domain(data.map(d=>d.name))
.range([margin.left,width-margin.right])
.padding(0.2)
var y =
d3.scaleLinear()
.domain([0,d3.max(data,d=>d.value)]).nice()
.range([height - margin.bottom,margin.top])
svg.append("g")
.attr("class","x-axis")
.attr("transform",`translate(0,${height- margin.bottom})`)
.call(d3.axisBottom(x).tickSizeOuter(0))
// 设置x轴刻度
svg.append("g")
.attr("class","y-axis")
.attr("transform",`translate(${margin.left},0)`)
.call(d3.axisLeft(y)) //y轴坐标刻度
需要绘制柱状图形
svg.append("g")
.attr("class","bars")
.attr("fill","skyblue")
.selectAll("rect")
.data(data)
.join("rect")
.attr("x",d=>x(d.name))
.attr("y",d=>y(d.value))
.attr("width",x.bandwidth())
.attr("height",d=>y(0) - y(d.value))
上面这个简单的例子可以反映出来你使用D3的基本流程 首先你要明白你的画布是如何限制的。然后呢你要想你画什么。 其次就是把数据对应的加上去。
当然很重要的一点要学习它的语法 转变你编码的思维。 非结构化的编程过程。
首先先不考虑进行定制化开发,本篇首先去了解下它内部的实现。
打开D3的仓库,阅读源码你会发现这个情况
其实这个跟它的设计是有关系的。是把能拆的部分尽可能的拆出来,这样的优势在于你如果想与目前使用的库进行一些整合,非常简单。这也是D3火的原因。本篇不打算拆开具体模块进行展开。基本我目前用到的可能 drag(拖拽计算), quadtree(四叉树) 还有一些layout算法... 其实也并不是很多。有兴趣可以留言 专门拿出几篇来写这个《讨论如何在底层进行定制化》。
关于图形学/数据可视化,怎么学习的方向问题呢,我也属于摸索。或许等我写完这个系列能够更好的解答大家。
请大家多提提意见,不吝赐教指正。 有任何希望分享的地方只要我了解或者我可以学来分享。 (当然学不会肯定不会丢人现眼的呢 哈哈)
打开软件,我们按快捷键ctrl+n,建立一个新的文件。 点击常用,选择布局。 点击...
Dreamweaver中如何使用Flash影片 1、首先需要我们准备的是一个Flash文件,其次最...
作者 / Krish Vitaldevara,Google Play 信任与安全产品管理总监 多年来,向数十...
行高line-height实现单行文本垂直居中 以前一直认为单行文本垂直居中要将高度和...
在ie下设置 css 样式 style="cursor:hand;" 可以正常显示 但是在firefox下就不行...
在讲CSS优先级之前,我们得要了解什么是CSS,CSS是用来做什么的。 首先,我们对C...
一、作用 离线浏览 - 根据文件规则把资源缓存在本地,脱机依然能够访问资源,联...
背景 京东购物小程序作为京东小程序业务流量的主要入口,承载着许多的活动和页面...
最近在做项目时,发现CSS3中关于动画的技术,自己很少运用在项目中,平时一些列...
CSS3实现酷炫的3D旋转透视 3D动画效果现在越来越普及,已经被广泛的应用到了各个...