找回密码
 立即注册
查看: 1464|回复: 0

如何将枯燥的大数据呈现为可视化的图和动画?

[复制链接]
发表于 2021-11-11 18:13 | 显示全部楼层 |阅读模式
在回答之前,先简单的介绍我自己,我是澎湃新闻美数课(数据新闻)栏目的课代表,擅长做数据可视化视频和信息图。
喂喂喂!憋看到我这个身份,就跑啊,下面有一吨实用干货等你~~~

前段时间做了一个关于诺贝尔人才流动的题,包含了可视化视频和信息图,所以用这个选题,来分享一些制作过程以及工具使用,希望能够帮助到题主和其他和对这方面感兴趣的知友。
先丢个链接一分钟看百年诺奖人才流动:哪些国家是最强的人才孵化地?







主题:诺贝尔获奖者的流动
我们想表现的就是诺贝尔获奖者出生地与获奖时的居住地的变化,所以想到流线地图的方式,用地图直观的看到某些时间段内人才流动的变化。

数据:如何收集这个数据?
对于这个案例,毫无疑问的数据来源是诺贝尔奖的官网,上面有最详细的获奖者信息。
对于其他的选题,首选与主题相关的权威官网。
我们用Import.io工具抓了871条关于诺贝尔奖历年来的获奖者信息。


因为最终效果要在地图上呈现,在源数据的基础上,表格里还加入了国家的地理坐标,方便下一步的软件操作。

工具:这是用什么做的?
最终视频=Processing+Ocam+Adobe Premiere+Adobeeffect
一个正经的小视频居然还用到这么多工具?!

那我们用这些工具分别干了什么?
① Processing
本次视频的流线地图效果的重要支持软件!!
我们的编辑写了298行代码,去表现诺奖人才流动的变化。


其实Processing也可以直接导出每一帧图片,但为了更好地和AE对接,所以选择了录屏软件,灵活性更大。

下面是编辑有话要说:
(被抓过来强行说两句,那我就)简单粗暴的安利一下Processing。
1.Processing是具有设计背景的团队,为脑回路完全不一样的设计师们或者代码苦手等麻瓜(喂)人群打造的交互编程语言,上手容易,逻辑就跟使用AI一样,特别顺畅(....至少刚开始是这样啊喂!)。

2. 对从没接触过编程的人来说,Processing会是个好开始,不光是学习Processing,你可以通过学习Processing接触何为编程,理解编程的逻辑,进而接触其他编程语言,这也是Processing创始人的初衷之一。

3.气质不一样。恩这点有些玄乎...我把这归结为因为Processing没有封装一些常用的数据可视化形式,导致能发挥的自由度更高,形式更奇葩多样,可以丑到没下限,也可以很美。设计师背景也会让气质不一样,类似同样由设计师背景团队打造的raw,是DensityDesign实验室的产品,你只要打开DensityDesign的主页可能就明白为什么我说气质不一样..大概。

当然无论是Processing还是d3.js,chart.js...或是AI,都只是工具而已,能用到什么程度,还是看使用它的人。数据可视化并不是Processing的核心,Processing可以被叫做创意编程语言,那种感觉就好像它已经从设计师跳脱到艺术家了......很多艺术家都使用processing创造自己的作品。甩个接地气的例子,日本女子组合Perfume有个国际推广的项目perfume global website,她们几场看起来各种酷炫的黑科技演唱会都有Processing的一份功劳哦。


废话一不小心就这么多,重要的是,你还不和我一起跳入processing的大坑啊呸知识的海洋么!

②Ocam
一款录屏软件,用它来录制我们的小视频。

③Adobe Effect和Adobe Premiere
用于录制视频的剪辑合成和其他效果的添加。
除了视频,我们还做了两张气质不一样的信息图,就是我们的编辑推荐的RAW。




RAW是基于D3.js的开源工具,不用代码,只需要导入数据,设置一些条件就可快速生成,而且可以导出矢量的图表!

第一步:导入数据
复制excel表里的数据到Raw里,





第二步:选择图表模式
以环形信息图做案例,我们选择Circular Dondrogram。



第三步:选择条件生成效果图
拖拽左边的条件到右边呈现的项目,右边的排序会影响最后生成的结构,生成的效果也会根据你的词条实时更新。




嗯,感觉有了,但作为一名美数课代表。这效果怎么可以直接发送给我可爱的班主任?
所以先丢给AI,丢给神奇的AI。(噢,这里AI泛指Adobe Illustrator,不是Artificial Intelligence)

第四步:导出svg,AI中修改,发给班主任,交稿,下班。





题主还有一个疑问:有什么技巧?



数据可视化的方式和工具有很多:


有人说,“”可视化的很多工具都是一个大坑。“
本课代表否认,“这哪是坑,明明是黑洞!!!洞!!”
按你喂,掌握你所需,然后不断的练习,用合适的方式清楚地表达准确的信息。

最后再补充几个我们做的数据可视化的视频
数据解释性视频
纪录的诞生①|数说百年奥运:人类的极限在哪里?纪录的诞生②|基因的秘密:伟大的运动员是上天铸造的吗?
动画视频
动画深扒|遥远太平洋上的厄尔尼诺为什么会带来洪水?
Excel-Powermap制作的可视化视频
数说摩天大楼①|80年来,世界第一高楼长高了510米
想要哪个视频解析,我一定会在课后时间回答你们的。
最后,好不容易写了个大回答,我需要你们的鼓励啊~
这个月的鸡腿还得靠你们~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-11 18:17 | 显示全部楼层
在回答之前,先简单的介绍我自己,我是澎湃新闻美数课(数据新闻)栏目的课代表,擅长做数据可视化视频和信息图。
喂喂喂!憋看到我这个身份,就跑啊,下面有一吨实用干货等你~~~

