精华内容
下载资源
问答
  • 数据可视化平台理论与实践

    万次阅读 2017-08-02 09:32:26
    前面说完了大数据开发平台的核心组件,作业调度系统,接下来讨论一下大数据开发平台的脸面之一,数据可视化平台。

    前面说完了大数据开发平台的核心组件,作业调度系统,接下来讨论一下大数据开发平台的脸面之一,数据可视化平台。和调度系统一样,这又是一个很多公司可能想要自己造一个轮子的系统。。。

    数据可视化平台是什么?

    不过,慢着,先等一下,什么是数据可视化平台?我们用这个高端大气上档次的词语,所指的对象和你所理解的是同一个东西么?

    它是像天猫双十一时,这种占据了200个平米的屏幕,全球各地曲线狂飞,五颜六色的数字噼啪跳动,流光溢彩,浑身毛孔都洋溢着互联网必胜精神的大屏狂欢系统么?


    还是像各种定位未来,使用三维全息地图,旋转透视,指哪打哪,动态叠加各种数据悬浮图层,隐隐流淌出一股运筹帷幄,决胜千里的气质的XX智慧城市系统呢?

    又或者,是近有裸眼3D VR现实,远有黑客帝国天网矩阵,虚拟和现实交融,不知是庄周梦蝶还是蝶梦庄周的终极数字物化空间?


    好吧,是,也不是

    相似的是途径,都是希望借助更加丰富的视觉图形图像手段,将数据更加直观的展现出来。不同的是,对视觉效果的追求,暂时还不在我所指代的可视化系统的目标范围之内,简单的说,酷炫是一个加分项,但不是核心需求。

    那你问,我说来说去,这个可视化平台,到底指的是什么玩意?让我换个不那么阳春白雪的名词:报表系统,这几个字,大家应该不陌生了吧。

    所以我为什么这么矫情,故弄玄虚,不早说报表系统这几个字呢?

    这是因为传统的报表系统,多半是以表格,或者有限的图例比如折线图的形式,静态的展示底层的数据快照,通常也没有太多的用户交互能力,更多的是一个固定了逻辑和形式的单向展示系统。

    为了和传统报表系统的下里巴人形象区分开来,改进了目标定位和功能特性的报表系统当然就不好意思再叫这个名字了。最起码,也得冠上个BI商业智能系统的头衔 ;)

    所以,你看,市面上知名度较高的报表类系统,不叫BI都不敢出来混,如果逼格高一点的,哪怕在外围用上了一点点分布式计算技术的,那还必须得叫敏捷BI,以示和“老朽缓慢的”传统商业智能系统划清界限。然后大家都“敏捷”了,怎么办?那就要返璞归真强调内涵了,好比你玩嘻哈的,这时候就要问,你有没有Free Style呢?于是,可视化这么低调而有内涵的词语,也就渐渐流行开来。


    因此,总结下来,就是报表系统这个名字所代表的境界,太Low了。要建设好四个现代化的大数据平台,我们需要一个比传统报表系统更现代化一点的数据可视化平台。当然了,重要的不是它叫什么,而是在名字的背后,它所试图提供的产品形态是什么。

    又造轮子,那些商业智能系统们,有什么问题么?

    商业化的BI产品厂商很多,国外比较知名的产品,比如 Tableau, QlikView, Power BI,国内号称已经敏捷化的,比如永洪BI,帆软FineBI和BDP。

    此外,还有源自互联网行业公司的产品新兵,比如阿里云的Quick BI,网易的网易有数,Amazon的QuickSight也是同类产品。而阿里云的DataV,则是奔着更炫的展示效果去的,比如我们前面说的双十一大屏,智慧城市之类,BI数据分析功能不是它的重点

    从产品自身定位的角度来说,这些商业化的产品并没有太大的问题,我们造轮子,并不是因为他们的产品自身功能做得不够好,比如图例够不够丰富,用户交互够不够直观,操作够不够便捷之类。这方面的能力,是商业产品赖以生存的根基所在,别人家几十几百人的团队,经过几年十几年的时间开发的产品,当然不是我们派上个把同学,短时间内自己造轮子能够比得过的。别说我们,你看连企鹅爸爸在自己的公有云大数据套件服务上,提供的都是永洪的产品。


    所以你要说是大家不想出钱用商业产品,所以自己开发么?也未必,且不说购买商业产品服务的价格和自己开发的代价哪个高,不要钱的开源产品也有不少啊,通用的,专用的都有,比如:

    • 目标定位为商业BI替代品的 Saiku /pantaho 体系
    • Airbnb租房公司自己玩得很high然后开源的Superset
    • ELK体系中为日志分析而生的Kibana
    • 缘起OpenTSDB为监控而生的Grafana

    那么,问题来了,论成熟度和易用性你多半做不过商业产品,想“省钱”也有开源产品,为什么还要自己玩,是因为闲得慌么?楼上的Airbnb,还有阿里/腾讯/网易在不做公有云对外贩卖BI服务之前,也都是自己开发自己用,大家都是没事可做了么?

    我个人以为,根本上还是由于一些应用场景,商业产品难以适配的原因,至少,对于我司这类“互联网”公司来说是这样的 ;)

    传统的商业BI产品,基本上功能都很强大,但是部署和学习成本也比较高,而且往往流程定制化程度很高,和SAP等产品体系的整合做得也比较深入,所以基本上是属于比较自洽和封闭的系统,它们的目标是给你提供一整套完整的解决方案。

    而公有云上的BI产品,虽然部署和学习成本相对较低(因为功能没有成熟的商业产品那么纷繁复杂 ),但是,从自洽和封闭的角度来说,也是类似的,对接外部系统的能力较弱(或者说并不情愿)

    比如,多数产品会提供从数据源采集,清洗到展示的定制流程,而用户的权限管理,数据的存储和生命周期管理,有些产品甚至连数据格式,都是自成体系的。此外,这些产品的内部功能组件,数据结构信息等,通常也不会以服务的形式对外暴露。

    所以,在这种情况下,如果你的数据处理链路可以全部交给对应的系统去管控,或者你所需要查询展示的数据可以完全导入到对应的系统中,又或者该产品能通过jdbc接口查询你自己管理的数据,并且不存在性能等问题,那么问题不大,如果不行,就会比较难处理。

    而想要和你自己的周边系统进行流程上的集成,那基本上是不太可能的。想要拓展功能,比如添加个实时图表展示能力,和开发平台流程打通等等,也基本不用想了。

    至于既有的开源的系统,虽然不存在封闭的问题,但其自身业务逻辑也往往比较固定和模式化,要改动成本也不低,能不能二次开发为你所用,也取决于你自己平台的流程和功能定位。

    总结下来,是直接使用商业产品,还是开源二次开发,又或者是完全自主开发,基本上是按照你的业务复杂度和你所使用的周边系统的生态环境来决定的,通常情况下,你的业务模式也复杂,你需要自主开发的可能性就越高。但是,不排除你可以针对不同的场景需求,采用不同的解决方案来最小化总体代价。

    最后唠叨一下,你要问,商业或开源产品难道就不可能成熟到可以很好的适配各种复杂应用场景么? 理论上,我认为是有可能的,但就目前来看,至少几年内不太现实,因为

    首先在大数据领域里,底层的存储和计算引擎差异巨大,远还没有达到标准检索方式能一统天下的局面,各种业务组件和流程往往需要定制和灵活适配处理逻辑。

    其次,现有的比较成熟的产品,其封闭的逻辑思维要打破,首先受其商业模式的限制,未必愿意,而即使愿意,也需要花费很长的时间才能逐步完成。

    最后,针对大数据领域应用场景的结合,说实话,我对传统背景厂商的产品在这方面的研发能力,是表示怀疑的,这不是投几个人的问题,而是思维方式和产品定位的问题。当你的多数用户对这类场景没有复杂需求的时候,你即没有经验,也不可能把精力投入到小众专家用户的需求上去。这点,横向类比的看看公有云服务厂商所提供Hadoop集群服务就知道了,基本都是用最基础最简单的功能去满足绝大多数小白用户的需求,减少服务的变数和风险,才是他们保证产品成功的关键,定制?灵活?统统免谈。

    具体产品需求分析

    对我司来说,我们自主开发的数据可视化系统,既不打算追求界面的酷炫,也不打算追求各种组件的极度丰富,和大数据生态系各种组件的配合,和公司内部各种私有数据源的打通,与周边系统和开发平台开发流程的深度集成,对数据权限和用户的全面自主管控,才是核心所在。

    所以我司数据可视化系统的产品设计目标如下:

    产品定位

    总体目标定位是通用的数据图表可视化服务后台,不仅局限于BI业务,也希望通过自定义配置的方式,可以支持各类有数据展示需求的业务后台。使用方提供数据来源,我们负责提供平台和可视化服务,通过简单的配置,完成大多数图表展示业务所需的功能,节省图表开发人员的工作量,节省其它业务后台开发人员的工作量。

    使用模式上,希望尽可能的让用户能够自主定义和管理相关自己的图表,从开发,查询,检索到权限管控,都尽量让用户能够自主的完成,无需管理员或者平台开发者介入,降低平台维护成本。


    大的产品功能维度

    • 以页面维度为单位进行自定义配置开发,页面中可以自由添加多个图表展示控件
    • 支持自定义图表页面布局的能力,包括但不限于Frame/Column等基础布局组件
    • 支持常用的图表和文本组件,支持过滤器等组件,提供参数化配置组件的能力
    • 标准化数据源接口,可动态拓展新的数据源
    • 提供基础的数据分析和格式化配置能力,支持如同比,环比,聚合运算,阈值基线,维度层级定义等功能
    • 查看数据的终端用户,能够自定义数据视图,可以进行排序,过滤,钻取分析,局部缩放等动作
    • 支持定时动态刷新图表,支持实时数据展示业务
    • 支持个人业务视图,支持图表收藏订阅等功能

    多租户管理和用户权限维度

    • 支持可嵌套的业务分组能力,支持按目录结构树分级授权管理可视化图表,授权范围为业务组自身顶级目录以下的所有内容包括子目录
    • 业务组管理员角色可以管理组内用户,进行角色配置,目录审核,审批(增删改等)
    • 支持对各类图表设置不同的安全等级,区别管理,高安全等级的报表,目录,角色的管理,需要走审批流程
    • 支持图表元数据信息的检索,在没有详情权限的情况下,支持列表和简介浏览,便于自主申请权限

    和周边系统的开放集成维度

    • 支持图表的邮件订阅,定时以邮件形式发送图表内容
    • 支持可视化页面嵌入第三方后台,便于第三方后台集成具体图表进行展示,节省开发工作量
    • 支持以API的形式根据模版创建图表,便于和开发平台等外部后台集成,支持一些快速自动生成图表的业务场景。

    部分产品需求的实践详解

    页面布局开发流程方面

    在页面布局这一部分,理想的情况,你可能会希望做到,随意拖拽,所见即所得,但我们没有走这条路,而是显式的提供了列布局等控件,通过配置参数的形式(比如需要几列,长宽多少)来决定最终页面的布局情况。

    原因有两个,其一,说实话,我们没有那么多的人手来开发这种拖拽式的交互页面,其二,拖拽这种形式,如果不能做到极度智能,收益并不明显,甚至对于要求精确控制布局的场景,操作起来反而更加繁琐。你看阿里云的DataV,这种极度看重展现形式的应用,拖拽布局的功能改版过几次就知道了。而多数用户在绝大多数场景下,页面布局都是相对简单标准的,参数化的操作形式可能反而更加简洁。

    页面整体展示和具体的图表控件配置流程方面

    对于页面布局和具体组件的配置,不少的商业系统都是走的独立配置和管理的路,比如,你为一个数据库表格,添加一个折线图的控件进行展示,这个折线图控件,就是一个图表。而整合了多个图表控件,最终提供给用户查看的页面,可能被叫做仪表盘(Dashboard)。在开发配置流程上,它们是独立的,一个管具体数据展现形式,一个管页面布局。

    而在我司的可视化系统中,用户进行图表配置开发时,最小的管理单位就是页面(你可以理解为就是其他家所说的仪表盘),在页面内添加多个控件,然后编辑这些控件,控件对本页面外的其它页面来说是不共享,不可见的。


    这两者的选择,我们也是经过权衡的,前者的优势是控件可以在多个仪表盘之间共享,目标显然是为了能够复用控件,降低开发工作量。

    但是,我们认为,这是一个相对理想的愿望,实际上共享起来也面临很多的问题,比如权限的管理授权方面就会更加复杂,有更多的对象要管理和授权,然后,信息同步也是问题,如果共享这个控件的几个仪表盘是由不同的同学负责,那么谁对控件说了算?或者之后不同的仪表盘对这个空间的展现形式有了不同的需求,怎么办等等。这些问题,当然都能找到解决方案,但是在业务,流程方面的沟通代价也就更高了。此外操作流程上也会更加繁琐一点(这个倒不是最大的问题)

    当然,如何取舍,最终还是取决于在你的实际应用场景中那种方案综合代价最低。就我们的场景来说,目前看来,在仪表盘之间共享完全一样的图表控件的需求并不大,方便权限和业务管理,尽可能简化开发流程,相对来说反而更加重要一点。

    具体控件功能支持方面

    在控件类型丰富度和参数配置灵活度方面,如果你去比对一下国内的商业产品,你会发现这往往是他们的卖点之一,这个说我有火焰图,字符云,那个说我支持任意双样式图例等等。至于字体大小样式,线条颜色粗细,数据点形状大小,文字对齐方式,边框距离之类的各种参数多半也都是可以自定义调整的。

    这么灵活的配置,必然也是有代价的,工作量摆在那里,没有几十人的团队打底,这些玩意,绝对是做不出来的~~~

    你说这些功能有没有用,肯定有用,有总比没有强(除了用户界面难免更加复杂以外)。但是常不常用,该不该用,有些时候,我觉得往往是走入误区的。不是说系统具备这些功能有什么不好,而是说很多时候用户为了炫而炫的用法,恨不得把页面画成彩虹,在仪表盘里把所有的控件和颜色用个遍。。。这往往就脱离了数据可视化的本质目的:更简单,更直观,更高效的理解数据。

    事实上,对于可视化系统上的业务来说,如何用合理的方式组织数据,让目标用户快速的掌握情况,发现问题,得到结论,这才是工作的重点。

    思维方式的不同,其实在国外和国内的BI商业产品的实现身上也看得到一些迹象,为了迎合国内很多企业追求绚丽花哨的展示效果的需求,国内的产品在UI视图展现方面花了很多力气,几乎无所不能,但是在流程管控,系统稳定性,处理数据的能力和效率,以及开发模式和工具标准化等方面投入的精力相比国外成熟产品,就少了很多。

    对于我司自研的可视化系统而言,客观的来说,我们在控件丰富度和配置的灵活度方面和商业产品相比较,是有不小的差距的。但这其中,我个人认为计算和展示方面功能性的改进,优先级远高于UI视觉效果方面的改进;常用核心控件易用性的改进,优先级远高于整体控件种类丰富度的改进。

    目前我司的可视化系统支持如下控件,感觉已经稍微有点多了,现阶段还是应该重点加强基础控件的功能和易用性改进


    数据源支持方面

    对于传统的BI工具来说,数据都在RDBMS中,语法相对规范,所以数据源的支持不是什么大问题,而对于大数据环境下的可视化系统来说,外部数据来源种类繁多,应用模式复杂,能灵活的适配支持各种数据源,就变得非常重要。

    透过JDBC去获取数据是最常见的形式。理论上来说,如果后端引擎的查询效率足够好,并且提供类SQL方言的查询语法,那么通过JDBC接口对接外部数据源就是一个较为理想的方案

    但是,这里面最主要的问题是,不同的后端引擎对SQL的支持程度并不完全一样,特别是那些非传统RDBMS的引擎,比如Hive,实际使用的是HQL语法,和SQL标准并不完全兼容,而在性能方面,不同的引擎往往也有各自的优化方式和最佳实践模式。

    所以,如何拓展数据源,并没有一个完美通用的解决方案。JDBC的方案能解决一大部分问题,其它数据源要么可能要针对性的写对应的接口,要么可能需要经过导入转换的过程来解决。

    不过,JDBC的接口,从基础功能和SQL语法设计的角度来说,也未必完全满足可视化系统的需求,主要的问题是在OLAP即时分析类应用场景下,需要对数据进行各种维度的聚合操作,以支持灵活的下钻和上卷分析功能。这些功能往往不是所有的后端数据库或存储查询引擎都能较好的支持的。

    此外OLAP类应用往往还需要定义各种维度指标模型或Cube模型,为了提升性能,可能还需要实现针对数据或者针对查询的Cache缓存层。

    以上两点,总结来说,就是在面向用户的展示配置表达层,和面向数据的存储引擎层之间,是否需要实现一个通用的聚合运算层来衔接。这部分工作,在国内多数的BI商业产品中往往并没有实现。

    当然,自己做一层聚合运算层,其实是很困难的,这一中间层做得越好,对底层引擎的依赖固然越少,拓展数据源的能力也越强,但是实现的代价也就越高。而且针对不同的底层引擎,一些计算下推下去执行,效率可能会更高,但每个引擎如何适配,哪些在计算层处理,哪些交给后端引擎处理,在非RDBMS的领域中,往往没有固定答案,具体流程也可能千差万别,所以界限并不是那么容易划分。因此至今为止,市面上也并没有太理想的方案。

    不过,单纯就OLAP查询表达逻辑这一点来说,相对常见的做法是在用户配置表达层和JDBC/SQL执行层之间,添加一层基于MDX语法的OLAP查询语义层,用来承载业务逻辑的语义描述,然后通过类似Mondrian之类的引擎翻译成SQL语法去执行。在这个过程中,这些中间服务引擎可以针对OLAP的场景做一些优化,比如我们上面所说的,做一些聚合运算,缓存优化之类的工作。

    我司当前的实现,基本上还是抽象在了JDBC/SQL语法这一层面上,在此之上做了少量的聚合操作,此外,对一些后端引擎的SQL方言做了兼容处理,并且支持我司内部一些自研的数据源。总体来说,这方面的工作还需要进一步的改进。

    用户查询使用方面

    相对传统的定制开发的报表系统,可视化系统以控件的方式支持全自助图表开发,目的是为了提高了图表开发者的工作效率,增强应用模式。


    而用户查询使用方面的产品功能设计,针对的则是图表查阅者的使用效率。对于查看数据的终端用户来说,能够按照自己的思维模式,从不同的角度去查看数据,同样是拓展应用模式,提高工作效率的有效手段

    所以,我们会需要比如排序,过滤,钻取,缩放等等在图表查询时的自定义手段

    进一步的来说,如果终端用户可以通过自定义查询视图的手段来定制数据展现形式,那么实际上,对于图表开发者来说,很有可能就可以花费更少的时间去关注和配置一些与视图展现相关的逻辑。

    比如用表格还是折线图来展示数据,哪些字段需要做汇总,提供哪些过滤条件等等,从报表开发者的角度来说,往往没有绝对的对错,而是取决于终端用户查询的需求和目的。

    如果这些部分用户可以简单快速的在查询时进行定制,那么就没有必要在图表开发时专门进行配置了,从而间接的提高了图表开发者的工作效率,让他们可以集中精力去关注维度指标和运算逻辑等真正和数据模型相关的内容。

    实时业务支持方面

    实时数据业务的数据可视化支持工作,多数的商业BI系统其实并不能完全高效的承载,原因有两点:

    一是数据源方面,实时流式数据的接入形式和传统静态图表JDBC形式的输入源还是有比较大的差别的,比如它的数据来源可能是消息队列。

    对此,你可以通过将数据实时刷新到DB中,定时轮询的方式来实现,以此来规避对实时数据源的处理。对于绝大多数场景,这是一种确实可行的方案。当然,为了达到这个目标,对系统和整体数据处理链路还是有一些要求的,比如可视化系统支持定时刷新图表,此外数据源的更新必须足够迅速(需要从外部系统批量导入数据,处理转换成内部数据结构的这类BI系统,就卡壳了)

    二是图表的展现形式,可能和传统离线静态图表有一些不同。举例来说:比如你要配置一个实时监控业务数据,你可能需要滑动刷新展示最近一个小时时间窗口的数据,你也可能需要和昨日对应时刻的数据进行环比对照,连续的数据流,数据时间间隔不固定,个数不固定,一天内未来时间点的数据还没有生成,图表展示范围如何正确处理,X轴坐标如何生成等等。

    这些问题严格说来,也不见得在离线图表的场景下绝对不会遇到,只是通常来说,离线图表在这些方面通常没有强烈的需求,所以市面上的系统在这方面的功能实现和产品形态考虑方面就会薄弱很多。

    但实际上,从可视化的角度来说,实时业务的数据可视化需求,绝大多数的功能需求还是可以和静态图表业务复用的。而且随着实时数据业务需求的日益增多,两者之间的应用边界其实也越来越模糊,这种情况下,如果能做到一个系统承接两种业务,当然是最好了。

    我司的可视化系统,从整体流程上来说,比如自动刷新图表等功能是具备的,为了承接实时业务,一些图表控件也做了少量的适配工作,不过在实时数据展现方面,更多的还是依靠预处理数据(比如对横坐标时间轴进行人工分段处理),去适配静态图表的展示形式,配置的难度还比较大,后续需要考虑进一步简化流程。

    多租户和用户权限管控方面

    我司的可视化系统定位的是一个开放的服务平台,服务的对象不仅针对数仓/BI等团队,所以有必要通过多租户的形式来支持不同的业务方。


    而要避免多租户之间相互影响,就需要进行隔离管控。通过分级授权,可以将整个可视化系统的图表目录树结构拆分成独立的业务组进行管理。

    每个业务组目录范围内的图表,目录结构等完全由业务组各自的管理员独立管理,日常的角色,权限分配,流程审批等,也不需要平台超级管理员进行干预,业务组内部可以再创建子业务组,进一步分隔权限。只有在新建顶层业务组时需要召唤平台超级管理员。

    这样做的目的是尽可能对业务方充分授权,能够独立对自己所负责的对象进行自主管辖和二次授权。同时又不至于对其它租户的业务造成影响。

    从我们的实践来看,这种方案从功能的角度来看,可以实现我们的预设目标,不过,真正要发挥作用,还是需要用户能够利用好这些功能机制,毕竟业务组的管理,目录结构的整理等等还是有一些工作要做的。

    很多情况下,为了图一时之方便,不少用户并不愿意做这种梳理工作,巴不得人人都是超级管理员,想干啥干啥,这样一来风险其实就不可控了,业务组的价值也就小了很多。这点需要平台开发者进一步思考简化管理的可能,并对用户进行最佳实践的引导。

    至于图表和角色安全等级的设置,主要是为了加强敏感数据的安全管控工作。不同等级的图表,具体申请过程中,需要审批的环节各不相同,最低等级的图表,无需申请,就是完全公开的。最高等级的图表,需要高层领导和风控团队参与审批,而中间等级的图表,一般只需要图表负责人或者业务负责人审批就可以了。

    为了防止图表授权出去以后,就收不回来的现象,申请流程中加入了生命周期的管理,过期的图表自动收回权限。

    周边系统集成方面

    上面的多租户能力是从用户和业务的角度讨论平台的开放性,而这一节,是从系统集成的角度来讨论平台的开放性。

    除了让用户登陆系统查看数据,我们还提供通过邮件订阅的形式定时发送图表数据给订阅者。当然这种模式下,用户就无法进行一些复杂的交互操作了,不过多数情况下,日常快速浏览数据还是足够的。

    另外,实际上,我们的可视化系统的定位,所服务的业务并不是单一的报表系统。大量的业务后台,都需要展示自己的业务数据,虽然数据不同,但是展现形式多半还是类似的,那么能不能输出可视化平台既有的图表配置开发能力和业务管控流程,减少这些业务后台的开发工作量呢?

    这一般有两种做法,一是提供可复用的代码组件,业务方在此基础上自主开发,这种形式可以节省一部分的控件开发代价,但是整体的管控流程和配置化的开发方式还是没法复用。所以,我们提供的是页面嵌入第三方后台的服务能力。

    业务方可以在可视化平台上通过配置的方式开发自己的图表页面,然后通过特定的服务接口,获取这些页面,嵌入到自己的后台上进行展示和交互。这样既降低了第三方后台开发者的开发代价,使用过程中,用户也无需跳转到可视化平台,整体体验较好。

    要支持页面嵌入第三方后台的功能,主要需要考虑的是用户权限的传递管控和交互模式的衔接,这些都不算太难,只是形态方面要考虑周全。

    产品改进目标

    产品的改进目标,前面多少也提到过了一些,这里再统一整理总结一下

    可视化组件改进

    先看一下我司可视化平台内,各种组件的使用频率数据


    从上图大致可以看到,整体来说,当前,我司的可视化平台内,95%以上的图表只会使用类似表格/折线图/柱状图/饼图/文本这类最基础的控件。这说明了两个问题:

    第一,多数业务的数据展示,真的不需要稀奇古怪的展示形式,标准的形式覆盖了多数的需求。

    第二,一些直觉来说应该也比较很常用/有用的控件,当前的实际使用频率如此之低,未必真的合理。可能的原因包括:新开发的控件推广不够,业务方的使用思维还停留在简单表格阶段;这些控件的功能和易用性还比较粗糙,难用,业务方不意愿使用。

    所以,针对上述问题,可视化组件改进的重点,应该会是:

    • 加强常用核心控件的改进,借鉴商业产品中这部分控件的功能形态设计,进一步重点提升它们的功能和易用性,让价值产出最大化
    • 针对使用频率低得不合理的控件,调研分析,找到阻碍用户使用的问题点,改进形态,加强推广。

    至于控件种类的扩展和与功能无关的视觉效果方面的改进,除非绝对必要,否则暂不考虑。

    配色方面,考虑到页面嵌入第三方后台,进行系统集成时不要太违和,可以考虑页面整体提供颜色主题模版供用户选择。

    加强终端用户自定义视图能力

    如前所述,增强终端用户自定义视图的能力,可以拓展用户的应用模式,提高查询数据的工作效率,也能降低图表开发者的开发代价。这方面,在我司可视化平台现有功能的基础上,可以改进的工作包括但不限于:

    • 支持查询时自定义聚合操作,比如用户在查询时可以自定义特定字段的聚合条件,做一些简单的类似求和/求平均之类的统计操作,不需要报表开发者在配置图表阶段进行定义,或者迫使用户下载数据后再扔到Execl之类的软件中另行处理。
    • 支持查询时自主定义过滤组件,无需报表开发者提前配置可用于执行过滤的字段和过滤用组件。
    • 支持查询时控件切换能力,比如折线图切换成柱状图等,可以在有限的功能范围内,允许终端用户自主选择合适的展现形式。当然,前提是这种切换是合理的,比如数据量大小,维度与控件的逻辑和应用模式是否匹配等等
    • 支持查询时自定义数据同环比对比,基线阀值等能力。基本上任何数据,终端查询用户都有可能有与历史数据比对的需求,完全靠图表开发者来配置相关功能也是不太现实的。

    总结来说,就是任何数据视图方面的配置,如果没有特殊需求(比如强制过滤条件,限制用户的查询范围)必须预定义的,那么它们的变更和设定,都可以考虑从图表配置阶段挪到图表查询阶段来实现,交给最终用户来选择,图表开发者只提供必需的默认值。

    拓展数据源,增强OLAP业务能力

    一方面适当考虑接入开源的第三方中间层,比如Saiku,Mondrian等框架中的中间层部分,另一方面不排除定制适配一些OLAP类引擎数据源的可能性,总体目标都是提高处理海量数据的能力,接入更多的OLAP类应用场景

    增强实时数据业务展示能力

    如前所述,我们当前要接入实时数据业务的展示,图表开发配置的代价还比较高,需要进一步考虑针对实时连续数据流的场景,如何优化配置流程和展示形式。

    增强对第三方平台的服务能力

    目前我们所支持的比如邮件订阅,页面嵌入第三方平台等服务能力,基本上都是属于预定义图表,然后单向输出的形式。

    但是实际上,还有很大一部分的第三方平台,需要即时渲染数据的能力,比如用户在数据开发平台的WebIDE界面上,运行了一个脚本,想要将结果以图形化方式展示出来。

    如果可视化平台能够通过API接口,将图形渲染功能服务化,对外提供即时定义图表和数据渲染,图形输出的能力,那么也就能够满足这部分平台的数据展示需求了。要提供这样的服务,难点还是在于如何进行高效的数据传输和权限管控。

    其它杂类

    • 对移动端展示平台的支持
    • 多租户的进一步隔离,比如提供独立URL,提供物理隔离的资源部署(比如针对第三方渲染服务,OLAP类计算密集业务等场景,就有可能有这样的资源隔离需求)的能力

    小结

    脸面,总得好好玩吧。


    常按扫描下面的二维码,关注“大数据务虚杂谈”,务虚,我是认真的 ;)


    展开全文
  • 本章是课程的开篇首先建议同学们学习课程导学对学习本课程的目的学习的主要内容课程的体系结构有一个大概的了解知道有哪些学习资源明确怎样才能学好本课程在此基础上通过思维导图大概了解本章的知识框架了解本章学习...
  • 一份小白前端可视化学习指南——附思维导图 前言 因为群里粉丝一直要求我写一篇「可视化入门指南」,今天他来了。其实说起前端可视化,大家所能想到的就是各种图表,大屏。这种看着贼炫酷,而笔者呢工作也一直从事3D...

    一份小白前端可视化学习指南——附思维导图

    前言

    因为群里粉丝一直要求我写一篇「可视化入门指南」,今天他来了。其实说起前端可视化,大家所能想到的就是各种图表,大屏。这种看着贼炫酷,而笔者呢工作也一直从事3D前端开发工作,慢慢对图形产生了兴趣。但是呢一直做的是三维的东西,没搞过二维的。大概是2月前开始学习2D的一些东西,然后并写了一些文章,效果还不错。所以我就写一些经验之谈,大佬勿喷。 我大概从4个方面去讲我是怎么学习的

    1. 「可视化不得不掌握的数学基础」

    2. 「svg」方面的学习

    3. 「canvas」方面的学习

    4. 「可视化中」不得不掌握的「图形算法」

    读完本篇文章,你可以大概知道我该怎么去学,需要学什么?以及我推荐的一些学习资料和学习资源!

    数学篇

    提起数学很多程序员头疼哇,我写代码还要学可恶的数学,但是我很明确的告诉你——「很重要」,如果你想学可可视化的话,数学很重要,背后的几何意义更重要。读者一开始理解不深,导致很多东西理解不了,吃了很多亏哇!

    向量

    在二维空间或者三维空间中, 是不是都有点的概念,只不过一个是二维的一个是三维的, 假设,现在这个平面直角坐标系上有一个向量 v。向量 v 有两个含义:一是可以表示该坐标系下位于 (x, y) 处的一个点;二是可以表示从原点 (0,0) 到坐标 (x,y) 的一根线段。

    向量
    向量

    我在写canvas的同时就喜欢用一个Point2d 类就是这个原理, canvas本身就是坐标系。画布上的点都可以用向量表示, 原点在左上方。

    向量加减法

    一个向量可以用其他两个向量去表示,也可以用两个向量去做减法,我说个实际工作中经常用到的例子: 如何让一个点在某一个方向延展多少长度呢?

    这里其实就是用到了向量的加法, 「首先这个方向肯定是是个单位向量」 , 为什么是单位向量呢?? 因为向量是有「大小」和方向的, 而「单位向量 只有方向, 长度 为1」 ,然后我们只要开始点 加上 这个方向向量 ✖️ 长度。就可以得到了。 背后不就是向量加法的运用。 我还是画图给大家展示下吧。

    向量加法
    向量加法

    如图:我要从A-B点 方向是od 然后你可以乘以任何长度 得到 OD 然后相加, 是不是就可以得到B点了。 一图胜千言!,减法大家可以自己去思考,同样的道理的

    向量的叉乘和点乘

    其实很多种实践,这里我就举一个例子哈,带你了解点乘。其实还有投影

    向量点乘可以用来判断 连个向量是否同一方向, 我还是画图给大家讲解, 不说太多理论,都是实战中经常用到的。

    叉乘
    叉乘

    A向量和B向量之间的夹角是锐角 所以是同向 , B向量和C量之间的夹角是钝角所以是反向 ,因为点乘的数学公式就是两个向量的模长 × cosθ 。

    叉乘

    叉乘的几何意义也是非常重要的,可以算多边形的面积, 计算出另一个向量 垂直于这两个向量。 还是开始画图:

    垂直
    垂直

    X向量 和 Y向量去做叉乘 得到的 向量Z 是 xy 平面的「normal」

    算面积:

    面积
    面积

    叉乘的数学意义: A向量的模长 × B向量的模长 × sinθ 不就是平行四边形的高 H 所以可以用来算面积。

    叉乘还可以用来判断三个点的方向

    Corss 的几何叉积得到的是一个数值, 只要判断当前数值是大于0 小于 0就好了, 就知道这个三个点的方式是逆时针 还是顺时针就好了。

    顺时针还是逆时针
    顺时针还是逆时针

    图中可以看到 OAB 和OA1B 的方向是不同,OA向量✖️ OB向量 的值 和 OA1 ✖️OB向量 算出的来的值 是相反的。公式我给大家列举下:

    a.x * b.y - a.y * b.x

    其实向量的点乘 和叉乘非常的重要,大家一定要要好理解,后面的图形算法,很多也是基于这个去实现的。

    矩阵

    空间中图形的大部分变化都是可以通过矩阵去表示的,大概有下面几种类型:

    1. 平移矩阵
    2. 旋转矩阵
    3. 缩放矩阵
    4. 镜像矩阵
    5. 错切矩阵
    6. 投影矩阵

    这里我给大家推荐的学习资源是B站的:

    https://www.bilibili.com/video/BV1ib411t7YR?from=search&seid=15308763710996235630

    线性代数的本质,看完你就能够明白了,包括上面的向量之间的变化。

    镜像矩阵我推荐你看我这篇文章, 我是求导了三维空间中任意平面的镜像矩阵的了,

    求空间任意平面的镜像矩阵

    我这里给大家简单的讲解下最简单的变化—— 「平移矩阵」

    还是看下图吧:

    平移矩阵
    平移矩阵

    在这样的三维坐标系中从A点平移到B点 x变化了 2 y变化了0 z 变化了 2 对应矩阵的写法是什么呢:

    其实矩阵中每一行都有对应的矩阵, 平移矩阵一般改变的第四列的前三个数字

    曲线

    无论是2d还是3d都需要曲线的表达,最简单的圆弧、椭圆弧、然后连续曲线可以用贝塞尔曲线去表达,还有B样条曲线,nurbs曲线。掌握曲线最终的还是数学哇。

    圆的方程: x ^2 + y ^ 2 = r ^ 2

    椭圆的方程: x ^ 2 / a ^ 2 + y ^ 2 / b ^ 2 = 1

    n阶贝塞尔曲线的方程: 𝐵(𝑡)=∑𝑖=0𝑛𝑃𝑖(1−𝑡)𝑛−𝑖𝑡𝑖,𝑡𝜖[0,1]

    b样条曲线和nurbs曲线我还没接触过,但是我们组的小伙伴正在做自由曲面,可能涉及到了。这里我只是简单表示了直线方程,有了方程你可以你去进行高度模拟,比如我在做3D文字的时候,我们底层算法库还没有支持贝塞尔, 不过没关系我们不是有方程嘛, 可以通过方程将贝塞尔曲线离散成多个点,然后用直线去表达。因为我们人眼去看屏幕上的东西,离散的很多的话,肉眼是完全看不出来的。 我这里给大家看一张图吧:

    弧线
    弧线

    圗这个部分的弧线我就是用我贝塞尔曲线 离散成直线去表达的, 还有国中的点其实也是贝塞尔曲线离散成直线去做的。从视觉上来看是能够近似模拟的。3D文字中的 更多技术,我后面会专门写一篇文章去详细介绍, 顺便自己去梳理下。如果你感兴趣,那你可得关注我,不然就找不到我了。

    坐标系的转换

    为什么要有这个东西呢,canvas和svg的坐标系都是左上方是原点,这一点你不觉得有点反人类? 好不舒服,我在画折线图的时候就发现了,从原点向上,坐标轴是递减的。其实这个问题怎么解决呢,其实很简单就是我们进行坐标系的转换,我将原先画布的原点, 通过变化到左下角, 这样我们在计算点的坐标的时候,就没有心智负担了,该怎样就是怎样。 说完2d我再和你聊聊3D, 就拿Three.js 举例子吧有个局部坐标系,观察坐标系(相机)、 世界坐标系、裁剪坐标系、屏幕坐标系。

    这是空间中某个物体到最终屏幕所做的一系列操作。

    1. 首先物体的自身有个坐标系我们叫做局部坐标系,他也有个原点,但是他在世界坐标系下也有对应的位置,所以他们之间有一个矩阵变化——「模型矩阵」

    2. 世界坐标系——到观察坐标系也有矩阵变化, 这叫「视图矩阵」

    3. 观察空间——裁剪空间 叫做 「投影矩阵」因为3维空间的东西我们是用相机去模拟人眼,在视椎体内的东西才能被看到。所有就有了投影矩阵, 有透视投影和正交投影, 一个近大远小,一个远近都是一样的

    4. 标准设备坐标-屏幕坐标。 这里就涉及到坐标系的原点的问题。

      坐标系
      坐标系

    归一化的坐标是相对于画布中心的, 但是canvas默认的坐标系是左上角的。 我们分析下坐标系的变化,首先Y轴是相反的所以 第一个变化就是 X不变,然后Y都✖️ -1这下方向对了,差的就是偏移量。 x轴和Y轴差的偏移量都是画布的一半宽度和高度。 这样就实现了,到屏幕坐标的转换了。

    svg和canvas

    SVG和canvas的学习我还是推荐Mdn, 大家去认真从头撸一遍,然后再谈进阶,再去如何优化, 你连基本的api都不熟悉和谈进阶对吧。

    1. svg教程 https://developer.mozilla.org/zh-CN/docs/Web/SVG/Tutorial

    2. canvas教程 https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial

      跟着后面学一遍,手敲一遍,自然就明白其中的奥秘。 下面👇是我用了这么久的小经验,和小tips

    3. svg中的path 中大写字母和小写字母的 区别主要是相对定位和绝对定位的关系。

    4. svg的defs标签 不会出现在画布上,是为了下面的组合使用的

    5. svg的g 和 symbols 都可以实现组合 ,但是symbols 有viewbox 也就是视口的概念

    6. use 复用标签 对应上文定义的id

    7. canvas 「clearRect()」 清除画布 由于canvas 每一帧都要进行重绘

    8. 「restore() save()」 保存当前canvas 的状态 确保不影响 其他绘图元素

    9. 「isPointinPath()」 可以用来点是不是在最后一个绘制的path 中(有坑) , 判断点是不是在图形内部最后用算法去解决。

    10. beginPath() 和 closePath() 的使用

    11. 像素级别的处理 imageData 的使用

    当你熟悉了这些可以进阶了, 推荐学习

    「进阶学习」

    深入理解canvas

    https://joshondesign.com/p/books/canvasdeepdive/title.html

    Canvas 最佳实践(性能优化)

    https://www.cnblogs.com/mopagunda/p/5622911.html

    canvas 离屏渲染

    https://devnook.github.io/OffscreenCanvasDemo/keep-ui-responsive.html

    canvas视频学习

    https://www.bilibili.com/video/av26151775/

    「推荐书籍」

    《HTML5 Canvas核心技术:图形、动画与游戏开发》

    《HTML5 2D游戏编程核心技术》

    webgl

    1.学习图形学基础

    一定一定一定要看闫令琪老师的GAMES101现代计算机图形学。建议1.5倍速,大概一个月内可以掌握。跟着课程,把光栅渲染器和光线追踪的作业都做掉,学了这门课,差不多图形学基础就打牢了。对图形学、游戏、3D引擎、OpenGL、Unity、UE差不多也有了基本的认识。我自己还没有看完,还在学习中。

    https://www.bilibili.com/video/BV1X7411F744?from=search&seid=7915905348717479996

    2.webgl 网站学习,这是我觉得质量非常不错同时又有点深度的学习网站

    https://webglfundamentals.org/webgl/lessons/zh_cn/webgl-fundamentals.html

    1. 「着色器和glsl」
    2. 光照和颜色
    3. 如何加载外部模型
    4. 点线面如何三角化
    5. 贴图

    书籍推荐:

    webgl 编程指南

    3D游戏与计算机图形学中的数学方法

    Fundamentals of Computer Graphics (4th Edition)

    「directx 9.0 3d游戏开发编程基础」 这本书强力推荐 虽然是用c++写的 ,但是他把整个渲染流程讲解的很清楚,我反正看了收获很大。这也是我们老大推荐的一本书。

    框架层面

    three.js

    image-20210808004031389
    image-20210808004031389

    Three.js 是最知名的 WebGL 项目,Contributions 人数高达 1313,和 React 是一个量级的,尽管它自身的定位只是渲染引擎,但社区硬是把不少游戏引擎的功能都加上了,比如物理引擎、贴花、动画等,在源码中有大量例子,很适合学习,但不少重要功能,比如 gltf 加载器,都是放在 examples 目录里,让人感觉很不正式。

    由于知名度最高,Three.js 最大的优势就是社区强大,搜索问题能找到很多答案,也有非常多开源和商业项目使用

    但 Three.js 在版本管理方面很不专业,到现在都还没采用 semver 版本命名规范,每次发布都是一个叫 rXXX 的版本,我见过不少基于 Three.js 的项目都是固定在某个版本不敢升级了

    babylonjs

    image-20210808000356624
    image-20210808000356624

    最后压轴的是 Babylon,它也是 Sugar 最终采用的 WebGL 引擎,不仅功能强大,代码质量也很高,TypeScript 类型完善,几乎每个函数都有注释。

    Babylon 在材质方面功能丰富,除了基础的 PBR,还提供了用于皮肤的次表面渲染 SubSurface、用于车漆的 ClearCoat、用于布料的 Sheen,以及用于光盘之类的各向异性材质 Anisotropy 等等。

    Babylon 最后一个亮点是正在开发 WebGPU 版本,而其他引擎都没开始做,所以等 WebGPU 发布后,Babylon 应该是首批支持的,将得到更多关注。

    AntV

    image-20210808000608074
    image-20210808000608074

    在AntV中,有好几个不同的可视化引擎,事实上,它们是相互隔绝的,彼此独立的。学习的时候需要单独的去学习。ChartCube图表魔方支持在线的生成图表。地图则使用L7地理空间数据可视化。

    echarts

    image-20210808000817240
    image-20210808000817240

    ECharts最初是"Enterprise Charts"(企业图表)的简称,来自百度EFE数据可视化团队,是用JavaScript实现的开源可视化库。ECharts的功能非常强大,对移动端进行了细致的优化,适配微信小程序,支持多种渲染方式和千万数据的前端展现,甚至实现了无障碍访问。底层是用的z-render 这个库去进行封装的。还是很值的学习对的,有点类似于组件的概念,进行可配置的去展示图表。

    d3

    image-20210808001245616
    image-20210808001245616

    D3是指数据驱动文档(Data-Driven Documents)。D3.js是一个JavaScript库,它可以通过数据来操作文档。D3可以通过使用HTML、SVG和CSS把数据鲜活形象地展现出来。D3严格遵循Web标准,因而可以让你的程序轻松兼容现代主流浏览器并避免对特定框架的依赖。同时,它提供了强大的可视化组件,可以让使用者以数据驱动的方式去操作DOM。被称为可视化版的jquery。

    图形算法

    最后讲一下不得不掌握的图形算法, 比如很简答的例子。 判断点是不是在任意多边形内部对吧这就是 涉及到算法。

    我大概列举下

    1. 判断点是不是在任意闭合polygon中 「用射线检测法, 有内部的点,像任意方向发出一天射线计算出交点的个数, 奇数就是内部 偶数就是外部」
    2. 判断连续多边形的方向 是顺时针还是逆时针 **求面积的正负 ** 「求平面的noraml (慎用) 对于凹多边形是不准的」
    3. 二维图形下, 任意图形的相交 推荐两个库 「clipper 和turf 洞和外轮廓的概念,自己可以百度了解」
    4. 判断一个点 在某个向量的哪一面 「上面的三点求方向逆时针还是顺时针」
    5. 线段求线段求相交 「直线方程求焦点」
    6. 求任意两个区域的包含关系 内部 外部 相交
    7. 碰撞检测 「boundingbox 求交集」

    这里我大概列了一下我工作中用到的一些算法。

    推荐一些文章:

    「谈"求线段交点"的几种算法(js实现,完整版)」

    https://www.cnblogs.com/i-gps/archive/2012/06/19/2554992.html

    「计算几何与图形学有关的几种常用算法」

    https://blog.csdn.net/wilson1068/article/details/44133303

    点在多边形内算法——判断一个点是否在一个复杂多边形的内部

    https://blog.csdn.net/hjh2005/article/details/9246967

    「实现多边形的交并差还有偏移」

    http://turfjs.org/

    「Clipper库中文文档详解」

    https://www.cnblogs.com/zhigu/p/11943118.html

    总结

    本篇文章大概就是我的个人理解哈,水平有限,能表达的就这么多。如果有更好的欢迎补充学习和交流,文章有错误的欢迎指正。最后送给大家一张思维导图,对照学习哈。我是热爱图形的Fly,我们下次再见👋啦。

    思维导图
    展开全文
  • 数据可视化、信息可视化与知识可视化 (2011-07-23 12:28:17) 标签: 校园 分类: 工作篇 数据可视化 简介   数据可视化是关于数据之视觉表现形式的研究;其中,这种数据的视觉...
      
    

    数据可视化、信息可视化与知识可视化

    (2011-07-23 12:28:17)
    标签:

    校园

    分类: 工作篇
    数据可视化

    简介

       数据可视化是关于 数据 之视觉表现形式的研究;其中,这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。   数据可视化技术的基本思想是将数据库中每一个数据项作为单个图元元素表示,大量的数据集构成数据图像,同时将数据的各个属性值以多维数据的形式表示,可以从不同的维度观察数据,从而对数据进行更深入的观察和分析。

    数据可视化、信息可视化与知识可视化北京2008年地铁规划图

    概述

      数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息。但是,这并不就意味着,数据可视化就一定因为要实现其功能用途而令人感到枯燥乏味,或者是为了看上去绚丽多彩而显得极端复杂。为了有效地传达思想概念, 美学 形式与功能需要齐头并进,通过直观地传达关键的方面与特征,从而实现对于相当稀疏而又复杂的 数据集 的深入洞察。然而,设计人员往往并不能很好地把握设计与功能之间的平衡,从而创造出华而不实的数据可视化形式,无法达到其主要目的,也就是传达与沟通信息。   数据可视化与 信息图形 信息可视化 科学可视化 以及统计图形密切相关。当前,在研究、教学和开发领域,数据可视化乃是一个极为活跃而又关键的方面。“数据可视化”这条术语实现了成熟的科学可视化领域与较年轻的信息可视化领域的统一。

    基本概念

      数据可视化技术包含以下几个基本概念:   ①数据空间:是由n维属性和m个元素组成的数据集所构成的多维信息空间;   ②数据开发:是指利用一定的算法和工具对数据进行定量的推演和计算;   ③数据分析:指对多维数据进行切片、块、旋转等动作剖析数据,从而能多角度多侧面观察数据;   ④数据可视化:是指将大型数据集中的数据以图形图像形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。   目前数据可视化已经提出了许多方法,这些方法根据其可视化的原理不同可以划分为基于几何的技术、面向像素技术、基于图标的技术、基于层次的技术、基于图像的技术和分布式技术等等。

    历史

      数据可视化领域的起源可以追溯到二十世纪50年代 计算机图形学 的早期。当时,人们利用计算机创建出了首批图形图表。1987年,由布鲁斯·麦考梅克、托马斯·德房蒂和玛克辛·布朗所编写的 美国国家科学基金会 报告《Visualization in Scientific Computing》(意为“科学计算之中的可视化”),对于这一领域产生了大幅度的促进和刺激。这份报告之中强调了新的基于计算机的 可视化技术 方法的必要性。随着计算机运算能力的迅速提升,人们建立了规模越来越大,复杂程度越来越高的数值模型,从而造就了形形色色体积庞大的数值型数据集。同时,人们不但利用医学扫描仪和显微镜之类的数据采集设备产生大型的数据集,而且还利用可以保存文本、数值和多媒体信息的大型数据库来收集数据。因而,就需要高级的计算机图形学技术与方法来处理和可视化这些规模庞大的数据集。   短语“Visualization in Scientific Computing”(意为“科学计算之中的可视化”)后来变成了“Scientific Visualization”(即“科学可视化”),而前者最初指的是作为科学计算之组成部分的可视化:也就是科学与工程实践当中对于计算机建模和模拟的运用。更近一些的时候,可视化也日益尤为关注数据,包括那些来自商业、财务、 行政管理 数字媒体 等方面的大型异质性数据集合。二十世纪90年代初期,人们发起了一个新的,称为“信息可视化”的研究领域,旨在为许多应用领域之中对于抽象的异质性数据集的分析工作提供支持。因此,目前人们正在逐渐接受这个同时涵盖科学可视化与信息可视化领域的新生术语“数据可视化” 。   自那时起,数据可视化就是一个处于不断演变之中的概念,其边界在不断地扩大;因而,最好是对其加以宽泛的定义。数据可视化指的是技术上较为高级的技术方法,而这些技术方法允许利用图形、 图像处理 计算机视觉 以及用户界面,通过表达、建模以及对立体、表面、属性以及动画的显示,对数据加以可视化解释。与立体建模之类的特殊技术方法相比,数据可视化所涵盖的技术方法要广泛得多。

    数据可视化的适用范围

      关于数据可视化的适用范围,目前存在着不同的划分方法。一个常见的关注焦点就是信息的呈现。例如,迈克尔·弗兰德利(2008)提出了数据可视化的两个主要的组成部分:统计图形和主题图。另外,《Data Visualization: Modern Approaches》(意为“数据可视化:现代方法”)(2007)一文则概括阐述了数据可视化的下列主题 :   1)思维导图   2)新闻的显示   3)数据的显示   4)连接的显示   5)网站的显示   6)文章与资源   7)工具与服务   所有这些主题全都与图形设计和信息表达密切相关。   另一方面,Frits H. Post (2002)则从计算机科学的视角,将这一领域划分为如下多个子领域:   1)可视化算法与技术方法   2)立体可视化   3)信息可视化   4)多分辨率方法   5)建模技术方法   6)交互技术方法与体系架构   数据可视化的成功应归于其背后基本思想的完备性:依据数据及其内在模式和关系,利用计算机生成的图像来获得深入认识和知识。其第二个前提就是利用人类感觉系统的广阔带宽来操纵和解释错综复杂的过程、涉及不同学科领域的数据集以及来源多样的大型抽象数据集合的模拟。这些思想和概念极其重要,对于计算科学与工程方法学以及管理活动都有着精深而又广泛的影响。《Data Visualization: The State of the Art》(意为“数据可视化:尖端技术水平”)一书当中重点强调了各种应用领域与它们各自所特有的问题求解可视化技术方法之间的相互作用。

    相关领域

       数据采集 (有时缩写为DAQ或DAS),又称为“数据获取”或“数据收集”,是指对现实世界进行 采样 ,以便产生可供计算机处理的数据的过程。通常,数据采集过程之中包括为了获得所需信息,对于 信号 波形 进行采集并对它们加以处理的步骤。数据采集系统的组成元件当中包括用于将测量参数转换成为电信号的 传感器 ,而这些电信号则是由数据采集硬件来负责获取的。

    数据分析

       数据分析 是指为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。数据分析与数据挖掘密切相关,但 数据挖掘 往往倾向于关注较大型的数据集,较少侧重于 推理 ,且常常采用的是最初为另外一种不同目的而采集的数据。在统计学领域,有些人将数据分析划分为描述性统计分析、探索性数据分析以及验证性数据分析;其中,探索性数据分析侧重于在数据之中发现新的特征,而验证性数据分析则侧重于已有假设的证实或证伪。   数据分析的类型包括:   1)探索性数据分析:是指为了形成值得假设的检验而对数据进行分析的一种方法,是对传统统计学假设检验手段的补充。该方法由美国著名统计学家约翰·图基命名。   2)定性数据分析:又称为“定性资料分析”、“定性研究”或者“质性研究资料分析”,是指对诸如词语、照片、观察结果之类的非数值型数据(或者说资料)的分析。

    数据治理

      数据治理涵盖为特定组织机构之数据创建协调一致的企业级视图(enterprise view)所需的人员、过程和技术,数据治理旨在:   1)增强决策制定过程中的一致性与信心   2)降低遭受监管罚款的风险   3)改善数据的安全性   4)最大限度地提高数据的创收潜力   5)指定信息质量责任

    数据管理

       数据管理 ,又称为“数据资源管理”,包括所有与管理作为有价值资源的数据相关的学科领域。对于数据管理,DAMA所提出的正式定义是:“数据资源管理是指用于正确管理企业或机构整个数据生命周期需求的体系架构、政策、规范和操作程序的制定和执行过程”。这项定义相当宽泛,涵盖了许多可能在技术上并不直接接触低层数据管理工作(如 关系数据库 管理)的职业。

    数据挖掘

      数据挖掘是指对大量数据加以分类整理并挑选出相关信息的过程。数据挖掘通常为商业智能组织和 金融分析师 所采用;不过,在科学领域,数据挖掘也越来越多地用于从现代实验与观察方法所产生的庞大数据集之中提取信息。   数据挖掘被描述为“从数据之中提取隐含的,先前未知的,潜在有用信息的非凡过程”,以及“从大型数据集或 数据库 之中提取有用信息的科学”。与企业资源规划相关的数据挖掘是指对大型交易数据集进行统计分析和逻辑分析,从中寻找可能有助于决策制定工作的模式的过程。

     

     

     

     

     

    数据可视化是关于数据之视觉表现形式的研究;其中,这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量[1]

     

    概述

    数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息。但是,这并不就意味着,数据可视化就一定因为要实现其功能用途而令人感到枯燥乏味,或者是为了看上去绚丽多彩而显得极端复杂。为了有效地传达思想概念,美学形式与功能需要齐头并进,通过直观地传达关键的方面与特征,从而实现对于相当稀疏而又复杂的数据集的深入洞察。然而,设计人员往往并不能很好地把握设计与功能之间的平衡,从而创造出华而不实的数据可视化形式,无法达到其主要目的,也就是传达与沟通信息[2]

    数据可视化与信息图形信息可视化科学可视化以及统计图形密切相关。当前,在研究、教学和开发领域,数据可视化乃是一个极为活跃而又关键的方面。“数据可视化”这条术语实现了成熟的科学可视化领域与较年轻的信息可视化领域的统一[3]

    历史

    法国工程师查尔斯·约瑟夫·密纳德英语:Charles Joseph Minard于1861年绘制的关于 拿破仑 入侵 俄罗斯 的信息图

    数据可视化领域的起源可以追溯到二十世纪50年代计算机图形学的早期。当时,人们利用计算机创建出了首批图形图表。1987年,由布鲁斯·麦考梅克英语:Bruce H. McCormick托马斯·德房蒂英语:Thomas A. DeFanti玛克辛·布朗英语:Maxine D. Brown所编写的美国国家科学基金会报告《Visualization in Scientific Computing》(意为“科学计算之中的可视化”)[4] ,对于这一领域产生了大幅度的促进和刺激。这份报告之中强调了新的基于计算机可视化技术方法的必要性。随着计算机运算能力的迅速提升,人们建立了规模越来越大,复杂程度越来越高的数值模型,从而造就了形形色色体积庞大的数值型数据集。同时,人们不但利用医学扫描仪和显微镜之类的数据采集设备产生大型的数据集,而且还利用可以保存文本、数值和多媒体信息的大型数据库来收集数据。因而,就需要高级的计算机图形学技术与方法来处理和可视化这些规模庞大的数据集[3]

    短语“Visualization in Scientific Computing”(意为“科学计算之中的可视化”)后来变成了“Scientific Visualization”(即“科学可视化”),而前者最初指的是作为科学计算之组成部分的可视化:也就是科学与工程实践当中对于计算机建模模拟的运用。更近一些的时候,可视化也日益尤为关注数据,包括那些来自商业财务行政管理数字媒体等方面的大型异质性数据集合。二十世纪90年代初期,人们发起了一个新的,称为“信息可视化”的研究领域,旨在为许多应用领域之中对于抽象的异质性数据集的分析工作提供支持。因此,目前人们正在逐渐接受这个同时涵盖科学可视化信息可视化领域的新生术语“数据可视化”[3]

    自那时起,数据可视化就是一个处于不断演变之中的概念,其边界在不断地扩大;因而,最好是对其加以宽泛的定义。数据可视化指的是技术上较为高级的技术方法,而这些技术方法允许利用图形、图像处理计算机视觉以及用户界面,通过表达、建模以及对立体、表面、属性以及动画的显示,对数据加以可视化解释。与立体建模之类的特殊技术方法相比,数据可视化所涵盖的技术方法要广泛得多[5]

    数据可视化的适用范围

    北京地铁 2015年规划图
    手绘 心智图

    关于数据可视化的适用范围,目前存在着不同的划分方法。一个常见的关注焦点就是信息的呈现。例如,迈克尔·弗兰德利英语:Michael Friendly(2008)提出了数据可视化的两个主要的组成部分:统计图形主题图英语:Thematic map[1]。另外,《Data Visualization: Modern Approaches》(意为“数据可视化:现代方法”)(2007)一文则概括阐述了数据可视化的下列主题[6]

    所有这些主题全都与图形设计和信息表达密切相关。

    另一方面,Frits H. Post (2002)则从计算机科学的视角,将这一领域划分为如下多个子领域[3]

    • 可视化算法与技术方法
    • 立体可视化
    • 信息可视化
    • 多分辨率方法
    • 建模技术方法
    • 交互技术方法与体系架构

    数据可视化的成功应归于其背后基本思想的完备性:依据数据及其内在模式和关系,利用计算机生成的图像来获得深入认识和知识。其第二个前提就是利用人类感觉系统的广阔带宽来操纵和解释错综复杂的过程、涉及不同学科领域的数据集以及来源多样的大型抽象数据集合的模拟。这些思想和概念极其重要,对于计算科学与工程方法学以及管理活动都有着精深而又广泛的影响。《Data Visualization: The State of the Art》(意为“数据可视化:尖端技术水平”)一书当中重点强调了各种应用领域与它们各自所特有的问题求解可视化技术方法之间的相互作用[3]

    相关领域

    核医学 成像: 心脏 SPECT英语:SPECT 图像( 短轴 视图)与心脏三维模型的 融合
    利用2004年来自 哈柏太空望远镜 的照片以及地基图像所编制合成的 螺旋星云 可见光 图像。
    全球 气温 分布图

    数据采集

    数据采集 (有时缩写为DAQDAS),又称为“数据获取”或“数据收集”,是指对现实世界进行 采样 ,以便产生可供计算机处理的数据的过程。通常,数据采集过程之中包括为了获得所需信息,对于 信号 波形 进行采集并对它们加以 处理 的步骤。数据采集系统的组成元件当中包括用于将测量参数转换成为 电信号 传感器 ,而这些电信号则是由数据采集硬件来负责获取的。

    数据分析

    数据分析 是指为了提取有用 信息 和形成结论而对 数据 加以详细研究和概括总结的过程。数据分析与 数据挖掘 密切相关,但数据挖掘往往倾向于关注较大型的数据集,较少侧重于 推理 ,且常常采用的是最初为另外一种不同目的而采集的数据。在统计学领域,有些人将数据分析划分为 描述性统计分析 探索性数据分析 以及 验证性数据分析 ;其中,探索性数据分析侧重于在数据之中发现新的特征,而验证性数据分析则侧重于已有假设的证实或证伪。

    数据分析的类型包括:

    数据治理

    数据治理 涵盖为特定组织机构之数据创建协调一致的企业级视图(enterprise view)所需的人员、过程和技术;数据治理旨在:
    • 增强决策制定过程中的一致性与信心
    • 降低遭受监管罚款的风险
    • 改善数据的安全性
    • 最大限度地提高数据的创收潜力
    • 指定信息质量责任

    数据管理

    数据管理 ,又称为“数据资源管理”,包括所有与管理作为 有价值 资源 的数据相关的 学科领域 。对于数据管理, DAMA 所提出的正式定义是:“数据资源管理是指用于正确管理企业或机构整个数据生命周期需求的体系架构、政策、规范和操作程序的制定和执行过程”。这项定义相当宽泛,涵盖了许多可能在技术上并不直接接触低层数据管理工作(如 关系数据库 管理)的 职业

    数据挖掘

    数据挖掘 是指对大量数据加以分类整理并挑选出相关信息的过程。数据挖掘通常为 商业智能 组织和 金融分析师 所采用;不过,在 科学 领域,数据挖掘也越来越多地用于从现代实验与观察方法所产生的庞大 数据集 之中提取信息。

    数据挖掘被描述为“从数据之中提取隐含的,先前未知的,潜在有用信息的非凡过程”[7],以及“从大型数据集或数据库之中提取有用信息的科学”[8]。与企业资源规划相关的数据挖掘是指对大型交易数据集进行统计分析和逻辑分析,从中寻找可能有助于决策制定工作的模式的过程[9]

     参见

     

     

     

    信息可视化

      

     

    [1]
    信息可视化(Information visualization)是一个跨学科领域,旨在研究大规模非数值型 信息资源 的视觉呈现,如软件系统之中众多的文件或者一行行的程序代码,以及利用图形图像方面的技术与方法,帮助人们理解和分析数据。与科学可视化相比,信息可视化则侧重于抽象数据集,如非结构化文本或者高维空间当中的点(这些点并不具有固有的二维或三维几何结构)。

    数据可视化、信息可视化与知识可视化

      信息可视化囊括了 数据可视化 信息图形 知识可视化 科学可视化 以及 视觉设计 方面的所有发展与进步。在这种层次上,如果加以充分适当的组织整理,任何事物都是一类信息:表格、图形、地图,甚至包括文本在内,无论其是静态的还是动态的,都将为我们提供某种方式或手段,从而让我们能够洞察其中的究竟,找出问题的答案,发现形形色色的关系,或许还能让我们理解在其他形式的情况下不易发觉的事情。不过,如今在科学技术研究领域,信息可视化这条术语则一般适用于大规模非数字型信息资源的可视化表达。   信息可视化致力于创建那些以直观方式传达 抽象 信息的手段和方法。可视化的表达形式与交互技术则是利用人类眼睛通往心灵深处的广阔 带宽 优势,使得用户能够目睹、探索以至立即理解大量的信息。

    一些例子

      各种各样 数据结构 可视化 需要新的 用户界面 以及可视化技术方法。现在,这已经发展成为了一门独立的 学科 ,也就是“信息可视化”[2] 。信息可视化与经典的科学可视化是两个彼此相关的领域,但二者却有所不同。在信息可视化当中,所要可视化的数据并不是某些 数学模型 的结果或者是大型数据集,而是具有自身内在固有结构的抽象数据。此类数据的例子包括:   1)编译器等各种程序的内部数据结构,或者大规模并行程序的踪迹信息;   2)WWW 网站内容;   3) 操作系统 文件空间;   4)从各种数据库查询引擎那里所返回的数据,如 数字图书馆   信息可视化领域的另一项特点就是,所要采用的那些工具有意侧重于广泛可及的环境,如普通工作站、WWW、 PC机 等等。这些信息可视化工具并不是为价格昂贵的专业化高端计算设备而定制的[2]   信息可视化与可视化分析在目标和技术之间存在着部分重叠。虽然在这两个领域之间还没有一个清晰的边界,但大致有三个方面可以作以区分。科技可视化主要处理具有地理结构的数据,信息可视化主要处理像树、图形等抽象式的数据结构,可视化分析则主要挖掘数据背景的问题与原因。

    与可视化分析论之间的联系

      就目标和技术方法而言,信息可视化与可视化分析论之间存在着一些重叠。当前,关于科学可视化、信息可视化及可视化分析论之间的边界问题,还没有达成明确清晰的共识。不过,大体上来说,这三个领域之间存在着如下区别:   1)科学可视化处理的是那些具有天然 几何 结构的数据(比如, MRI 数据、气流)。   2)信息可视化处理的是抽象数据结构,如树状结构或图形。   3)可视化分析论尤其关注的是 意会 推理

    发展历史

      自十八世纪后期数据图形学诞生以来,抽象信息的视觉表达手段一直被人们用来揭示数据及其他隐匿模式的奥秘。二十世纪90年代期间新近问世的图形化界面,则使得人们能够直接与可视化的信息之间进行交互,从而造就和带动了十多年来的信息可视化研究。信息可视化试图通过利用人类的视觉能力,来搞清抽象信息的意思,从而加强人类的认知活动。籍此,具有固定知觉能力的人类就能驾驭日益增多的数据。信息可视化的英文术语“Information Visualization”是由斯图尔特·卡德、约克·麦金利和乔治·罗伯逊于1989年创造出来的。据斯图尔特·卡德1999年的报告称,二十世纪90年代以来才兴起的信息可视化领域,实际上源自其他几个领域。2003年,本·什内德曼指出,该领域已经由研究领域之中从稍微不同的方向上崭露出头角。同时,他还提到了图形学、视觉设计、 计算机科学 以及 人机交互 ,以及新近出现的心理学和商业方法。

    相关应用

      信息可视化日益成为不同领域方向的关键要素:   科学技术研究工作;   数字图书馆;    数据挖掘   财务数据分析和市场研究;   生产制造过程的控制;   犯罪地图。
    参考资料

     

     

     

     

    信息可视化学习

    可视化基本上可以划分为两个大类:科学的可视化(医学信息的可视化、气象信息的可视化)和信息的可视化(软件工程的可视化、信息检索的可视化、因特网的可视化)。这两者的根本区别在于科学的可视化在显示和展示事务和概念时,继承事务和概念在它本体中的固有结构。
    传统信息检索系统(Internet搜索引擎,以及传统图书馆文献目录检索系统)
    1 没有考虑人的检索查询行为。
    2 对用户来讲是一个不透明的黑箱。
    3 用户对传统信息检索系统的检索过程是不连续的。
    4 检索结果是一种简单的线性表达。
    5 缺乏一种有效的检索反馈机制。
    6 检索结果不能够有效地展示大量文献体。
    信息检索可视化优势:
    1 一个可视化的信息检索环境利于用户进行信息浏览,信息开发,信息挖掘。
    2 可以使一个信息检索过程透明。
    3 可以向用户提供更为丰富的信息。
    4 有可能开发出新的信息检索和信息浏览方法和机制。
    5 可以将人的认知能力融入信息检索和信息浏览过程之中。
    6 是一个良好的人机对话和交流的环境。
    7 可以大大改善信息检索的检全率以及检准率。
    8 为传统的信息检索打开了一扇全新的窗口,开拓了崭新的应用以及研究领域,提升了信息检索的档次,
    它代表着信息检索系统发展的未来。
    建立信息检索可视化系统的一般步骤:
    1 选择应用领域以及信息检索系统类型。
    2 鉴别和定义要进行可视化的目标以及特征。
    3 对可视化空间的定义。
    4 目标体从原始数据库影射到可视化空间的算法和方法。
    5 定义可视化空间中信息检索和信息浏览方法。
    6 可视化系统设计语言的选择。
    可视化信息检索系统的常见功能:
    1 允许用户在可视化空间中观察文献与文献之间,可能的话文献与提问之间的语义关系,浏览可视化空间中任意特定领域。
    2 根据用户的需求,在可视化空间中动态地调整文献分布。
    3 根据用户的需求,在可视化空间中扩大/缩小一个特定的局部空间领域。
    4 根据用户的需求,在可视化空间中任意地选择一个文献并且阅读它的有关详细信息。
    5 提供信息查询手段。
    6 展示并且解释标准的情报检索模型以及其他信息检索机制。
    信息检索可视化面临的问题:
    1 怎样在有限的显示空间内展示海量信息?
    2 怎样有效地定义和建立信息可视化空间?
    3 怎样有效地评价信息检索可视化系统?
    4 信息检索可视化系统空间维数的争论。
    互联网信息的可视化主要反映在以下方面:
    1 对搜索引擎结果的可视化。
    2 对互联网之中网页之间节点联系的可视化。
    3 对互联网之中用户使用网络的情况进行可视化处理。
    信息检索的可视化系统:TileBars;VISUAL NET;GRIDL;DARE。(很遗憾,似乎为小范围实验系统,a某未能体验。)
    (注:以下资料源自林夏先生的PPT。)
    信息可视化是一门边缘学科(计算机科学,信息科学,心理学;教育学及其他应用领域)
    1995年前后,随着网络信息技术的发展,一批可视技术有了新的突破。信息可视化领域的一个里程碑是1995年开始的InfoVis年会。另一个里程碑是1999年出版的“Readings
    in Information Visualization”。
    信息可视化的三大支柱:感知的功能;图形的功力;联想的潜力。
    信息可视化是对人类智能一种新的开发:理性的智慧;感性的智慧;知性的智慧(理解感知的能力:认知的功能、图形的功能、联想的功能;通过计算机的功能来提高,放大认知的功能)
    信息可视化寻求人机合作(计算机将大量抽象的信息映射到图像上;人们通过图像的结构,特征等来理解认识从而获得知识。)
    计算机与人各显神通(电脑的高速信息处理能力远远超过人脑;人脑的识辨,理解能力是电脑所不可及的)
    今天的信息世界(信息爆炸:怎样组织它们?信息超载:怎样理解它们?所有信息是相互关联的:怎样介入它们?知识淹没在信息中:怎么发现知识?信息以各种形式展现:怎样显示他们?)
    信息可视化在数字图书馆中的应用(用可视化揭示信息的分布;用可视化显示检索的结果;用可视化为大量的信息分类;用可视化帮助用户浏览;用可视化为信息个体化服务)
    信息可视化的应用实例(以下站点经a某测试均可用)
    TheBrain:
    http://www.thebrain.com/
    Touchgraph: http://www.touchgraph.com/
    Grokker: http://www.groxis.com/service/grok/g_products.html
    Topic maps
    Highwire:
    http://www.highwire.org
    信息可视化开发工具:
    http://iv.slis.indiana.edu/
    InfoVis Cyberinfrastructure – Indiana University: http://iv.slis.indiana.edu/
    Piccolo Toolkit – University of Maryland: http://www.cs.umd.edu/hcil/piccolo/  
    the prefuse visualization toolkit:
    http://prefuse.sourceforge.net/
    The visualization toolkit: http://public.kitware.com/VTK/
    OpenDX: http://www.opendx.org/
    参考文献:
    1 (张进.信息检索可视化)曾民族主编.知识技术及其应用._北京:科学技术文献出版社,2005.11431-460
    2 林夏.信息可视化与数字图书馆.厦门数字图书馆高级研讨班PPT,2005.7
    3 林夏.信息可视化与可视分析.数字图书馆前沿问题(发展战略与实践)高级研讨班资料.2006.8
     
     
     
    http://wenku.baidu.com/view/850acb0b79563c1ec5da71b7.html
     
     
     
     
     
     

    知识可视化

      知识可视化指可以用来构建、传达和表示复杂知识的图形图像手段,除了传达事实信息之外,知识可视化的目标还在于传输人类的知识,并帮助他人正确地重构、记忆和应用知识。知识可视化有助于知识的传播,在信息技术条件下,知识可视化有了新的突破:制作工具越来越多,制作方法更为简易,表现形式更为多样。知识可视化在教育中也逐步应用起来,并且范围更加广泛,效果也更受期待。知识可视化作为学习工具,改变认知方式,促进有意义学习。知识可视化作为教育理念,促进教师进行反思,辅助教学设计。知识可视化以图形设计、认知科学等为基础,与视觉表征有着密切关联。视觉表征是知识可视化构成的关键因素。如概念图是基于有意义学习理论提出的图形化知识表征;知识语义图以图形的方式揭示概念及概念之间的关系,形成层次结构;因果图是以个体建构理论为基础而提出的图形化知识表征技术。知识可视化是通过视觉表征形式促进知识的传播与创新。无论是知识可视化设计还是应用,视觉表征都是这个过程中的关键部分。因此,知识可视化的价值实现有赖于它的视觉表征形式。   目前,在教育技术领域从事知识可视化研究的主要学者有武汉大学信息管理学院的周宁教授、南京师范大学赵惠臣博士(现任教于河南大学)和北京师范大学赵国庆博士等。赵慧臣博士著有博士毕业论文《符号功能视角下知识的视觉表征研究》,赵国庆博士在国内核心期刊也发表多篇相关论文。
     
     

    0

    阅读 (98) 评论 (0) 收藏 (0) 禁止转载 打印 举报
    已投稿到:
    加载中,请稍候......
    展开全文
  • 数据可视化 信息可视化Ggplot is R’s premier data visualization package. Its popularity can likely be attributed to its ease of use — with just a few lines of code you are able to produce great ...

    数据可视化 信息可视化

    Ggplot is R’s premier data visualization package. Its popularity can likely be attributed to its ease of use — with just a few lines of code you are able to produce great visualizations. This is especially great for beginners who are just beginning their journey into R, as it’s very encouraging that you can create something visual with just two lines of code:

    G gplot是R的首要数据可视化软件包。 它的受欢迎程度可能归因于它的易用性-只需几行代码,您就可以产生出色的可视化效果。 对于刚开始使用R的初学者来说,这尤其有用,因为您可以仅用两行代码就可以创建视觉效果,这非常令人鼓舞:

    ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()
    Image for post
    Output of above code
    上面代码的输出

    In this article, I want to highlight ggplot’s flexibility and customizability. Alternatives such as Matplotlib and Seaborn (both Python) and Excel are also easy to use, but they are less customizable. In this article, I’ll walk through 8 concrete steps you can do to improve your ggplot.

    在本文中,我想强调ggplot的灵活性和可定制性。 Matplotlib和Seaborn(都为Python)和Excel等替代方案也易于使用,但可定制性较低。 在本文中,我将逐步完成改善ggplot的8个具体步骤。

    In order to make sure that the advice in this article is practical, I’m going to abide by two themes:

    为了确保本文中的建议切实可行,我将遵循两个主题:

    1. Assume that the reader has some familiarity with ggplot: If you understood the chunk of code above you should be good. If you’re not familiar with ggplot, I’ll try to make the tips as language-agnostic as possible, so if you use base R, Python, or other visualization tools these tips may still be helpful.

      假设读者对ggplot有一定的了解:如果您理解上面的代码块,那就应该不错。 如果您不熟悉ggplot,我将尽量使这些技巧与语言无关,因此,如果您使用基本R,Python或其他可视化工具,则这些技巧可能仍然有用。

    2. Easy to follow along: If you want to run the example code yourself, all you need is R and tidyverse. No external datasets necessary as we will be using the diamonds dataset, which is included with ggplot.

      易于遵循:如果您想自己运行示例代码,则只需要R和tidyverse。 没有必要的外部数据集,我们将使用diamonds的数据集,其中包括与ggplot。

    Image for post
    Source: https://ggplot2.tidyverse.org/reference/diamonds.html
    资料来源: https : //ggplot2.tidyverse.org/reference/diamonds.html

    1.主题是您最好的朋友 (1. Themes are your best friend)

    Themes control all non-data display and are an easy way to change the appearance of your graph. It only takes one extra line of code in order to do this, and ggplot already comes with 8 separate themes.

    主题控制所有非数据显示,并且是更改图形外观的简便方法。 这样做只需要多一行代码 ,ggplot已经带有8个独立的主题。

    ggplot(data = diamonds, aes(x = Sepal.Width, y = Sepal.Length)) + 
    geom_point() + theme_bw()

    The ggplot themes are simple. They won’t really stand out, but they look great, are easy to read, and get the point across. Also, if you want to use the same theme over and over, you can set a global theme with one line of code and it will apply to all ggplots.

    ggplot主题很简单。 它们并不会真正脱颖而出,但是它们看起来很棒,易于阅读,而且很清楚 另外,如果您想一遍又一遍地使用同一主题,则可以用一行代码设置一个全局主题,它将应用于所有ggplots。

    # Set global themetheme_set(theme_bw())

    For full details on the 8 themes you can visit this link.

    有关这8个主题的完整详细信息,您可以访问 此链接

    Image for post
    ggplot themes, compared
    ggplot主题,比较

    Themes are also super customizable. Beyond the 8 themes that come with ggplot, you can also make your own theme but more importantly use themes that others have created already. In the few companies I’ve worked at, we’ve all had internal ggplot themes. For example, I helped create theme_fb() at Facebook which with input from designers at the company.

    主题也是超级可定制的。 除了ggplot随附的8个主题外,您还可以创建自己的主题,但更重要的是使用其他人已经创建的主题。 在我工作过的几家公司中,我们都有内部ggplot主题。 例如,我在Facebook上帮助创建了theme_fb() ,并得到了公司设计师的帮助。

    If you wanted to use some other themes outside of ggplot, the most popular package is ggthemes which has some interesting options such as theme_fivethirtyeight(), theme_wsj(), and theme_economist(). A sample of these themes are below, but I definitely recommend checking out this link to learn more.

    如果要在ggplot之外使用其他主题,最受欢迎的软件包是ggthemes,它具有一些有趣的选项,例如theme_fivethirtyeight(), theme_wsj(), and theme_economist() 。 以下是这些主题的样本,但我绝对建议您查看此链接 了解更多。

    Image for post
    ggthemes, compared
    ggthemes,比较

    2.方面是超级大国 (2. Facets are a superpower)

    When visualizing data, one thing you always want to think about is how many dimensions of data you want to display. A majority of graphs will typically only need 1–2 dimensions of data to get a point across, for example:

    可视化数据时,您始终要考虑的一件事就是要显示多少个维度。 大多数图形通常只需要1-2维的数据即可得出一个点,例如:

    • Height x weight of basketball players on a scatter plot

      散点图中身高x篮球运动员的体重
    • Heights of players on the Los Angeles Lakers on a bar graph

      条形图上洛杉矶湖人队的球员身高

    As you increase the number of dimensions, a single graph is going to get more cluttered, which makes it harder to get a point across. For example:

    随着维数的增加,单个图形将变得更加混乱,这将使跨点分布变得更加困难。 例如:

    • Height x weight of basketball players on a scatter plot, but different color dots for each of the 30 teams. This will be hard to read because you’ll need 30 separate colors to represent the different teams, and a legend to list out all of the team names.

      散点图中篮球运动员的身高x体重, 但30支球队中的每支球队都有不同的色点 。 这将很难理解,因为您将需要30种不同的颜色来代表不同的团队,并使用图例列出所有团队名称。

    This is where the magic of faceting shines. What if we don’t have to limit ourselves to one graph? My hypothesis for why a lot of us think this way is because we are used to visualizing data in Excel, where we are constrained to a single graph. In ggplot, we can break this mode of thinking, and all it takes is a single line of code to do so. Facets allow us to easily add up to two additional dimensions our visualizations.

    这是刻面魔术的光芒。 如果我们不必将自己限制在一张图中怎么办? 我的假设是,为什么我们很多人会这样认为,是因为我们习惯于在Excel中可视化数据,而我们只能将其约束为单个图形。 在ggplot中,我们可以打破这种思维方式,只需要一行代码即可做到。 构面使我们可以轻松地将可视化效果添加到另外两个维度。

    Let’s explore how we can use facets to visualize diamonds data.

    让我们探讨如何使用刻面来可视化钻石数据。

    At a basic level, we can view the relationship between the carat of a diamond and its price, which is the main purpose of this dataset:

    在基本层面上,我们可以查看钻石的克拉与其价格之间的关系,这是此数据集的主要目的:

    ex2 <- 
    diamonds %>%
    sample_n(5000) %>%
    ggplot(aes(x = carat, y = price)) +
    geom_point()ex2
    Image for post

    This graph only shows two dimensions of data, but there are a few others are also important. The cut, color, and clarity of the diamond — all of these could are related to the price of the diamond. One way to bring these dimensions in is to have the dots be different colors or use different dot shapes, but let’s give faceting a try instead.

    该图仅显示了数据的两个维度,但其他一些维度也很重要。 钻石的切割,颜色和净度-所有这些都可能与钻石的价格有关。 引入这些尺寸的一种方法是使点具有不同的颜色或使用不同的点形状,但让我们尝试一下。

    Use facet_wrap() if you only want to break out the graph by a single dimension:

    如果只想按一个分解图,则使用facet_wrap()

    ex2 +
    facet_wrap(~cut)
    Image for post

    Use facet_grid() if you want to break out the graph by two dimensions:

    如果要按 二维分解图,请使用facet_grid()

    ex2 +
    facet_grid(color~cut)
    Image for post

    These are just two examples of how you can use facet_wrap() and facet_grid() , but the key takeaway from this section is that with ggplot, you are not constrained to thinking about visualizations in a single graph.

    这些只是如何使用facet_wrap()facet_grid()两个示例,但是本节的重点是,对于ggplot, 您不必考虑在单个图形中考虑可视化。

    3.颜色! (3. Colors!)

    Colors serve two key purposes in data visualization:

    颜色在数据可视化中有两个主要目的:

    1. Makes a visualization more appealing

      使可视化更具吸引力
    2. Represents an additional dimension of data

      代表数据的附加维度

    There are many ways to color your ggplots, but for simplicity this section focuses on Viridis palettes, which are my personal favorite as they are:

    有多种方法可以为ggplots着色,但为简单起见,本节重点介绍Viridis调色板 ,因为它们是我个人最喜欢的调色板

    • Colorful: spanning as wide a palette as possible so as to make differences easy to see

      色彩丰富:尽可能广泛地显示调色板,以使差异易于看到

    • Perceptually uniform: meaning that values close to each other have similar-appearing colors and values far away from each other have more different-appearing colors, consistently across the range of values

      感知上一致:表示彼此接近的值具有相似的外观颜色,而彼此远离的值具有更多不同的外观颜色,并且在值的范围内保持一致

    • Robust to colorblindness: so that the above properties hold true for people with common forms of colorblindness, as well as in grey scale printing

      色盲的鲁棒性:因此上述属性对于具有常见色盲形式的人以及在灰度打印中适用

    Image for post
    Source: https://cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html
    资料来源: https : //cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html

    You can read more theory behind the colors above here, but this section focuses on 4 key functions which allows you to use these colors:

    你可以阅读更多的理论上面的颜色背后这里 但是这部分的重点,它允许您使用这些颜色4个关键功能:

    • scale_color_viridis_d() & scale_fill_viridis_d() : Add this statement to your ggplot in order to color / fill your graph on a discrete/categorical variable. (Notice the “d” at the end of the function)

      scale_color_viridis_d()scale_fill_viridis_d() :将此语句添加到ggplot中,以便为离散/类别变量上的图形着色/填充。 (请注意函数末尾的“ d”)

    • scale_color_viridis_c() & scale_fill_viridis_c() : Add this statement to your ggplot in order to color / fill your graph on a continuous variable. (Notice the “c” at the end of the function)

      scale_color_viridis_c()scale_fill_viridis_c() :将此语句添加到ggplot中,以便在连续变量上为图形着色/填充。 (请注意函数末尾的“ c”)

    # Discrete
    ggplot(data = diamonds %>% sample_n(1e3),
    aes(x = carat, y = price,
    color = cut)) +
    geom_point() + scale_color_viridis_d()
    Image for post
    # Continuous
    ggplot(data = diamonds %>% sample_n(1e3),
    aes(x = carat, y = price,
    color = depth)) +
    geom_point() + scale_color_viridis_c(option = 'A')

    Protip: Here, I’m using the option parameter to change the color palette within viridis. You can switch between options A-E which reflect the different color schemes in above.

    Protip:在这里,我正在使用option参数来更改viridis中的调色板。 您可以在反映上述不同配色方案的选项AE之间进行切换。

    Image for post

    4.颜色与填充:了解差异 (4. Color vs. fill: Know the difference)

    I introduced this in the last section, but I wanted to address it more explicitly because it can be confusing when you first use ggplot. To color a ggplot, you’ll either use color or fill , and this depends on the graph type.

    我在上一节中对此进行了介绍,但是我想更明确地解决它,因为当您第一次使用ggplot时可能会造成混淆。 要为ggplot着色,您可以使用colorfill ,这取决于图形类型。

    So what's the difference? Generally, fill defines the color with which a geom is filled (i.e. geom_bar()), whereas color defines the color with which a geom is outlined (i.e. geom_point()).

    那有什么区别呢? 通常, fill定义填充 geom_bar()的颜色(即geom_bar() ),而color定义geom_point() 轮廓颜色(即geom_point() )。

    ggplot(data = diamonds, aes(x = price)) +
    geom_histogram(color = 'blue',
    fill = 'red')
    Image for post

    So the takeaway here is that if you try to color a graph and it appears that nothing has changed, simply switch color to fill or vice versa.

    因此,这里的要点是,如果您尝试给图形着色,但似乎没有任何变化,只需将color切换为fill ,反之亦然。

    Read more on StackOverflow

    阅读更多关于StackOverflow

    5.在上面贴上标签 (5. Put a label on it)

    Good visualizations have concise and descriptive labels. They help readers understand what they are seeing, and this especially important if you expect your visualization to be shared. Luckily it’s super easy to label in ggplot.

    良好的可视化效果应具有简洁和描述性的标签。 它们可以帮助读者理解他们所看到的内容,如果您希望共享可视化内容,这尤其重要。 幸运的是,在ggplot中标记非常容易。

    Below are ggplot’s most useful labelling functionalities, listed in how often they should probably be used. You can pick and choose which labels you want to use — for example, if you only want to add a title, you only need to enter the title parameter in labs() .

    以下是ggplot最有用的标记功能,列出了它们应该使用的频率。 您可以选择要使用的标签,例如,如果只想添加标题,则只需在labs()输入title参数。

    ggplot(data = diamonds %>% sample_n(1e3), 
    aes(x = carat, y = price, color = cut)) +
    geom_point() + labs(title = 'title example',
    x = 'x-axis example',
    y = 'y-axis example',
    color = 'color example',
    subtitle = 'subtitle example',
    caption = 'caption example',
    tag = 'tag example')

    Note: The color field is only accessible if you have a color as an aesthetic in your ggplot. This labelling method will also work whether you use fill, color, size, alpha, etc.

    注意: 仅当您在ggplot中具有某种美感的颜色时,才可以访问色域。 无论您使用填充,颜色,大小,alpha等,此标记方法也将起作用。

    Image for post

    6.线注释 (6. Line annotations)

    On the theme of telling a story with your visualization, line annotations are a very useful tool. Some examples that I’ve personally used include:

    以可视化讲故事为主题,行注释是一个非常有用的工具。 我个人使用的一些示例包括:

    • Marking a before/after period on a line graph

      在折线图上标记之前/之后的期间
    • Plotting the mean of an x or y value on a scatter plot

      在散点图上绘制x或y值的平均值
    • Annotating a goal metric that we want to hit

      注释我们要达到的目标指标

    Whatever the use case, having a line annotation helps communicate an important point to those who will be viewing your visualization. To add a line to your ggplot, you’ll use either:

    无论用例如何,都有行注释都可以帮助将重要点传达给将要查看您的可视化内容的人员。 要将行添加到ggplot中,请使用以下任一方法:

    • geom_hline(): Adds a horizontal line (has a y intercept)

      geom_hline():添加一条水平线(具有ay截距)

    • geom_vline(): Adds a vertical line (has an x intercept)

      geom_vline():添加垂直线(具有x截距)

    The example below will show both of these in action:

    下面的示例将展示这两种功能:

    ggplot(data = diamonds %>% sample_n(1e3), 
    aes(x = carat, y = price, color = cut)) +
    geom_point() + geom_hline(data = . %>% summarise(y = mean(price)),
    aes(yintercept = y)) +
    geom_vline(data = . %>% summarise(x = mean(carat)),
    aes(xintercept = x))

    Note that the above code may look a little more complicated than some of the other ggplot code in this article. I’ll try to explain what’s going on there. In order to get the average carat and price, a more straightforward way to get these values is to calculate them before your ggplot code. However, because I am lazy and like reducing the number of variables that I have, I instead pipe the data (diamonds %>% sample_n(1e3)) directly into the geom_line() statements, which work just as well.

    请注意,上面的代码可能看起来比本文中的其他其他ggplot代码更复杂。 我将尽力解释那里发生了什么。 为了获得平均克拉和价格,获取这些值的一种更直接的方法是在ggplot代码之前计算它们。 但是,因为我很懒,并且喜欢减少变量的数量,所以我将数据( diamonds %>% sample_n(1e3) )直接管道传输到geom_line()语句中,该语句同样有效。

    Image for post

    7.文字注释 (7. Text annotations)

    In addition to lines, it is always useful to have some sort of data labelling in your graphs. However, it’s only going to be useful if your data labels are easy to read. For example, if you blindly apply the text geom, you’ll end up with a really ugly graph:

    除了线条外,在图形中具有某种数据标签也总是有用的。 但是,只有您的数据标签易于阅读时,它才有用。 例如,如果您盲目地应用文本几何,那么您将得到一个非常丑陋的图形:

    p <- 
    ggplot(data = diamonds %>% sample_n(1e3),
    aes(x = carat, y = price, color = cut)) +
    geom_point()p + geom_text(aes(label = price))
    Image for post
    This is bad
    这不好

    In this section, I’ll talk about three key tips for using geom_text() effectively.

    在本节中,我将讨论有效使用geom_text()三个关键技巧。

    1. Filtering which labels are shown: You can get creative with this, but the goal of doing this is to only show relevant data labels. In the case below, I only want to show the prices of high-carat diamonds:

      过滤显示的标签:您可以以此为创意,但是这样做的目的是仅显示相关的数据标签。 在以下情况下,我只想显示高克拉钻石的价格:

    p +   geom_text(data = . %>% filter(carat >= 2.25),
    aes(label = price))
    Image for post
    Notice that this is easier to read now, only a few prices are shown
    请注意,这现在比较容易阅读,只显示了一些价格

    2. hjust + vjust

    2.调整+调整

    In the above graph, you’ll see that the text completely overlaps the point, which looks ugly. You can easily fix this by aligning your text within geom_text(). The way that I think of this is similar to left and right align in Microsoft Word.

    在上图中,您将看到文本与该点完全重叠,这看起来很难看。 您可以通过在geom_text()中对齐文本来轻松解决此问题。 我想到的方式类似于Microsoft Word中的左对齐和右对齐。

    Generally, you’ll have vjust and hjust range from [0,1] but it also takes on negative values and values greater than one (it will just move your label further in the specified direction). The graph below shows how text will be aligned based on your hjust and vjust values:

    通常,您可以在[0,1]范围内调整范围,但也可以采用负值和大于1的值(它将沿指定方向进一步移动标签)。 下图显示了如何根据您的hjust和vjust值对齐文本:

    Image for post
    p + 
    geom_text(data = . %>% filter(carat >= 2.25),
    aes(label = price),
    hjust = 0,
    vjust = 0)
    Image for post

    3. color

    3.颜色

    This is more of a preference, but know that you can change the color of your text. You generally want to have your text contrast as much with the background as possible, as this makes it the most legible. This is important if you have some lighter colors (i.e. yellow) that may be hard to read:

    这更多是一个首选项,但是您知道可以更改文本的颜色。 通常,您希望文本与背景的对比度尽可能大 ,因为这使文字更清晰。 如果您有一些较浅的颜色(即黄色)可能难以阅读,则这一点很重要:

    p + 
    geom_text(data = . %>% filter(carat >= 2.25),
    aes(label = price),
    hjust = 0,
    vjust = 0,
    color = 'black')
    Image for post
    # Another example where we add contrastdiamonds %>%
    group_by(clarity) %>%
    summarise(price = mean(price)) %>%
    ggplot(aes(x = clarity, y = price)) +
    geom_bar(stat = 'identity') +
    geom_text(aes(label = round(price, 2)),
    vjust = 1.25,
    color = 'white')
    Image for post

    8.订购,订购,订购! (8. Order, order, order!)

    Lastly, ordering your graph can make it easier to read, and this is especially useful for bar graphs. All you have to do is use fct_reorder() on the x value such that it’s sorted by the y-value:

    最后,对图形进行排序可以使其更易于阅读,这对于条形图尤其有用。 您所要做的就是在x值上使用fct_reorder() ,使其按y值排序:

    # By default, ggplot will order by the x valuediamonds %>%
    group_by(clarity) %>%
    summarise(price = mean(price)) %>%
    ggplot(aes(x = clarity, y = price)) +
    geom_bar(stat = 'identity')
    Image for post
    # Reordered:diamonds %>%
    group_by(clarity) %>%
    summarise(price = mean(price)) %>%
    ggplot(aes(x = fct_reorder(clarity, price), y = price)) +
    geom_bar(stat = 'identity')
    Image for post

    结论思想 (Concluding Thoughts)

    I had a tough time deciding what different topics I wanted to cover in this article. I ended up focusing on topics that were initially confusing to me, and that I wish I understood more when I first started learning ggplot. Hopefully, this article gives you some concrete ideas on how to improve your visualizations or demystifies some of the more confusing/hidden aspects of ggplot.

    我很难决定本文要涵盖的主题。 我最终将精力集中在最初让我感到困惑的主题上,希望我第一次开始学习ggplot时能了解更多。 希望本文为您提供一些有关如何改善可视化效果或使ggplot更加令人困惑/隐藏的方面变得神秘的具体想法。

    翻译自: https://towardsdatascience.com/8-tips-for-better-data-visualization-2f7118e8a9f4

    数据可视化 信息可视化

    展开全文
  • 学习浙大可视化课件1

    2019-02-16 11:51:57
    通过一个学期的可视化系统开发实战,暴露了我的很多问题,除了编程能力上的不足外,还有对可视化理论缺乏了解。所以,为了更深入的理解可视化理论体系,我开始学习浙江大学可视化系列课件。此次学习前三章,我将其...
  • 在我们引入信息理论之前,我们先来试试如何将一个简单的概率分布可视化。我们稍后也会需要用到这些,现在提出来会容易接受。这些可视化概率的方法是很有用处的。 现在我在California。有时候会下雨,但是大多数...
  • 地理空间数据可视化

    2012-07-10 22:47:44
    可视化是在数字化的背景中产生的 其作,ml是在凡机盅王的情况下发挥人脑的弄j象思维功能.地国 表身觏是可视化的产品,并在发展过程中形成了一系列的理论与方法.这些都自然地备成为地理空闻数据可视化 技术的基础。...
  • 4种常用的可视化技术【web前端】「数据可视化基础」数据可视化基础——可视化流程数据可视化基础——数据模型数据可视化基础——视觉编码可视化技术综述可视化设计 什么是可视化?4种常用的可视化技术【web前端】 ...
  • 探究可视化学习在计算机应用基础课程中的运用[摘要]可视化学习是指利用知识可视化资源创设学习情境,学生通过思维可视化工具进行思考分析,并利用数据可视化方式进行总结、反思和学习评价的个性化学习方式。...
  • 可视化是为视觉思维进行的图形表示过程,它包括地学和人文经济的视觉表达与交流,地图视觉认知决策机理的理论与应用。也就是说,可视化技术带来了现代地图学的新特征,如虚拟性、动态性、交互性、及网络性,引起了...
  • 为了向数据可视化的历史和图表的力量致敬,我们重新制作了史上最具代表性的7张图表。 这其中一部分是用现代的方法呈现出原稿,而另一些则致力于对原图的重新制作。这项工程由Edward Tufte发起。他是一位数据可视化...
  • 数据可视化

    千次阅读 2014-06-04 15:58:58
    在确定数据可视化为自己研究主题之初,我经常上网搜寻相关资料。但是初期的收集经常是杂乱无章,缺乏系统规划的。以至于我产生了三个困扰我的问题,分别是:  1. 信息可视化与数据可视化,到底有什么区别?或者说...
  • 家谱可视化可以在这里访问: : 重要的是要注意,对科学的哲学和观点的丰富的叙述性描述对于学习科学知识的方式是必不可少的。 这个项目不是试图用简单的图表来取代困难的综合和批判性思维,而是努力创建类似谱系...
  • 在确定数据可视化为自己研究主题之初,我经常上网搜寻相关资料。但是初期的收集经常是杂乱无章,缺乏系统规划的。以至于我产生了三个困扰我的问题,分别是: 1. 信息可视化与数据可视化,到底有什么区别?或者说...
  • 1-大数据可视化

    2018-02-23 13:32:04
    大数据概念: 数据量大(volume)变化速度快(Velocity)数据类型多样化(variety)价值密度低(value)数据可视化科学可视化信息可视化知识可视化思维可视化可视化分析数据可视化7步:获取,分析,过滤,挖掘,...
  • 小白的数据可视化学习笔记数据可视化·基础思维导图一、可视化流程模型流水线模型可视化循环模型*回路模型可视分析模型二、数据处理和数据变化*三、可视化编码四、可视化分析 数据可视化·基础 在下本次对于数据...
  • 数据可视化资料摘抄

    千次阅读 2017-02-20 15:40:33
    大数据可视化,就是指将结构或非结构数据转换成适当的可视化图表,然后将隐藏在数据中的信息直接展现于人们面前。那数据可视化的优势在于合成呢?1. 展示需要相比传统的用表格或文档展现数据的方式,数据可视化能将...
  • 小白的数据可视化学习笔记数据可视化·统计图可视化思维导图一、数据变换目的线性变换对数变换可以自定义变换函数二、统计图表三、统计图表工具四、总结 数据可视化·统计图可视化 在下本次对于数据可视化的学习...
  • 通过对项目不断打磨直到发布,你在收获一个数据可视化大屏实战项目经验的同时,还能提升你的实操能力以及编程思维,助你在面试中锦上添花! ▼用Java实现数据可视化大屏▼ 让面试官眼前一亮的 数据可视化大屏项目 ...
  • 数据时代程序员必备技能:数据可视化

    千次阅读 多人点赞 2019-03-01 14:48:33
    实际上,我们每一个人,天生具有可视化思维,甚至经常性地做一些可视化操作。 比如,做工作总结 PPT,要尽量字少有图; 展示报表,会选择柱状图;走在马路上,更容易被图形而不是文字吸引…这并不是因为我们聪明,...
  • 谈谈可视化编程 (转)

    万次阅读 多人点赞 2019-06-17 20:32:16
    在计算中,可视化编程语言(VPL)允许用户通过图形化操作程序元素而不是通过文本指定来创建程序。但一直以来,除了在一些非常有限的领域外,可视化编程都未成功。对此,有人认为文本编程语言混淆了编程的本质,也有...
  • 随着信息技术的发展和硬件设备成本的降低,当今的互联网存在海量的数据,想要快速从这些数据中获取更多有效的信息,数据可视化是重要的一环。对Python语言来说,比较传统的数据可视化模块是Matplotlib,但是...
  • 浅谈大数据时代web数据可视化探析

    千次阅读 2017-09-22 16:26:29
    数据可视化技术可借助人脑的视觉思维能力,帮助人们理解大量的数据信息,发现数据中隐含的规律,从而提高数据的使用效率。面对大数据深奥的面貌,如何才能让大型数据集变得亲切和易于理解,可视化无疑是最有效的途径...
  • 我理解的前端可视化

    2019-04-12 13:29:39
    个人理解可视化相对来说是一个相对独立的理论理论学科,同时也可以说是一个跨学科的体系,不止是前端,其实我们所使用的桌面系统,GUI 都属于可视化的一部分,包括算法,数据分析其实都是依靠图形化界面,也就是...
  • 本文整理了设计师常逛的网站,这些资料信息网站包括交互设计、信息图、信息可视化,在线制图、数据可视化,本文大致的内容包括: 《灵感——可以参看如下网站来寻找灵感网站汇总》、 《信息图工具——可视化工具资源...
  • 点击上方蓝字关注我们食品安全大数据可视化关联分析陈谊,孙梦,武彩霞,孙小然北京工商大学计算机学院食品安全大数据技术北京市重点实验室,北京 100048摘要:随着检测技术的提高和互联...
  • 数据可视化的历史

    千次阅读 2018-12-08 02:39:00
    数据可视化是什么? The main goal of data visualization is its ability tovisualize data, communicating information clearly and effectively.— Vitaly Friedman 数据可视化的目的,是要对数据进行可视化...
  • 小白的数据可视化学习笔记

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,206
精华内容 4,882
关键字:

思维可视化理论