前言

从上一篇:

[Web Chart系列之二] 各种实现js 图表的library汇总与比较
的介绍, 目前提供提供绘制矢量图的library 还是很多的。 
如果只是需要绘制一些柱状图, 饼图, 散点图, 时序图这样一些简单图的话, 从所列出的library 中是可以找到很多选择的。
但是如果需要绘制的是结构图, 关联图这样一些数据量大,逻辑稍显复杂的图,页面布局就是需要面临的一个大问题了。
d3.js   提供了比较高级的的页面布局, 树形图;爆炸图; 三维图。 以及有专门使用其开发实现layout的ECO System(理解为衍生库好了)。 但是比较致命的是d3.js 对于IE的支持不好。
JavaScript InfoVis Toolkit , sencha(研发Extjs的公司)的一个实验项目。也提供了动画效果的树状图,力导向图。缺点是layout 部分的代码紧紧的绑定在其他代码中, 要想剥离或是改动的话,就比较困难了。

布局的讨论

这里只讨论两种布局: 树和图。 为什么只讨论这两种? 饼图, 柱状图相当简单, 而且有大量的现有组件可以使用。 三维图, 笔者暂时尚未涉入到此部分,所以也就不讨论了。
首先需要明确的一个问题是: 树和图的区别?
直观上的感觉好像是: 往左右或是上下两个方向延伸的是树, 往四周任意方向延伸的是图。
这种感觉在科学上是不科学的。 《数据结构》里对树和图有很明确的界定。最大的区别就是:
树: 一个节点只有父节点。
图: 一个节点可以有任意多个父节点。
从这个意义上来说, 树也可以是环形的。
但是, 这里讨论的layout 讨论的树和图的概念, 还是有点偏向于直观上的理解:  左右或是上下两个方向延伸的是树, 往四周任意方向延伸的是图。

树的布局

树的布局算法相对简单,只需要遵循一些基本的原则就可以了:
1.  在同一层的节点之间应该保持一定的距离。
2.  父节点需要位于其包含的所有子节点的中心位置
3.  整个树应尽量保持对称,平衡。
4.  相同子树的呈现效果应尽量相同
5.  在不违反以上规则的状况相, 树应该尽量的省空间。

图的布局

图的布局方式很多, 综合起来, 常见的有以下2种

1.  环形
环形图又分为两种
a)  同心圆:  所有的子节点层都围绕一个圆点展开。
b)  异心圆: 每个子节点都是下一级子节点的圆心。
2. 力导向(Force-directed)
这种布局不关心业务数据的逻辑, 只是单单从展现的效果最美观来显示图形。
使用到了物理学上里的概念。
关于此布局, 后续会有详细的介绍。

[Web Chart系列之三] 图形布局-Layout相关推荐

  1. [Web Chart系列之四] 图形布局-Layout 之js设计实现

    前言 定位browser 的 chart,   VML,SVG, HTML5 Canvas使用的方式各不一样. 如果使用现有的js  library (各种实现js 图表的library汇总与比较) ...

  2. [Web Chart系列之五] 图形布局-Circle Layout 之实现

    前言 关于Circle Layout 的基本介绍, 可以参考: [Web Chart系列之三] 图形布局-Layout 布局的现实使用状况 这里使用这种布局来布局特定对象的关联. 这里的这些对象类似于 ...

  3. [Web Chart系列之一(续)]Web端图形绘制SVG,VML, HTML5 Canvas 简单实例

    前言 本篇是继 [Web Chart系列之一]Web端图形绘制SVG,VML, HTML5 Canvas 技术比较 的补充和实例说明各种技术的使用方式. VML 的用法和实例 引入命名空间之后,就可以 ...

  4. [Web Chart系列之六] canvas Chart 导出图文件

    介绍 使用SVG绘制的图形可以导出为svg 格式的文件,使用浏览器等可以查看. 是否可以导出为png, gif 格式的文件呢? 当然是可以. 只是在 web 直接创建和操作文件是不建议的,而且存在各浏 ...

  5. Web API系列之三 基本功能实现

    Web API系列之二讲解了如何搭建一个WebApi的基架,本文主要在其基础之上实现基本的功能.下面开始逐步操作: 一.配置WebApi的路由-用于配置外部如何访问内部资源的url的规则 1.添加Gl ...

  6. [Axis2与Eclipse整合开发Web Service系列之三] 服务端返回值

    前言 在前面的三篇中 [Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码) [Axis2与Eclipse整 ...

  7. [Web Chart系列之一]Web端图形绘制SVG,VML, HTML5 Canvas 技术比较

    先介绍一下矢量图的概念: 矢量图使用直线和曲线来描述图形,这些图形的元素是一些点.线.矩形.多边形.圆和弧线等等,它们都是通过数学公式计算获得的.例如一幅花的矢量图形实际上是由线段形成外框轮廓,由外框 ...

  8. [Web Chart系列之五] 3. 实战draw2d 之图形填充色(纯色 or 渐变)

    颜色渐变 draw2d 目前没有提供直接对Figure 设置渐变效果的API. 但是raphael 有提供, 这样的话基本上在draw2d实现渐变成为可能. 颜色渐变功能来源 raphael 提供的图 ...

  9. [Web Chart系列之二] 各种实现js 图表的library汇总与比较

    前言 使用js 在浏览器展现图表, 参考系列一 Web端图形绘制SVG,VML, HTML5 Canvas 技术比较 汇总 目前实现web 图表的js library 数量是很多, 此处汇总: Nam ...

最新文章

  1. js 动态加载select触发事件
  2. JAVA知识总结目录
  3. ubuntu networking 与 network-manager
  4. 多媒体融合通信平台促进公网和专网的互联互通
  5. 短网址生成+域名检测+短网址还原等四合一前端源码
  6. html 搜索 高亮效果,html5输入框高亮效果
  7. awk 输出到多个文件 多路输出
  8. Node.js开发入门—使用http访问外部世界
  9. 什么是受限股票(RSU)、二级市场、蓝筹股
  10. C语言中圆的周长怎么算,圆的周长公式 周长怎么算出来的
  11. 使用matlab建立个人简历,HTML 使用表格制作简单的个人简历
  12. 线上配镜新方式:眼镜直通车竞品分析报告
  13. 计算机二级能加综合测评,2016综合测评加分细则.doc
  14. java 面试题合集_撩课-Java面试题合辑1-50题
  15. Hexo+NexT 如何取消下划线
  16. java设计模式之状态机模式
  17. 【8019】俞军给淘宝产品经理的分享
  18. python调用各个分词包
  19. 矛与盾的较量(1)——花指令
  20. win10 安装 CH340驱动

热门文章

  1. mac安装 配置 ant
  2. js 高级应用 自定义事件
  3. Objective-C的Runtime System
  4. 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)
  5. 解决git rebase操作后推送远端分支不成功的问题
  6. 【中台实践】滴滴大数据研发中台的最佳实践.pdf(附下载链接)
  7. (Step2-500题)POJ训练计划+SGU
  8. 利用c语言面向对象编程,用C语言程序实现面向对象编程
  9. hdf5 目录没有serial_Serial靶机实战
  10. linux同内核覆盖,Linux内核代码覆盖率 – GCOV