前段时间做了一个关于诺贝尔人才流动的题,包含了可视化视频和信息图,所以用这个选题,来分享一些制作过程以及工具使用,希望能够帮助到题主和其他和对这方面感兴趣的知友。
先丢个链接一分钟看百年诺奖人才流动:哪些国家是最强的人才孵化地?







主题:诺贝尔获奖者的流动
我们想表现的就是诺贝尔获奖者出生地与获奖时的居住地的变化,所以想到流线地图的方式,用地图直观的看到某些时间段内人才流动的变化。

数据:如何收集这个数据?
对于这个案例,毫无疑问的数据来源是诺贝尔奖的官网,上面有最详细的获奖者信息。
对于其他的选题,首选与主题相关的权威官网。
我们用Import.io工具抓了871条关于诺贝尔奖历年来的获奖者信息。


因为最终效果要在地图上呈现,在源数据的基础上,表格里还加入了国家的地理坐标,方便下一步的软件操作。

工具:这是用什么做的?
最终视频=Processing+Ocam+Adobe Premiere+Adobeeffect
一个正经的小视频居然还用到这么多工具?!

那我们用这些工具分别干了什么?
① Processing
本次视频的流线地图效果的重要支持软件!!
我们的编辑写了298行代码,去表现诺奖人才流动的变化。


其实Processing也可以直接导出每一帧图片,但为了更好地和AE对接,所以选择了录屏软件,灵活性更大。

下面是编辑有话要说:
(被抓过来强行说两句,那我就)简单粗暴的安利一下Processing。
1.Processing是具有设计背景的团队,为脑回路完全不一样的设计师们或者代码苦手等麻瓜(喂)人群打造的交互编程语言,上手容易,逻辑就跟使用AI一样,特别顺畅(....至少刚开始是这样啊喂!)。

2. 对从没接触过编程的人来说,Processing会是个好开始,不光是学习Processing,你可以通过学习Processing接触何为编程,理解编程的逻辑,进而接触其他编程语言,这也是Processing创始人的初衷之一。

3.气质不一样。恩这点有些玄乎...我把这归结为因为Processing没有封装一些常用的数据可视化形式,导致能发挥的自由度更高,形式更奇葩多样,可以丑到没下限,也可以很美。设计师背景也会让气质不一样,类似同样由设计师背景团队打造的raw,是DensityDesign实验室的产品,你只要打开DensityDesign的主页可能就明白为什么我说气质不一样..大概。

当然无论是Processing还是d3.js,chart.js...或是AI,都只是工具而已,能用到什么程度,还是看使用它的人。数据可视化并不是Processing的核心,Processing可以被叫做创意编程语言,那种感觉就好像它已经从设计师跳脱到艺术家了......很多艺术家都使用processing创造自己的作品。甩个接地气的例子,日本女子组合Perfume有个国际推广的项目perfume global website,她们几场看起来各种酷炫的黑科技演唱会都有Processing的一份功劳哦。


废话一不小心就这么多,重要的是,你还不和我一起跳入processing的大坑啊呸知识的海洋么!

②Ocam
一款录屏软件,用它来录制我们的小视频。

③Adobe Effect和Adobe Premiere
用于录制视频的剪辑合成和其他效果的添加。
除了视频,我们还做了两张气质不一样的信息图,就是我们的编辑推荐的RAW。




RAW是基于D3.js的开源工具,不用代码,只需要导入数据,设置一些条件就可快速生成,而且可以导出矢量的图表!

第一步:导入数据
复制excel表里的数据到Raw里,





第二步:选择图表模式
以环形信息图做案例,我们选择Circular Dondrogram。



第三步:选择条件生成效果图
拖拽左边的条件到右边呈现的项目,右边的排序会影响最后生成的结构,生成的效果也会根据你的词条实时更新。




嗯,感觉有了,但作为一名美数课代表。这效果怎么可以直接发送给我可爱的班主任?
所以先丢给AI,丢给神奇的AI。(噢,这里AI泛指Adobe Illustrator,不是Artificial Intelligence)

第四步:导出svg,AI中修改,发给班主任,交稿,下班。





题主还有一个疑问:有什么技巧?



数据可视化的方式和工具有很多:


有人说,“”可视化的很多工具都是一个大坑。“
本课代表否认,“这哪是坑,明明是黑洞!!!洞!!”
按你喂,掌握你所需,然后不断的练习,用合适的方式清楚地表达准确的信息。

最后再补充几个我们做的数据可视化的视频
数据解释性视频
纪录的诞生①|数说百年奥运:人类的极限在哪里?纪录的诞生②|基因的秘密:伟大的运动员是上天铸造的吗?
动画视频
动画深扒|遥远太平洋上的厄尔尼诺为什么会带来洪水?
Excel-Powermap制作的可视化视频
数说摩天大楼①|80年来,世界第一高楼长高了510米
想要哪个视频解析,我一定会在课后时间回答你们的。
最后,好不容易写了个大回答,我需要你们的鼓励啊~
这个月的鸡腿还得靠你们~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-11 18:21 | 显示全部楼层
用Python来做数据可视化就相当不错。
不要听到编程两个字就瑟瑟发抖,这里推荐一个7步搞定Python数据可视化的教程~
工具Vega-Lite和Altair

首先,用Python完成可视化,需要借助两款工具:Vega-LiteAltair
Vega-Lite是一种交互式图形的高级语法,用简明的JSON语法,快速生成可视化图形,Vega-Lite规范可以编译为Vega规范。
比如下图,左边的图形,背后就是右侧的代码来实现的。



而Altair是一个专为Python编写的可视化软件包,它能让数据科学家更多地关注数据本身和其内在的联系,相比matplotlib,Altair要简洁的多。



Altair的图形种类非常丰富,包含条形图、折线图、面积图、散点图、直方图、地图等各种交互式图表。
Altair也是基于Vega和Vega-Lite而来的,使用的语言是Python,因此,Vega-Lite和Altair两者一同服用,效果最好哦。
七步学会可视化

