js数据库可视化,js 数据可视化
更新:2022-11-25 23:41
本文目录一览:
1、[初识 D3.js :打造专属可视化](#初识 D3.js :打造专属可视化)
2、数据可视化工具有哪些,越炫酷越好,任务比较急在一个月之内需要完成,有知道的朋友给介绍一下呗。
3、深入浅出丨带你看懂数据可视化「美」的历程
4、惊艳:近百种数据可视化工具效果展示,总有一款适合你!
初识 D3.js :打造专属可视化
随着现在自定义可视化的需求日益增长,Highcharts、echarts等高度封装的可视化框架已经无法满足用户各种强定制性的可视化需求了,这个时候D3的无限定制的能力就脱颖而出。
如果想要通过D3完成可视化,除了对于D3本身API的学习, 关于web标准的HTML, SVG, CSS, Javascript 和 数据可视化的概念以及标准都是需要学习的。这无疑带来了较高的学习门槛,但这也是值得的,因为掌握 D3 后,我们几乎可以实现任何 2d 的可视化需求。
本文通过对D3核心模块分析以及进行具体案例实践的方式,来帮助初学者学习了解D3的绘图思路。
D3的全称是 Data-Driven Documents(数据驱动文档),是基于数据来操作文档的 JavaScript 库,其核心在于使用绘图指令对数据进行转换,在源数据的基础上创建新的可绘制数据, 生成SVG路径以及通过数据和方法在DOM中创建数据可视化元素(如轴)。
相对于Echats等开箱即用的可视化框架来说,D3更接近底层,它可以直接控制原生的SVG元素,并且不直接提供任何一种现成的可视化图表,所有的图表都需我们在它的库里挑选合适的方法构建而成,这也大大提高了它的可视化定制能力。而且D3 没有引入新的图形元素,它遵循了web标准(HTML, CSS, SVG 以及 Canvas )来展示数据 ,所以它可以不需要依赖其他框架独立运行在现代浏览器中。
在V4版本后,D3的 API 现在已经被拆分成一个个模块,我们可以根据自己的可视化需求进行按需加载。根据泛义可以将D3 API模块分为以下的几大类: DOM操作、数据处理,数据分析转换、地理路径,行为等 。
这里我们主要对 D3-selection 和 D3-scale 模块进行解析:
D3-selection(选择集) 是 D3js的核心模块,主要是用来进行选择元素,设置属性、数据绑定,事件绑定等操作。
选择元素: D3-selection 提供了两种方法来获取目标元素,d3.select()
:返回目标元素的第一个节点,d3.selectAll()
:返回目标元素的集合,乍一看有点类似原生API 的 querySelector
和 querySelectorAll
,但是 d3.select
返回的是一个 selection 对象,querySelector
返回的是一个 NodeList 数组。通过控制台打印的信息,可以看到 selection 下的 groups 存放了所有选择的元素集合,parents 存放了所有选中元素的父节点。
设置属性或者绑定事件: 我们不需要关心 groups 的结构是怎么样的。当调用 selection.attr
或者 selection.style
的时候, selection 中的所有 group 的所有子元素都会被调用,group 存在的唯一影响是: 当我们传参是一个function 的时候,例如 selection.attr('attrName', function(data, i))
或 selection.on('click', function(data, i))
时, 传递的 function(data, i)
中, 第二个参数 i 是元素在 group 中的索引而不是在整个 selection 中的索引。
数据绑定: 实际上是给选择的DOM元素的 __data__
属性赋值,这里提供了3种方式进行数据绑定:
- 给每一个单独的 DOM 元素调用
selection.datum
:d3.select('body').datum(20)
等价于document.body.__data__ = 20
- 从父节点中继承来数据, 比如:
append
,insert
,select
,子节点会主动继承父节点的数据: - 调用
selection.data()
方法,支持传入装有基础数据类型的数据,也支持传入一个function(parentNode, groupIndex)
根据节点索引与数据做映射,data()
方法引入了 d3 中非常重要的 join 思想: 绑定 data 到 DOM 元素, 在D3中是通过比较 data 和 DOM 的 key 值来找到对应关系的。 如果我们没有单独设置 key 值,那么默认根据 data 的下标索引来设定,但是当数据顺序发生改变,这个默认下标 key 值 就变得不可靠了,这时我们可以使用selection.data(data, keyFunction)
中的第二个参数keyFunction
,根据当前的数据返回一个对应的 key 值。通过下面的图例可以看出,不管是有一个还是多个 group(每个group 都是独立的),只要我们保证在任意一个 group 中的 key 值是唯一的,数据一旦发生变化都会反映给对应的 DOM 元素( update 的过程): 上面提到的都是data数据和DOM元素数量相同的情况下的数据绑定,那如果data数据和DOM元素数量不相同时,我们来看看 D3 又是如何进行数据绑定的:现在终于可以来介绍 D3-selecion 模块的核心 Join 思想了,这个思想简单来说就是 “不应该告诉D3去怎么创建元素, 而是告诉D3,.selectAll()
得到的 selecion 集合应该和.data(data)
绑定的数据要怎么一一对应”。 从上图可以看出,在进行d3.data(data)
数据绑定的时候,会产生三种状态的选择集: 用 Join 的方式来理解意味着,我们要做的事情仅仅是声明 DOM集合和数据集合之间的关系, 并且通过处理三个不同状态的集合enter
、update
、exit
来描述这种关系。这种方式可以大大简化我们对DOM元素的操作,不需要再用if
和for
循环的方式来进行复杂的逻辑判断,来得到我们需要得到的元素集合。并且在处理动态数据的时候,可以通过处理这三种状态,轻松的展示实时数据和添加平滑的动态交互效果。 D3-scale(比列尺) 提供多种不同类型的比例尺。经常和 D3-axis 坐标轴模块一起使用。 D3-scale 提供了多种连续性和非连续性的比例尺,总体可以将他们分为三大类: 常用的一些比例尺: d3-scaleLinear
线性比例尺(连续性输入和连续性输出) 可以看出,调用d3.scaleLinear()
可以生成线性比例尺,domain()
是输入域,range()
是输出域,相当于将domain中的数据集映射到range的数据集中。 使用示例: 映射关系:d3-scaleTime
时间比例尺(连续性输入和连续性输出) 时间比例尺与线性比例尺类似,只不过输入域变成了一个时间轴。正常我们使用比例尺都是个正序的过程,但是D3也提供了invert()
以及invertExtent()
方法,我们可以通过输出域中的具体值得出对应输入域的值。 使用示例:d3.scaleQuantize
量化比例尺(连续性输入和离散性输出) 量化比例尺是将连续的输入域根据输出域被分割为均匀的片段,所以它的输出域是离散的。 使用示例: 映射关系:d3.scaleThreshold
阈值比例尺(连续性输入和离散性输出) 阈值比例尺可以为一组连续数据指定分割阈值,阈值比例尺默认的 domain:[0.5] 以及默认的 range:[0, 1] ,因此默认的d3.scaleThreshold()
等价于Math.round
函数。 阈值比例尺输入域为 N 的话,输出域必须为 N + 1,否则比例尺对某些值可能会返回 undefined,或者输出域多余的值会被忽略。 使用示例: 存在三种映射关系: a. 当domain和range的数据是 N : N+1 b. 当domain和range的数据是 N : N + 大于1 c. 当domain和range的数据是 N + 大于0 : Nd3.scaleOrdinal
序数比例尺(离散性输入和离散性输出) 与scaleLinear
等连续性比例尺不同,序数比例尺的输出域和输入域都是离散的。 使用示例: 存在三种映射关系: a.当domain和range的数据是一一对应 b.当domain少于range的数据 c.当domain多于range的数据 通过以上的学习,应该对d3是如何操作DOM以及坐标轴的数据映射为相应的可视化表现有了一定的了解,下面我们来实际运用这两个模块,来实现我们常见的可视化图表:柱状图。- 首先添加一个SVG元素。
- 根据我们上面说到
d3.scale
模块以及d3.axis
模块绘制坐标轴,d3.scaleBand()
叫做序数分段比例尺,类似我们说的d3.scaleOrdinal()
序数比例尺,但是它支持连续的数值类型的输出域,离散的输入域可以将连续的范围划分为均匀的分段。这里再讲一个细节,在绘制网格的时候,我们并没有额外添加 line 元素来实现,而是通过d3.axis
坐标轴模块的axis.ticks()
方法对坐标轴刻度进行了设置,通过tickSIze()
设置了刻度线长度,来模拟和图表宽度相等的网格线,并且还可以通过tickFormat()
对Y轴刻度值进行格式化转换。 - 坐标轴绘制好了后,我们通过数据绑定来绘制与之对应的矩形(rect)元素了。
- 这个时候柱状图已经基本绘制好了,我们再丰富内容展示,添加标签、标题等提示信息。
- 最后我们通过给柱子绑定监听事件,实现tooltips的信息浮层交互。
通过对
d3.selection
、d3.scale
以及d3.axis
等模块的学习,我们已经可以绘制出常用的柱状图等图表,我们也可以通过d3提供的其他模块绘制出更加复杂的可视化效果,例如通过d3-hierarchy
(层级模块) 实现层级树图可视化,d3-geo
(地理投影) 实现地图数据可视化等,本文讲解的内容还只是D3库的冰山一角。所以等我们掌握了D3后,限制我们实现可视化的不再是技术而是想象力。
数据可视化工具有哪些,越炫酷越好,任务比较急在一个月之内需要完成,有知道的朋友给介绍一下呗。
数据分析之大数据可视化之初级篇--零编程工具
Tableau
Tableau 是一款企业级的大数据可视化工具。Tableau 可以让你轻松创建图形,表格和地图。 它不仅提供了PC桌面版,还提供了服务器解决方案,可以在线生成可视化报告。服务器解决方案可以提供了云托管服务。
Infogram
Infogram的最大优势在于,让可视化信息图表与实时大数据相链接。只须三个简单步骤,可以选择在众多图表,地图,甚至是视频可视化模板中进行选择,支持团队账号。
ChartBlocks
ChartBlocks是一个易于使用在线工具,它无需编码,便能从电子表格,数据库中构建可视化图表。整个过程可以在图表向导的指导下完成。图表是响应式的,并且可以和任何的屏幕尺寸及设备兼容。
Datawrapper
Datawrapper是一款专注于新闻和出版的可视化工具。 Datawrapper非常容易使用,不需要任何编程基础。你只需要上传你的数据,便能轻松地创建和发布图表,甚至是地图。Datawrapper提供了 众多的自定义布局及地图模板。
Plotly
Plotly帮助你在短短几分钟内,从简单的电子表格中开始创建漂亮的图表。如果希望为JavaScript和Python等编程语言提供一个API接口的话,Plotly是一款非常人性化的工具。
RAW
RAW弥补了很多工具在电子表格和矢量图形(SVG)之间的缺失环节。你的大数据可以来自MicrosoftExcel中,谷歌文档或是一个简单的逗号分隔的列表。它最厉害的功能是可以很容易地导出可视化结果,因为它和Adobe Illustrator,Sketch 和Inkscape是相容的。
Visual.ly
Visual.ly是一个可视化的内容服务。它提供专门的大数据可视化的服务。如果你想完全外包可视化文件给第三方。你可以使用非常简化的在线流程:你只需描述你的项目,服务团队将在项目的整个持续时间内和你在一起。
数据可视化之开发展篇--JavaScript库
D3.js
D3.js是最好的数据可视化工具库。D3.js运行在JavaScript上,并使用HTML,CSS和SVG。 D3.js是开源工具,使用数据驱动的方式创建漂亮的网页。 D3.js可实现实时交互。这个库非常强大和前沿,所以它带有没有预置图表也不支持IE9。
Ember Charts
Ember Charts – 顾名思义是一种基于Ember.js框架和使用d3.js的可视化工具。Ember Charts以绘制时间序列图,柱状图,饼图和散点图为主。它非常易于扩展,有极强的错误处理能力,当你遇到坏数据时,系统也不会崩溃。
NVD3
NVD3运行在d3.js之上, 它可建立可重用的图表组件。该项目的目标是保持所有的图表整洁和可定制性。 NVD3是d3.js之上的简单的接口,保持了d3.js的所有强大功能。 NVD3由Novus Partners前端工程师开发和使其保持了图表技术洞察力。
Google Charts
Google Charts 以HTML5和SVG为基础,充分考虑了跨浏览器的兼容性,并通过VML支持旧版本的IE浏览器。所有您将创建的图表是交互式的,有的还可缩放。 Google Charts非常人性化,有全面的模板库,你可以从中找到所需模板。
FusionCharts
FusionCharts是最全面的JavaScript图表库,包括90个图表和900种地图。FusionCharts可以轻松集成像jQuery库,Angularjs和React框架以及ASP.NET和PHP语言。 FusionCharts支持JSON和XML数据,并提供许多格式图表:PNG,JPEG,SVG和PDF。
Highcharts
Highcharts是一个JavaScript API与jQuery的集成,全球最大的100家公司中有61家正在使用它。图表使用SVG格式,并使用VML支持旧版浏览器。它提供了两个专门的图表类型:Highstock和Highmaps,并且还配备了一系列的插件。
Chart.js
对于一个小项目的图表,chart.js是一个很好的选择。开源,只有11KB大小,这使得它快速且易于使用,它支持多种图表类型: 饼图,线性图和雷达图等。
Leaflet
Leaflet 基于Open Street Map数据,使用HTML5 / CSS3绘制互动式可视化图。可以使用他们的扩展插件库添加热点图(heatmaps)和动画标记。 Leaflet 是开源和只有33 KB大小。
Chartist.js
Chartist.js的开发社区一直致力于打败所有其他JavaScript图表库。它使用了Sass的个性化风格,它的SVG输出是响应式的。
N3-charts
N3-charts是一种基于AngularJS框架的工具。它建立在D3.js之上,帮助您创建简单的互动图表。 N3-charts是一种小型化的图表工具,不适用于大型项目。
Sigma JS
Sigma JS 是交互式可视化工具库。由于使用了WebGL技术,可以使用鼠标和触摸的方式来更新和变换图表,同时支持JSON和GEXF两种数据格式。这为它提供了大量的可用互动式插件。Sigma JS 专注于网页格式的网络图可视化,在大数据网络可视化中非常有用。
Polymaps
Polymaps是一款地图可视化一个JavaScript工具库。 Polymaps使用SVG实现从国家到街道一级地理数据的可视化。可以使用CSS格式来修改你的样式。它是创建heatmap热点图的最好的工具之一,创建的所有地图都可以变成动态图。
Processing.js
Processing.js是一个基于可视化编程语言的JavaScript库。作为一种面向Web的JavaScript 库,Processing.js是能够有效进行网页格式图表处理。这使得它成为了一种非常好交换式可视化工具。 Processing.js需要一个兼容HTML5的浏览器来实现这一功能。
深入浅出丨带你看懂数据可视化「美」的历程
深入浅出丨带你看懂数据可视化「美」的历程 古人说:“人不可貌相”,但从古至今,人类却是一群感性动物,容易受到外在表象影响,先感性才理性。 《韩非子》里提到,春秋末期鲁国人澹台灭明,天生异像,“额低口窄,鼻梁低矮,不具大器形貌”,拜孔子为师,孔子没有拒绝,但对他不上心,爱答不理,让他坐冷板凳。于是,他毅然决然地离开孔子,自学成才,独辟蹊径,游历讲学,积极传播儒家学说,并培养出很多人才,深受老百姓爱戴。孔子听闻他的事迹之后,幡然醒悟。 在今天,好看这件事也一样是很重要的。“颜值即正义”,长得好看的人,似乎更容易受到欢迎和优待。 但古人也说过:“相由心生”,从一个人的外表和精神状态可以大概知道这个人的内在状况,相反,一个人的内心思想状态,也会投射到形象外表。 因此,我们要注重自身内在涵养的健康发展,也要学会对外在美的表达与审视。 同样地,好的设计也应该是兼具内容与形式。 信息时代让人们的生活节奏加快,人们每一天都变得匆忙,时间被碎片化,甚至没有多少时间完整看完一段文字。文字的力量是有限的。只有借助可视化,信息才能高效地传播。 数据可视化是数据领域一个重要的分支,目的是“让数据说话”,展现数据之美。好的图表会说话,好的图表可以抓住用户的心。
一、历史篇:人类对世界的认知与表达从图画开始
研究发现,人脑处理图片信息是同步进行的,而处理文字信息则是一步一步循序渐进的,而且一篇文字下来,大部分人只记住了其中的20%;人在看报纸时,99%的文字信息会自动被过滤掉,脑子里只残留了可怜的1%;人脑处理图片的速度是处理文字的6000倍。也就是说,如果一篇6000字的文章需要10分钟看完,而压缩成一张图片则只需要10/6000分钟的时间。 图片可以表达的内容要比文字更丰富,同时也可以给人留下很大的想象空间 ,可以体现真实性(有图有真相),可以让人赏心悦目。 其实,在远古时期,我们遥远的祖先——智人就已经学会画画,基于自己对周边生活环境的认知,将人、鸟、兽、草、木等事物以及狩猎、耕种、出行、征战、搏斗、祭祀甚至男女交媾等日常活动刻画在岩石上、石壁上、洞穴里......到目前为止,欧洲、亚洲、美洲、大洋洲的70多个国家150多个地区发现岩画遗址,而仅非洲和澳洲少数族群目前还存有岩画制作的传统,例如著名的岩画遗址拉斯科洞窟壁画、阿尔塔米拉洞窟壁画、大麦地岩画、拉文特岩画、平图拉斯河手洞壁画、非洲大象岩刻、将军崖岩画等。 岩画学家埃马努埃尔·阿纳蒂在《世界岩画:原初语言》一书中提到:随着智人技术水平的提高、抽象和感知能力的增强,促使了复杂语言和艺术的产生,而岩画正是这种语言的一种记录形式;目前所知的70%岩画都是狩猎采集社会的作品,剩余30%是游牧和农耕时期的作品,在这些岩画的结构中存在着共同的记忆和普遍性的认知模式。岩画是象形文字,是无文字时代的写作,是人类隐没记忆的见证。 可见,人类对世界的认知与表达是从图画开始的。 图1. 远古时代的岩画 人类造出文字之前,还经历过“结绳记事”、“图画记事”等阶段。 但随着社会的发展,人类发生了“农业革命”,不再单纯依靠狩猎为生,制造和使用工具更加娴熟,剩余产品逐渐增加,社会组织逐步成熟。这时,社会组织不断产生大量的信息,除法令条纹外,还必须记录各种交易、税收、商品库存、节假日以及打胜仗的日期等。在此之前,人类虽然可以利用图画记事,但更多的还是用自己的大脑记录信息。随着信息的大量产生,容易产生记忆过载,于是就有了文字。 象形文字是由原始的图画发展而来的。由于社会的发展,加上图画效率低,难以满足社会化需求,于是人们逐渐从图画中抽离出一个个元素,形成象形文字。象形文字是一种最原始的造字方法,纯粹利用图形来作文字使用,而这些文字又与所代表的东西在形状上很相像,图画性质减弱,象征性质增强。苏美尔楔形文字、甲骨文、古埃及象形文字、玛雅文字都是独立地从原始社会最简单的图画和花纹产生出来的。 但象形文字也有很大的局限性,因为有些实体事物和抽象事物是画不出来的,而且写起来很慢又难读懂。 图2. 世界四大古文字 随着社会的进一步发展,文字也得到了很大的发展,在象形文字的基础上逐步分化出“表音”和“表意”两种文字。文字是用来记录和传播语言的,而记录和传播只有两种途径,或“表音”,或“表意”。就汉字来说,其发展脉络大致是:结绳记事—图画文字—象形文字—形意文字—意音文字。 社会的发展,推动了文字的发展,使得人们在对事物的表达上可以更加丰富多样,可以指事、象形、形声、会意、转注、假借。人们对世界的认知和表达在广度和深度上也都有了很大的延伸。反过来,由于更多样化的文字,人们能够更加准确、生动、深刻、灵活地记录下所见所闻和所思所想,加快了知识的传播与传承,推动了社会的大发展。 文字即使再丰富,也有难以突破的局限性。文字需要理解,不能一目了然,对抽象事物及个体的表达,还不够形象、到位。因此,在出现文字之后的时代,许多文献就以图文结合的形式流传下来。例如,在1912年发现的伏尼契手稿中,字母和语言至今无人破解,但其中的植物、天体出浴美女等许多图片,甚至出现了构造精致的精美图案,一目了然,让人惊叹。 图3. 伏尼契手稿
二、发展篇:进入了“百花齐放、百家争鸣”的时代
计算机出现之前,人们已经能够灵活地运用柱形图、线图、饼图等基本图表来展示数据,而且也衍生了很多新型、创意的数据图表。 大家应该都知道南丁格尔(国际上以她的生日命名了护士节),但很多人应该不知道南丁格尔玫瑰图(下图)就是她创造的。在克里米亚战争期间,南丁格尔通过搜集数据,发现很多死亡原因并非是“战死沙场”,而是在战场外感染疾病,或是在战场上受伤,却没有得到适当的护理而致死。为了解释这个原因,降低英国士兵死亡率,她画了这个著名的图表,于1858年递交到维多利亚女王手中。(这么漂亮的图表,想必女王一定很受感动) 图4. 南丁格尔玫瑰图 世界著名的绘图大师米纳德,开创了许多重要的主题绘图技巧,改良了其他技术。他是首个把饼图和地图结合在一起的人,并将流线放入地图中。以下图表是米纳德最广为人知的作品,被EdwardTufte认为是史上最杰出的统计图。它描绘了拿破仑的军队自离开波兰-俄罗斯边界后军力损失的状况,在一张图中通过两个维度呈现了六种维度信息:拿破仑军队人数、行军距离、温度、经纬度、移动方向以及时间-地域关系。 图5. 拿破仑行军图 计算机出现后,特别是互联网的兴起,人类社会以“摩尔定律”的速度,进入一个全新的时代,科学技术也得到了前所未有的革新与发展,同时也给人们带来了很多新思维。 技术的进步,让我们能够采集到比以前多得多的信息,数据规模不断成指数量级的增长,数据的内容和类型也比以前要丰富得多,改变了人们分析和研究世界的方式,也给人们提供了新的可视化素材,推动了数据可视化领域的发展。 与以前相比,数据可视化领域发生了很多的变化,得到了很大的发展。
- 可视化的表现形式和场景更丰富 在当今信息时代,信息出现了“泛滥”与“过载”,人们每天都受到各种信息的“轰炸”。当我们打开网页或手机APP时,首先进入我们视野的就是各种弹出的广告信息。这些信息从内容到形式,都经过了精心设计。我们走在大街上,映入我们眼球的则是满大街的广告海报,还时常有人站在街边向路人派发传单。我们不仅仅只从书上看到了可视化的图表,还从海报、信息图、PPT、数据产品、大屏等获取到了大量的可视化信息。 图6. 可视化的表现形式
- 可视化展现方式更多样和灵活 数据图表是最常用的可视化元素。除柱形图、条形图、饼图、环形图、线图、散点图、面积图、雷达图、K线图、地图等基本图表外,现在也出现了更多新式的图表,如山峰图、雷达图、气泡图、热力图、漏斗图、树图、箱形图、瀑布图、河流图、词云图、仪表盘、南丁格尔玫瑰图、旭日图、和弦图、桑基图、3D图,等等。另外,智慧的人们也常常创意性地将各种图表混搭,例如下图,地图和饼图、散点图、柱形图等搭配使用。 图7. 各种图表的混搭 除图表外,对图片和图标的灵活运用,使得可视化更加美观、形象、贴切。 图9. 图标的灵活运用
- 从静态到动态 由于技术的发展,实时数据采集、实时数据传输以及实时数据计算得以实现,人们终于得以欣赏到数据的灵动之美。以前人们只能看到事后数据形成的分析结果,看到的是数据的过去式,领略的是数据的静态之美。而现在,通过实时计算及数据可视化,人们可以知道“当前时刻发生了什么”,看到了数据的变化,看到了数据的动态之美。
- 设计上更注重用户体验 由“信息泛滥”引起“信息过载”,从而导致“信息焦虑”。无论是风格、元素、配色、文字、交互上还是细节上,人们的可视化作品都越来越注重用户的视觉体验,希望能让用户一目了然,不多花一点儿时间去理解。在设计风格上,从3D拟物化到简洁扁平化再到拟物扁平化的发展变化,也在不断地为用户“做减法”。
三、原则篇:关于设计的四大原则
“别忘了,你是为读者进行可视化设计。” ——《数据之美:一本书学会可视化设计》 所有的设计细节,都必须经过精心构思,都必须站在用户角度来思考。 颜值高或者打扮好看的人,总能牢牢地吸引别人的目光,相反,衣着邋遢不修边幅的人,却往往是别人瞅一眼就嫌弃。那些聪明的人,必然深谙这样的秘诀:好看的PPT报告,总能在第一时间吸引受众,再加上生动的演讲,就会收到很多好评;广告牌做得越好,就越吸引路人的注意力,越能让路人记住,广告效果也就越好。 当你看到别人的可视化作品时,你是否总觉得不好,但怎么也说不出到底哪些地方不好?如果你熟悉以下基本原则,就算不是一个专业的设计人员,你也可以快速看出哪里出了问题并提出非常中肯的建议。如果你还能熟练运用这些原则,那你的可视化作品将焕然一新,更加专业、好看、有趣,也将收获更多读者的赞赏。
亲密性(分组)
在生活中,几乎每件事