可视化入门学习
Last updated
Last updated
可视化是指用于创建图形、图像或动画,以便交流沟通讯息的任何技术和方法。翻译成人话,即用图表 / 图形来代替文本描述。可视化的重点在于清晰地表述观点。那么该如何入门可视化呢?师父有言,“先去调研,看看目前的可视化组件能做到什么程度”做事前先调研,既可以对该领域有一个大致的认知,又可以避免重复造轮子,为日后能在该领域做出一些独特的贡献打下基石。
1. 调研方法论
调研对象
组件名 | 地址 |
---|---|
如何弄出一套适用的评定算法 / 方法论?
先以某个成熟的大型组件为测试样例,逐一测试以下量化标准,一方面观察该组件是否符合标准,符合标准到一个什么程度;另一方面反过来思考这样的标准是否有意义,可以对标准进行一个适当地增删
对标准进行合并整理,提出可量化的方法论
量化标准:
特色(最重要且最需要关注的地方)
交互模式(在线还是离线;CS / BS / APP)
组件暴露的API是否有详细且规范的输入输出描述?(关注二次开发有无可能)
组件通用功能是否完善?有无约束和限制?动态效果怎么样?大数据渲染性能怎么样?
组件是否有人持续更新与维护?社区活跃度怎么样?(遇到问题是否容易解决)
是否有可以直接运行或者借鉴的 demo?(直接体现出效果)
是否支持离线(内网使用)?
评定组件的方法:
体验官网的各个模块 + 本地安装尝试 + 看用户生态 / 用户评价 + 探索离线部署方式
关注离线场景下的组件部署,可尝试以下方法:rancher(K8s的一个应用,底层依赖 docker 镜像)、docker + Nexus + Gitlab
、第三方云原生交付平台(阿里云、ThingJS)
行研报告 (调查不仅针对组件本身,同时也可以观察组件背后的开发者)
2. 调研示例
ECharts(侧重于图表)
作为库文件引入使用示例:
在线修改 demo 使用示例:
Echarts离线部署方案:
官网定制下载插件代码,再使用U盘 / 光盘拷贝至目的主机;
从 github 上拉取源码后,使用 cnpm 安装相应依赖。依靠 npm 可以提供内网服务,也可以引用 /echarts/dist
中的 js 文件进行二次开发。
3. 调研结论
现有可视化组件类别:
图表开发。例:Echarts、Highcharts、Chart.js、react-vis、ApexCharts
图形开发。例:Antv、D3.js、billboard.js
低代码开发,实现所见即所得。例:Sugar BI、react-big-screen、vue-big-screen
模块开发,专注于某一类图表 / 图形。例:Deck.gl
现有可视化组件功能总结:
在线修改 demo 代码,将图表导出使用;
作为库文件引入前端 IDE,进行二次开发。
调研思考:
现有可视化组件涵盖了基本所需的图表类型,demo 多而全。因此对于简单的开发情景,采用“拿来主义“,使用 Echarts,Antv/g2,甚至使用 Sugar BI,都能满足要求。 但如果要面对的是高度定制化的图表开发需求,那么 D3.js / Antv 几乎是唯一的出路。因为它们是面向图形开发的可视化组件,自由度高。但相应的这一类组件几乎都有自身的图形交互语法,学习曲线比较陡峭,不适用于敏捷开发。
未来具有竞争力的开发组件应该具备以下特点:
观点是可视化的灵魂;
如何向一个毫无前置知识的人,清晰地阐述一个观点,是可视化的艺术;
留心观察生活中的点滴,思考这些东西向我传递了什么观点,是以一种什么样的形式?了解别人能做什么,然后去做别人没做到的事;
在研究的开始阶段,假设拥有完美的前置条件,往往有利于研究的开展。
特色 | 交互 | 使用 | API | 活跃度 | 不足 |
---|---|---|---|---|---|
特点 | 原因 |
---|---|
Antv
Vue
Echarts
Highcharts
D3
Ploty
Sugar BI
1.图表样式齐全,颜色鲜明、对比度高 2.支持 Canvas 与 SVG,网页实时渲染效果好,延迟低
BS / 作为库文件引入前端文件
1.对于提供的图表样式,可直接在线修改数据从而快速获得图表,或下载其源码进行二次开发; 2.可在线定制下载 echarts 模块,使其作为 js 库文件引入前端开发直接使用
有很细致且规范的输入输出描述
Stackoverflow 相关问答很多 其 github 项目主体稳定且有人负责维护与更新 用户体验反馈较好
对于 3D图形 / 数据量较大的渲染,网页响应效果不佳
面向图形开发
1. 图表开发需要涵盖大量的 demo,才能具有竞争力,成本高 2. 可以实现定制化开发
专注于某一模块
开发功能齐全的组件,对于个人开发者是不现实的,同时组件功能也难以达到行业顶尖水平
适配移动端
现有可视化组件的痛点之一是无法在移动端实现流畅地访问。现有的可视化组件即便能够访问,页面适配也做得极其糟糕
多人实时开发共享
类似腾讯文档的在线文档功能,现有可视化组件中尚未有组件实现这一功能,这可能是一个突破口