说完了需要用到的基础工具,再来看看这套课程本身。
教程的作者非常友好,在Jupyter、Colab、Observable三个平台都准备了课程,你可以选择自己习惯的平台,或者直接去Colab上,用自己的数据体验一下。


整体教程包含7个部分:


1、Vega-Lite/Altair介绍
2、数据种类、图形标志、视觉编码渠道
3、数据转换
4、比例尺、轴和图例
5、多视图合成
6、交互
7、制图可视化
最后,教程作者还附赠了Altair的debug指南。
来自D3.js创作者

这份教程的作者Jeffrey Heer,是华盛顿大学的计算机教授,在华盛顿大学交互数据实验室工作,同时还是数据软件公司Trifacta的联合创始人和CXO。


他专门研究数据可视化方向,在Google Scholar的H-index达到了62,超多网站都在用的数据可视化JavaScript库D3.js就是他和学生一起完成的,这篇论文的引用次数超过了2300。
传送门

课程GitHub:
https://github.com/uwdata/visualization-curriculum
Vega-Lite:
https://vega.github.io/vega-lite/
Altair:
https://altair-viz.github.io/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-11 18:30 | 显示全部楼层
可视化之根
多年前读过一篇非常震撼的文章,叫《Lisp之根》(英文版:The roots of Lisp),大意是Lisp仅仅通过一种数据结构(列表)和有限的几个函数,就构建出了一门极为简洁,且极具扩展性的编程语言。当时就深深的被这种设计哲学所震撼:一方面它足够简单,每个单独的函数都足够简单,另一方面它有非常复杂,像宏,高阶函数,递归等机制可以构建出任意复杂的程序,而复杂的机制又是由简单的组件组成的。
数据的可视化也是一样,组成一幅内容清晰、表达力强、美观的可视化信息图的也仅仅是一些基本的元素,这些元素的不同组合却可以产生出令人着迷的力量。
要列出“可视化元素之根”很容易:位置、长度、角度、形状、纹理、面积(体积)、色相、饱和度等几种有限的元素,邱南森在他的《数据之美》中提供了一张视觉元素的图,其中包含了大部分常用的元素。




令人振奋的是,这些元素可以自由组合,而且组合往往会产生1+1>2的效果。
心理学与认知系统
数据可视化其实是基于人类的视觉认知系统的,因此对人类视觉系统的工作方式有一些了解可以帮助我们设计出更为高效(更快的传递我们想要表达的信息给读者)的可视化作品。
心理物理学
在生活中,我们会遇到这样的场景:一件原价10元的商品,如果降价为5元,则消费者很容易购买;而一件原价100元的商品,降价为95元,则难以刺激消费者产生购买的冲动。这两个打折的绝对数字都是5元,但是效果是不一样的。
韦伯-费希纳定理描述的正是这种非理性的场景。这个定理的一个比较装逼的描述是:
感觉量与物理量的对数值成正比,也就是说,感觉量的增加落后于物理量的增加,物理量成几何级数增长,而心理量成算术级数增长,这个经验公式被称为费希纳定律或韦伯-费希纳定律。– 摘自百度百科
这个现象由人类的大脑构造而固有,因此在设计可视化作品时也应该充分考虑,比如:
    避免使用面积图作为对比在做对比类图形时,当差异不明显时需要考虑采用非线性的视觉元素选用多种颜色作为视觉编码时,差异应该足够大
比如:



如上图中,当面积增大之后,肉眼越来越难从形状的大小中解码出实际的数据差异,上边的三组矩形(每行的两个为一组),背后对应的数据如下,可以看到每组中的两个矩形的绝对差都是5:
var data = [
  {width: 5, height: 5},
  {width: 10, height: 10},

  {width: 50, height: 50},
  {width: 55, height: 55},

  {width: 100, height: 100},
  {width: 105, height: 105}
];格式塔学派
格式塔学派是心理学中的一个重要流派,她强调整体认识,而不是结构主义的组成说。格式塔认为,人类在看到画面时,会优先将其简化为一个整体,然后再细化到每个部分;而不是先识别出各个部分,再拼接为整体。
比如那条著名的斑点狗:


我们的眼睛-大脑可以很容易的看出阴影中的斑点狗,而不是先识别出狗的四条腿或者尾巴(事实上在这张图中,人眼无法识别出各个独立的部分)。
格式塔理论有几个很重要的原理:
    接近性原理相似性原理封闭性原理连续性原理主体/背景原理
当然,格式塔学派后续还有一些发展,总结出了更多的原理。工程上,这些原理还在大量使用,指导设计师设计各式各样的用户界面。鉴于网上已经有众多的格式塔理论及其应用的文章,这里就不在赘述。有兴趣的同学可以参考这几篇文章:
优设上的一篇格式塔文章优设上的一篇关于格式塔与Web设计的文章腾讯CDC的一篇格式塔介绍视觉设计的基本原则
《写给大家看的设计书》一书中,作者用通俗易懂的方式给出了几条设计的基本原则,这些原则完全可以直接用在数据可视化中的设计中:
    亲密性(将有关联的信息物理上放在一起,而关联不大的则通过留白等手段分开)对齐(将元素通过水平,垂直方向对齐,方便视觉识别)重复(重复使用某一模式,比如标题1的字体颜色,标题2的字体颜色等,保持重复且一致)对比(通过强烈的对比将不同的信息区分开)


