跟月影学可视化
月影
前奇虎 360 奇舞团团长,可视化 UI 框架 SpriteJS 核心开发者,《JavaScript 王者归来》作者
30206 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 54 讲
跟月影学可视化
15
15
1.0x
00:00/00:00
登录|注册

27 | 案例:如何实现简单的3D可视化图表?

实现过渡动画
增加底座
添加光照效果
将数据转换成柱状元素
创建Layer对象
创建Scene对象
准备数据格式和内容
通过API获取JSON格式的数据
分享可视化的魅力
实践项目
知识脑图
补充细节,实现更好的视觉效果
用SpriteJS渲染数据、完成绘图
准备要展现的数据
复习前面学过的全部知识
学习可视化开发的全过程
掌握WebGL的视觉呈现技术
了解图形学基础知识
源码
推荐阅读
小试牛刀
要点总结
实现GitHub贡献图表的可视化作品
完成一个小型的可视化项目
学习图形学的基础知识和WebGL的视觉呈现技术
如何实现简单的3D可视化图表

该思维导图由 AI 生成,仅供参考

你好,我是月影。
学了这么多图形学的基础知识和 WebGL 的视觉呈现技术,你一定已经迫不及待地想要开始实战了吧?今天,我带你完成一个小型的可视化项目,带你体会一下可视化开发的全过程。也正好借此机会,复习一下我们前面学过的全部知识。
这节课,我们要带你完成一个 GitHub 贡献图表的可视化作品。GitHub 贡献图表是一个统计表,它统计了我们在 GitHub 中提交开源项目代码的次数。我们可以在 GitHub 账号信息的个人详情页中找到它。
下图中的红框部分就是我的贡献图表。你会看到,GitHub 默认的贡献图表可视化展现是二维的,那我们要做的,就是把它改造为简单的动态 3D 柱状图表。
GitHub默认的贡献图表可视化展现示意图

第一步:准备要展现的数据

想要实现可视化图表,第一步就是准备数据。GitHub 上有第三方 API 可以获得指定用户的 GitHub 贡献数据,具体可以看这个项目
通过 API,我们可以事先保存好一份 JSON 格式的数据,具体的格式和内容大致如下:
// github_contributions_akira-cn.json
{
"contributions": [
{
"date": "2020-06-12",
"count": 1,
"color":"#c6e48b",
},
...
],
}
从这份 JSON 文件中,我们可以取出每一天的提交次数 count,以及一个颜色数据 color。每天提交的次数越多,颜色就越深。有了这份数据内容,我们就可以着手实现具体的展现了。不过,因为数据很多,所以这次我们只想展现最近一年的数据。我们可以写一个函数,根据传入的时间对数据进行过滤。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

使用SpriteJS库实现简单的3D可视化图表。首先,作者介绍了准备要展现的数据,通过GitHub的第三方API获取指定用户的GitHub贡献数据,并准备了JSON格式的数据。然后,作者使用SpriteJS库创建了Scene对象和Layer对象,将数据转换成柱状元素,并使用d3-selection库通过数据操作文档树,添加元素节点。作者还详细介绍了如何设置Cube元素的样式,包括长、宽、高、缩放、位置和颜色等属性。在实现过渡动画的过程中,作者提到了z-fighting问题,并介绍了解决方法。最后,作者鼓励读者尝试使用自己的GitHub贡献数据来实现类似的图表,并分享出去。整篇文章涵盖了数据处理、渲染、光照效果、动画实现等内容,为读者提供了一种全新的数据可视化方式。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《跟月影学可视化》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • Geek_frank
    fragment 中53、7是怎么得到的?pos属性中x0,z0的数值设定有什么讲究的?

    作者回复: 一共53周,每周7天。x0, z0根据不同天对应图表中的格子

    2020-08-24
    2
    2
  • 木瓜777
    你好,在绘制大场景的时候,设置每个模型的绘制顺序,好像不太合适吧?有没有其他解决z-fighting的方法?

    作者回复: 不需要每个都设置,关键的一些设置一下就好了

    2020-09-15
    1
  • Noah
    老师可不可以点评比较一下ThreeJS和BabylonJS这两个库?

    作者回复: 两个库都挺好的哈,我个人没有什么特别偏好

    2020-10-07
  • Geek_25714e
    失效了
    2022-02-24
    1
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部