如果稍加留意,就会发现现实世界中在大量的使用这几个原则。1,2,3三个标题的形式就是重复性的体现;每个标题的内容自成一体是因为组成它的元素(数字,两行文字)的距离比较近,根据亲密性原则,人眼会自动将其归为一类;超大的数字字体和较小的文字形成了对比;大标题的颜色和其他内容形成了对比等等。
这些原则其实跟上面提到的格式塔学派,以及韦伯-费希纳定理事实上是相关的,在理解了这些人类视觉识别的机制之后,使用这些原则就非常自然和得心应手了。
一些例子
    淡化图表的网格(和数据图形产生对比)通过深色来强调标尺(强烈的线条和其余部分产生对比)离群点的高亮(通过不同颜色产生对比)使用颜色(通过不同的颜色,利用亲密性原则方便读者对数据分组)元素颜色和legend(使用重复性原则)同一个页面上有多个图表,采取同样的图例,色彩选择(强调重复性原则)




实例
上篇文章提到我通过一个手机App收集到了女儿成长的一些记录,包括哺乳信息,换尿布记录,以及睡眠信息。这个例子中,我会一步步的介绍如何将这些信息可视化出来,并解释其中使用的视觉原理。
可视化的第一步是要明确你想要从数据中获取什么信息,我想要获取的信息是孩子的睡眠总量以及睡眠时间分布情况。
进阶版的条形图
确定了可视化的目的之后,第二步是选取合适的视觉编码。上面提到过,对于人眼来说,最精确的视觉编码方式是长度。我们可以将睡眠时间转化为长度来展现,最简单的方式是按天聚合,然后化成柱状图。比如:
2016/11/21,768
2016/11/22,760
2016/11/23,700不过这种图无法看出时间的分布。我们可以考虑通过条形图的变体来满足前面提到的两个核心诉求。先来在纸上画一个简单的草图。纵轴是24小时,横轴是日期。和普通的条形图不一样的是,每个条形的总长度是固定的,而且条形代表的不是简单非数据类型,而是24小时。在草稿中,每个画斜线的方块表示孩子在睡眠状态,而虚线部分表示她醒着。



原始数据
name,date,length,note
心心,2016/11/21 19:23,119,
心心,2016/11/21 22:04,211,
心心,2016/11/22 02:03,19,
心心,2016/11/22 02:23,118,
心心,2016/11/22 05:58,242,
心心,2016/11/22 10:57,128,
心心,2016/11/22 14:35,127,
心心,2016/11/22 17:15,127,
心心,2016/11/22 20:02,177,
心心,2016/11/23 01:27,197,这里有个问题,我们的纵轴是24小时,如果她晚上23点开始睡觉,睡了3个小时,那么这个条形就回超出24格的轴。我写了一个函数来做数据转换:
require 'csv'
require 'active_support/all'
require 'json'

csv = CSV.read('./visualization/data/sleeping_data_refined.csv', :headers => :first_row)

data = []
csv.each do |row|
    date = DateTime.parse(row['date'], "%Y/%m/%d %H:%M")

    mins_until_end_of_day = date.seconds_until_end_of_day / 60
    diff = mins_until_end_of_day - row['length'].to_i

    if (diff >= 0) then
        data << {
            :name => row['name'],
            :date => row['date'],
            :length => row['length'],
            :note => row['note']
        }
    else
        data << {
            :name => row['name'],
            :date => date.strftime("%Y/%m/%d %H:%M"),
            :length => mins_until_end_of_day,
            :note => row['note']
        }

        data << {
            :name => row['name'],
            :date => (date.beginning_of_day + 1.day).strftime("%Y/%m/%d %H:%M"),
            :length => diff.abs,
            :note => row['note']
        }
    end
end有了干净的数据之后,我们可以编写一些前端的代码来绘制条形图了。画图的时候有几个要注意的点:
    每天内的时间段对应的矩形需要有相同的X坐标不同的睡眠长度要有颜色区分(睡眠时间越长,颜色越深)
var dateRange = _.uniq(data, function(d) {
  var date = d.date;
  return [date.getYear(), date.getMonth(), date.getDate()].join("/");
});

xScale.domain(dateRange.map(function(d) { return d.date; }));

function getFirstInDomain(date) {
  var domain = xScale.domain();

  var index = _.findIndex(domain, function(d) {
      return date.getYear() === d.getYear()
          && date.getMonth() === d.getMonth()
          && date.getDate() === d.getDate();
  });

  return domain[index];
}函数getFirstInDomain可以根据一个日期值返回一个X坐标,这样2016/11/21 19:23和2016/11/21 22:04都会返回一个整数值(借助d3提供的标尺函数)。
另外,我们根据每次睡觉的分钟数将睡眠质量划分为5个等级:
var level = d3.scale.threshold()
  .domain([60, 120, 180, 240, 300])
  .range(["low", "fine", "medium", "good", "great", "prefect"]);然后在绘制过程中,根据实际数据值来确定不同的CSS Class
svg.selectAll(".bar")
  .data(data)
  .enter()
  .append("rect")
  .attr("class", function(d) {
      return level(d.length)+" bar";
  })
//...实现之后,看起来是这个样子的。事实上这个图标可以比较清楚的看出大部分睡眠集中在0-6点,而中午的10-13点以及黄昏18-20点基本上只有一些零星的睡眠。



星空图
上面的图有一个缺点,是当日期很多的时候(上图差不多有100天的数据),X轴会比较难画,如果缩减成按周,或者按月,又会增加很多额外的复杂度。
另外一个尝试是变形:既然这个统计是和时间相关的,那么圆形的钟表形象是一个很好的隐喻,每天24小时自然的可以映射为一个圆。而睡眠时间可以通过弧长来表示,睡眠时间越长,弧长越大:



角度转弧度
我们首先将整个圆(360度)按照分钟划分,则每分钟对应的角度数为:360/(24*60),再将角度转化为弧度:degree * π/180:
var perAngle = (360 / (24 * 60)) * (Math.PI/180);那么对于指定的时间,比如10:20,先计算出其分钟数:10*60+20,再乘以preAngle,就可以得出起始弧度;起始时间的分钟数加上睡眠时长,再乘以preAngle,就是结束弧度。
function startAngle(date) {
    var start = (date.getHours() * 60 + date.getMinutes()) * perAngle;
    return Math.floor(start*1000)/1000;
}

function endAngle(date, length) {
    var end = (date.getHours() * 60 + date.getMinutes() + length) * perAngle;
    return Math.floor(end*1000)/1000;
}实现的结果是这样的:


初看起来,它像是星空图,但是图中的不同颜色含义没有那么直观,我们需要在图上补充一个图例。通过使用d3的线性标尺和定义svg的渐变来实现,定义好渐变和渐变的颜色取值范围之后,就可以来绘制图例了。


图上的每段弧都会有鼠标移动上去的tooltip,这样可以很好的和读者大脑中的钟表隐喻对照起来,使得图表更容易理解。



由于我将整个圆分成了24份,这点和普通的钟表事实上有差异,那么如果加上钟表的刻度,会不会更好一些呢?从结果来看,这样的标线反而有点画蛇添足,所以我在最后的版本中去掉了钟表的标线。
可以看到,我们通过圆形的钟表隐喻来体现每一天的睡眠分布,然后用颜色的深浅来表示每次睡眠的时长。由于钟表的形象已经深入人心,因此读者很容易发现0点在圆环群的正上方。中心的黄色实心圆帮助读者视线先聚焦在最内侧的圆上,然后逐渐向外,这和日期的分布方向正好一致。
最终的结果在这里:心心的睡眠记录,完整的代码在这里。
更进一步
一个完整的可视化作品,不但要运用各种视觉编码来将数据转换为视觉元素,背景信息也同样重要。既然这个星空图是关于睡眠主题的,那么一个包含她在睡觉的图片集合则会加强这种视觉暗示,帮助读者快速理解。
制作背景图
我从相册中选取了很多女儿睡觉时拍的照片,现在需要有个工具将这些照片缩小成合适大小,然后拼接成一个大的图片。这其中有很多有趣的地方,比如图片有横屏、竖屏之分,有的还是正方形的,我需要让缩放的结果是正方形的,这样容易拼接一些。
好在有imagemagick这种神器,只需要一条命令就可以做到:
$ montage *.jpg -geometry +0+0 -resize 128x128^ \
-gravity center -crop 128x128+0+0 xinxin-sleeping.jpg这条命令将当前目录下的所有的jpg文件缩放成128x128像素,并从中间开始裁剪-gravity center,+0+0表示图片之间的缝隙,最后将结果写入到xinxin-sleeping.jpg中。
拼接好图片之后,就可以通过CSS或者图片编辑器为其添加模糊效果,并设置深灰色半透明遮罩。
body {
  background-image:url('/xinxin-sleeping.png');
  background-size:cover;
  background-position:center;
}当然,背景信息只是补充作用,需要避免喧宾夺主。因此图片做了模糊处理,且加上了深灰色的半透明Mask(此处应用了格式塔理论中的主体/背景原理)。



小结
这篇文章讨论了可视化作品背后的一些视觉元素理论,以及人类的视觉识别机制。在这些机制的基础上,介绍了如何运用常用的设计原则来进行视觉编码。最后,通过一个实例来介绍如何运用这些元素 – 以及更重要的,这些元素的组合 – 来制作一个漂亮的、有意义的可视化图表。
参考资料
这里有一些关于认知系统和设计原则的书籍,如果你感兴趣的话,可以用来参考
《认知与设计》《写给大家看的设计书》《数据之美》文/ThoughtWorks @Juntao Qiu     原文请戳:一张漂亮的可视化图表背后 - ThoughtWorks洞见

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-11 18:35 | 显示全部楼层
目前有很多工具,在线就可以完成!这里有一些感觉还不错的可视化工具,可以看一下:

1、Tableau



Tableau 是一款企业级的大数据可视化工具。Tableau 可以让你轻松创建图形,表格和地图。 它不仅提供了PC桌面版,还提供了服务器解决方案,可以让您在线生成可视化报告。服务器解决方案可以提供了云托管服务。Tableau的客户包括巴克莱银行,Pandora和Citrix等企业。

2、ChartBlocks



ChartBlocks是一个易于使用在线工具,它无需编码,便能从电子表格,数据库中构建可视化图表。整个过程可以在图表向导的指导下完成。您的图表将在HTML5的框架下使用强大的JavaScript库D3.js创建图表。你的图表是响应式的,并且可以和任何的屏幕尺寸及设备兼容。 您还可以将图表嵌入任何网页中,分享在Twitter和Facebook上。

3、Datawrapper



Datawrapper是一款专注于新闻和出版的可视化工具。华盛顿邮报,卫报,华尔街日报和Twitter等媒体都使用了这一工具。Datawrapper非常容易使用,不需要任何编程基础。你只需要上传你的数据,便能轻松地创建和发布图表,甚至是地图。Datawrapper提供了众多的自定义布局及地图模板。

4、Plotly



Plotly帮助你在短短几分钟内,从简单的电子表格中开始创建漂亮的图表。Plotly已经为谷歌、美国空军和纽约大学等机构所使用。 Plotly是一个非常人性化的网络工具,让你在几分钟内启动。如果你的团队希望为JavaScript和Python等编程语言提供一个API接口的话,Plotly是一款非常人性化的工具。

5、 RAW



RAW弥补了很多工具在电子表格和矢量图形(SVG)之间的缺失环节。你的大数据可以来自MicrosoftExcel中,谷歌文档或是一个简单的逗号分隔的列表。它最厉害的功能是可以很容易地导出可视化结果,因为它和Adobe Illustrator,Sketch 和Inkscape是相容的。

6、http://Visual.ly



http://Visual.ly是一个可视化的内容服务。它提供专门的大数据可视化的服务,用户包括了VISA,耐克,Twitter,福特和国家地理等。如果你想完全外包可视化文件给第三方。你可以使用非常简化的在线流程:你只需描述你的项目,服务团队将在项目的整个持续时间内和你在一起。 http://Visual.ly给您发送所有项目关键点的邮件通知,也将让你不断给出反馈。

7. D3.js



毋容置疑D3.js是最好的数据可视化工具库。D3.js运行在JavaScript上,并使用HTML,CSS和SVG。 D3.js是开源工具,使用数据驱动的方式创建漂亮的网页。 D3.js可实现实时交互。这个库非常强大和前沿,所以它带有没有预置图表也不支持IE9。

8、NVD3



NVD3运行在d3.js之上, 它可建立可重用的图表组件。该项目的目标是保持所有的图表整洁和可定制性。 NVD3是d3.js之上的简单的接口,保持了d3.js的所有强大功能。 NVD3由Novus Partners前端工程师开发和使其保持了图表技术洞察力。

9、Google Charts



Google Charts 以HTML5和SVG为基础,充分考虑了跨浏览器的兼容性,并通过VML支持旧版本的IE浏览器。所有您将创建的图表是交互式的,有的还可缩放。Google Charts是非常人性化和他们的网站拥有一个非常好的,全面的模板库,你可以从中找到所需模板。

10、Highcharts



Highcharts是一个JavaScript API与jQuery的集成,全球最大的100家公司中有61家正在使用它。图表使用SVG格式,并使用VML支持旧版浏览器。它提供了两个专门的图表类型:Highstock和Highmaps,并且还配备了一系列的插件。你可以免费使用它,而如果你想建立付费的应用,只须支付少量牌照费用。此外,你还可以使用Highcharts云服务。

11、Chart.js



对于一个小项目的图表,chart.js是一个很好的选择。开源,只有11KB大小,这使得它快速且易于使用,它支持多种图表类型: 饼图,线性图和雷达图等。

12、Leaflet



你是否专注于专业的大数据解决方案?无需饼图和条形图?Leafleft 基于Open Street Map数据,使用HTML5 / CSS3绘制互动式可视化图。您可以使用他们的扩展插件库添加热点图(heatmaps)和动画标记。 Leaflet 是开源和只有33 KB大小。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-11 18:41 | 显示全部楼层
我们实验室去年写了一篇综述,介绍文本可视化的主要方法,仅供参考:文本可视化研究综述
发表于 2021-11-11 18:43 | 显示全部楼层
听说有人想做图可视化?来康康开源的、专注于复杂的关系数据可视化与分析的 AntV G6:




魔性的交互泡泡


为美国迁徙数据可视化降低视觉混乱的边绑定


北京地铁的律动


世界贸易聚类交互式探索

上面四个动图 demo 的链接:
https://g6.antv.vision/zh/examples/case/decisionBubbleshttps://antv-2018.alipay.com/zh-cn/g6/3.x/demo/case/american-migration-bundling.htmlhttps://g6.antv.vision/zh/examples/case/metroLineshttps://g6.antv.vision/zh/examples/case/simplifyCluster觉得不错的话,github 点亮一下 star 吧~:https://github.com/antvis/G6

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-11 18:51 | 显示全部楼层
目前我们处于信息时代,万物联网的时代已经到来。从我们的日常生活中可以发现,小到身边的智能家居,再到平时出行的共享单车、滴滴等打车软件等,无时无刻不在产生大量的数据。这几年的时间里产生的数据量,已经远远超过了历史上其它时间的总和。那么这么多的数据汇聚成一个大数据,如何对这些数据进行有效分析与加以利用就变得十分重要了,而大数据可视化是进行大数据分析的一把利器。

什么是大数据可视化呢,参考一些资料给出的定义如下,现代的数据可视化(Data Visualization)技术指的是运用计算机图形学和图像处理技术,将数据换为图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。简单来说就是将看似毫无意义的数据、信息、知识等等以一种容易理解的视觉方式展示出来的技术,从而对数据进行更深入的观察和分析。
下面给大家推荐下国外统计学家 Nathan Yau 总结自己2017年最喜欢的十个数据可视化项目,涵盖范围广,项目生动、有趣且有深度。读者们可以选择自己感兴趣的项目动手体验一下吧。
1.使用数学改变Gerrymandering


Gerrmandering的意思是杰利蝾螈,是一个来自美国的政治术语,指以不公平的选区划分方法操纵选举,致使投票结果有利于某方。Olivia Walch在这个项目中以连环画的形式讲解了Gerrmandering,通过这个项目你可以了解到一个合适的选举区应该是什么样子。
2.卡西尼号的壮丽旅行


正环绕土星的卡西尼号卫星已经做好了准备进入大气层的准备,美国国家地理杂志的Nadia Drake和Brian T.Jacobs详细介绍了卡西尼号卫星13年来的旅行及其探测情况。在这个项目中,能够详细的看到该卫星的相关情况。
3.你是怎样画一个圆?


Google quick draw这个绘画小程序展示了文化是如何塑造我们的本能。Huong Ha和Nikhil Sonnad特别关注人们是如何画圆的,以及不同的人画圆的风格。在这个项目中,可以看到不同国家的人们画圆的风格是否相同。
4.灯亮&灯灭


John Nelson将2012年地球的夜间卫星影像与2016年的影像进行了比较,以估算世界上新出现的灯光以及已熄灭的灯光区域。在这个项目中,可以通过区域灯光的照亮或暗淡/熄灭大致说明这片区域的发展情况。
5.信任的变化


Nicky Case设计的这款游戏很好玩,相信大家玩完之后会对信任产生进一步的思考。这款游戏系统分析现实世界中的信任产生过程,通过深入研究博弈论来演变信任。
6.破解鸟蛋形状的奥秘


不同种类的鸟儿会下不同形状的鸟蛋,这其中的原因直到最近科学家才弄清楚。Sarah Crespi和Jia You科学地结合视频、数据图形和插图来说明这个世人不怎么关系的话题,在这个项目中,一只蛋的长度与鸟的形体大小有关;蛋的形状(椭圆/不对称等)与鸟儿的飞行习惯有关,鸟儿的飞行能力越强,鸟蛋就会越不对称或椭圆。
7.数据草图


也许每个人应该与伙伴系统(buddy system)一起工作。数据草图是Nadieh Bremer和Shirley Wu两人之间的合作方式,每个月他们都会选择一个主题,然后每个人都创建一个非传统的交互式图形。在这个项目中,每个月的数据草图真的都挺美,中间似乎停止更新了,希望能够继续更新下去并填补中间遗留的部分。
8.Pudding杂志


Pudding是一个视觉类文章出版物,从上图中可以看到,只创办了一年的“视觉论文杂志”Pudding是一个雄心勃勃的项目,拟帮助他人通过数据和图表了解复杂的主题。从可视化的角度来看,既可以编辑文章,又是一种商业模式,真的是一件有趣的事情。
9.一生中发生日全食的情况


在这个项目中,记录了未来的100年时间里,你这一生中能看到日全食的地点和时间。总的来讲,每1.5年就可以从地球的某个地方看到日全食。该项目以地球仪的形式展现了后续日全食出现地点和时间,真的很新颖且有趣。
10.夏天变得越来越热


有时候,人们会感觉到夏天越来越热了。这个感觉没有错,夏天确实变得越来越热了。在这个项目中,Nadja Popovich和Adam Pearce使用一个直方图直观地可视化夏天的温度,他们统计了自20世纪80年代以来每十年的夏季实际气温,并与固定的基线平均值进行比较。研究人员发现,自1980年后,夏季气温急剧变化,变得越来越热。
原文
更多技术干货敬请关注云栖社区知乎机构号:阿里云云栖社区 - 知乎

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-11 18:53 | 显示全部楼层
这个问题,其实涉及到一门庞大而又有趣的学科——数据可视化

关于数据可视化,做数据分析或者大数据的人估计都知道,最先想到的就是图表,把数据变成图表不就是可视化吗?


当然这样理解是绝对没有问题的,但是太狭隘、太局限
可视化的概念非常广泛,除了图表之外,凡是可以帮助用户理解数据的手段都可称为数据可视化
而怎么把枯燥的大数据进行可视化,远远不是做几张图那么简单
一个优秀的可视化一般需要满足三个条件:信、达、雅
    所谓的信就是要保证数据的正确性;达即是要让用户轻松接收到数据信息,能够对数据进行有效的表达;而雅即是要保证可视化的美观;
从重要程度上看,信>达>雅
想要做出完美的可视化,最最重要的就是要保证数据的准确性,在表达上要准确无误,不能带来一些歧义的地方。
比如说关键数据的缺失、指标与维度的谬误等等,这些因素都会导致我们的可视化失去了最本质的意义:反应数据的真实情况
比如2014年巴西世界杯半决赛,东道主巴西对阵德国战车的全场数据统计,就是典型的关键信息缺失造成了“信”的误判


所谓的达,就是要让用户准确获取可视化所传递出的信息,而不能造成认识困难和信息接收障碍
这个问题经常是一些不注重可视化表达的人,做完数据分析就简单拉个图,也不管对方是否能看懂,这就是缺失了可视化的达
通常来说犯的毛病就是图表过于沉重、繁琐,图标选择不正确,不注重用户体验等等
比如地铁图,如果我们按照普通的可视化地图绘制方法,根据不同的距离方向进行绘制,地铁图就会出现这样的情况:


一些地铁站密集的地方都拥挤在了一起,不利于用户去获取地铁站的信息;
所以我们做地铁图一般都是将地铁站进行等距离、单方向处理,也就是这个样子:


最后一个要素是雅,通俗点说就是要做的好看,这个要素也有很多人会犯很多的误区,一方面是很多人觉得好看没什么用,另一方面则相反过度注重可视化的美观度。


首先我的观点,可视化的主要目的是为了让用户准确高效的获取信息,这才是可视化最关键的要素,美观程度只能是锦上添花,如果没有了前两个要素,过度注重美观也是没有任何意义的,皮之不存毛将焉附?
用什么能做到信达雅的可视化?

制作可视化报告的方法有很多,最常见的Excel就能做,不过Excel的缺陷在于不能支持大数据量,数据量一大就卡
如果是代码大佬的话可以用python或者Echarts做,可视化效果很惊艳
但是对一般的业务人员来说为了做个报告去学python,代价太大了,所以我推荐技术小白使用BI工具来做可视化报告,操作简单,上手快,这里我以国内用的比较多的FineBI来给大家演示一下可视化分析报告的制作过程。
用FineBI做可视化报告流程主要分为5步:
    连接/导入数据数据处理/清洗(过滤、筛选、新增公式列)探索式分析数据可视化输出报告
一、数据连接

通常我们用Excel做业务分析,需要从公司的各个系统取数,导出成Excel表,然后再进行一系列的分析操作
如果用FineBI的话就省去了这部分取数的麻烦活儿,它可以直接和公司的各种类型的数据库直接链接,也可以手动导入Excel数据集


数据库链接完成之后,新建业务包,然后把需要数据表从数据库添加到业务包中:


二、数据加工处理

数据拿到手之后,我们要对数据进行加工,进行脏数据清洗和一些数据指标的计算,可能要对数据进行过滤、分组汇总、排序、合并等操作
一般用Excel操作就需要写一大堆函数来实现,要是途中有哪一步操作失误,有可能就要一步步倒回去检查,重新再来一遍
不过在FineBI中是通过自助数据集来进行数据加工的,最大的好处是每一步的操作都会被记录,可以随时随地检查每一步的操作,直接进行修改,不需要一步步撤回


三、探索式分析

刚才上面也说了,单纯的数据陈列对领导来说没有意义,管理者更想看到通过对某项业务指标数据的分析得出可行性的结论,打个比方,领导让你对本季度的销售情况做个汇报:
A情况:
你简单拉了一下这个季度的销售数据,发现本季度销售额同比上季度上涨很多,于是你告诉老板“这个季度销售情况不错,销售额上涨很多
B情况:
你简单拉了一下这个季度的销售数据,发现销售额同比上季度很多,于是你又对本季度的订单数据进行了分析,发现2月份的订单数量明显高于其他两个月
然后你再详细查看了各门店2月份的订单数据,发现某个门店数据突出,询问门店经理后得知该门店2月份进行了一次线上促销活动,效果很多,销量大增
于是你给老板汇报“本季度销售情况不错,主要得力于XX门店在2月进行的XX线上促销活动,我们以后可以在其他门店多多开展这样的活动
想都不用想,老板肯定喜欢B中的答案。因此做可视化报告的过程不仅仅是数据可视化,还有数据分析
在FineBI中,进行数据可视化分析的过程比较简单,拖拽就可以生成可视化图表,非常适合业务人员进行探索式分析



四、数据可视化
经过上面的探索分析,我们基本可以知道我们需要在报告上展示哪些指标,要表达哪些数据
这时候我们就要选择合适的图表来展现数据,比如线形图最适合表现与时间有关的趋势,亦或是两个变量的潜在关系,当数据集中的数据点过多时,使用散点图进行可视化会比较容易,直方图展示数据的分布等等
一般的新手小白在图表选择上会纠结很长时间,还容易选不对合适图表,如果用FineBI做就容易多了,它会根据你拖拽到横纵轴的指标数量智能推荐图表,还有进行纬度和指标数量的提示,帮助快速找到合适的图表


五、可视化报告制作

可视化报告的制作主要分这几部分:可视化布局、图表配色、细节修饰
1、可视化布局
可视化设计的页面布局,要遵循以下三个原则:
    聚焦:通过排版布局,把重点指标放在核心区域,让观看者能够迅速解读关键信息平衡:要合理的利用可视化的设计空间,在确保重要信息位于可视化空间视觉中心的情况下,保证整个页面的不同元素在空间位置上处于平衡,提升设计美感。简洁:在可视化整体布局中不要使用过于复杂的元素以免影响数据呈现。
可以从网上找一些模版进行参考,不过Finebi里面也内置了很多demo可以参考
2、图标配色
颜色是最有效的美学特征之一,很容易吸引我们的注意力,所以一份优秀的可视化报告,图表颜色的使用也非常重要,一般来说,图表配色要遵循几个一致性:
    数值指标一致性
当根据某一个指标的数值大小进行颜色映射时,建议使用生长色系的渐变颜色。
    指标颜色一致性
对于相同的度量尽量使用同一色系的颜色方案,避免使用过多的颜色对用户造成干扰。
    色系颜色一致性
尽量选择相同色系的颜色方案,避免撞色。
    语义颜色一致性
符合语义的颜色可以帮助人们更快地处理信息,尽量根据指标含义选择符合人类最直观感受的颜色。
3、细节修饰
完成可视化图表设计和组合布局之后,我们的数据分析报告还没有完全做好,光把几个图表的组合拼接在一起,领导也不一定能看到每个图表要表达的意义,所以我们需要给图表添加标题或者一些文字注释,也可以在报告中体现分析的背景及结论,帮助领导更好的理解报告


想用FineBI这样的神器做出高颜值的动态报表并不是难事,难的是如何充分利用好这些繁多的功能,针对业务找到关键指标和数据,让老板一眼就能看到报表的价值所在,才这是我们应该追求的目标
FineBI商业智能软件 - 新一代自助大数据分析的BI工具

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-11 19:02 | 显示全部楼层
泻药。。我基本没怎么做过Data Visualization的事情,只能胡乱说说。
这个叫数据可视化。我工作过的公司是用很老土的方式做的:手动跑MapReducer Job然后让Reporting组的人清理数据并用d3库做显示。
D3是个很神的库,现在在数据可视化方面很热很热:
Gallery · mbostock/d3 Wiki · GitHub
一般数据量很大的话,无非就是根据某种方式做聚合再筛选。
比如Word Cloud图,一般用来显示热搜关键字之类的信息,越大的字说明频率约高。真正的关键字会有千万甚至上亿,你要显示的无非也就是几十个。
如果跑类似Hive的SQL-On-Hadoop系统,你大致可以这么写:
SELECT keyword, COUNT(*) AS cnt
FROM search_log
GROUP BY keyword
ORDER BY cnt DESC
LIMIT 50;
这样你就得到了最热关键字的前50个,并按照频度排序。
然后调用预封装的d3接口,这个接口会接受一个关键字加词频的数据文件,并按照Word Cloud的方式显示,你就会得到类似这个例子的效果:


而类似百度春运图的东西,也是经过聚合运算和删选过滤。
百度迁徙
可以想象,上面的图是按照两地之间的迁徙作为聚合条件,然后筛选出最热的几百条迁徙路线再在地图数据上画边。
比如:
SELECT 始发地,目的地, count(*) as cnt
FROM 春运购票数据
GROUP BY 始发地,目的地
ORDER BY cnt DESC
LIMIT 500;然后d3也有类似这样的例子可以显示地图信息:
http://mbostock.github.io/d3/talk/20111116/airports.html

至于上面问题里的话题相关度可视化,虽然也是聚合筛选,但是从原始数据计算相关度并聚类(Clustering)本身,可能就是个很麻烦的问题,是数据挖掘信息获取中专门的一个话题。要处理这个东西可能要写复杂的MapReduce Job才能得到好看的图,而不是向上面两个例子那样几行Hive Query就解决了。

这是老土手动的方式处理并显示数据的。
高帅富也可以选择商业解决方案,比如
Datameer | Big Data Analytics
http://www.pentaho.com/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-23 05:22 , Processed in 0.099062 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表