配色: 字号:
可视化笔记
2022-08-22 | 阅:  转:  |  分享 
  
可视化笔记数据可视化要义数据可视化是一种由图形、图像、数字等元素组成的语言用于解释、呈现目标数据之间的关系。数据可视化是一种以图形符号为主要
表现形式,将不可见的、抽象的、复杂的、枯燥的、专业的、不直观的数据内容,有趣的、浅显的传递给用户的有效手段。用户可以通过这样的手段
完成自己的目标(例如对选定范围内的数据进行分析,发现数据的周期与规律、迅速找到自己目标节点中的关键数值、对比几组数据以了解当下研究
对象的情况等)这也是数据可视化最为明显的价值。什么是数据可视化MichaelFriendly将数据可视化定义为“以某种示意图形式
抽象的信息,包括信息单元的属性或变量。”换句话说,它是一种连贯的视觉传达定量内容的方式。根据其属性,数据可以许多不同的方式表示,例
如折线图,条形图,饼图,散点图或地图。确定呈现数据集的最佳方式,并遵循数据可视化最佳实践,对于图形设计人员在创建这些视觉效果时非常
重要。特别是在处理非常大的数据集时,开发有张力的表达方式,对于创建既有用又具有视觉吸引力的可视化至关重要。为何使用数据可视化数据对
于人类大脑来说难以理解:实际上,人类大脑难以理解大于5的数字(研究表明5±2的数量是人类不需要进行某种类比或抽象就可以直接感受的
)。数据可视化设计人员可以在创建这些抽象中发挥重要作用。如果无法以有用的方式理解和消费大数据,那么它就毫无用处。这就是为什么数据可
视化在从经济学到科学技术,医疗保健和人类服务等各个方面都发挥着重要作用的原因。通过将复杂数字和其他信息转换为图形,内容变得更易于理
解和使用。数据可视化的优势使用目标将一些有关的,但是较为零散信息数据用一根根线索穿插起来,形成体系化的联系,方便使用者迅速把握各个
节点之间的关系进行推导。在设计数据可视化的时候,要基于用户的目标经过一定的处理和优化后才能进行呈现,用户的期望是能够高效、清晰、简
洁地完成数据的对比、关键节点的查询、每组数据之间的分析等一系列交互,提升自己的工作效率,降低自己的学习和使用成本。可视化的基本原则
定义明确的目标数据可视化应该回答重要的战略问题,提供真正的价值,并帮助解决实际问题。例如,它可用于跟踪性能,监控客户行为以及衡量流
程的有效性。在数据可视化项目开始时花时间清楚地定义目的和优先级将使最终结果更有用,并防止浪费时间去创建不必要的视觉效果。了解你的受
众如果不是为了与目标受众清楚地沟通,数据可视化是无用的。它应该与受众的专业知识兼容,并允许他们轻松快速地查看和处理数据。考虑到受众
对数据所呈现的基本原则的熟悉程度,以及他们是否了解这些可视化的主要背景、这些图表是否定期重复使用等等。使用可视功能正确显示数据有很
多不同类型的图表。确定哪种类型的数据最适合采用何种图表进行可视化展现,这本身就是一门艺术。正确的图表不仅可以使数据更易于理解,还可
以最准确地呈现数据。要做出正确的选择,请考虑您需要传达的数据类型以及向何人传递该信息。数据可视化最受欢迎的图表类型:折线图:折线图
应该用于比较一段时间内的值,非常适合显示大小变化。它们还可用于比较多个数据组的更改。条形图:条形图应用于比较几个类别的定量数据。它
们也可用于跟踪数据随时间的变化,但最好仅在这些变化很重要时使用。散点图:散点图应该用于显示一组数据的两个变量的值。它们非常适合探索
两组之间的关系。饼图:饼图应该用于显示整体的部分。它们无法显示随时间变化的变化。有序和连贯的组织您的可视化成果在将大数据集转变成可
视化成果时,一致性尤为重要。连贯的设计将有效融入背景,使用户能够轻松处理信息。最佳可视化帮助观众快速得出数据所呈现的结论,而不是还
需要额外的沟通和讲解才让人理解。创建数据层次结构,并以决策者的关心的方式显示各种数据点。您可以从最高到最低排序以强调最大值,或进行
分类显示以强调更重要的类别。甚至显示数据的顺序,使用的颜色(例如最重要的点的颜色更亮,或基线数据显示灰色),以及图表的各种元素的大
小(比如扩展饼图的某些切片)图表的常规边框),从而帮助用户更轻松地解释数据。注意在使用这些技术时不应该引入偏差。颜色和其他可视化元
素颜色被广泛用作表示和区分信息的方式。它也是用户决策的关键因素。通过分析人们对图表中使用的不同颜色组合的反应,发现人们对具有微妙颜
色变化的调色板具有更强的偏好,因为它更具美学吸引力。然而,虽然吸引人,但微妙的调色板使得图表更难分析并获得洞察力。这完全违背了创建
显示数据的可视化的目的。如果对于普通人来说难以阅读具有相似颜色和较低对比度的图表,那么对于没有完美视觉的人来说,它们就更加困难?-
并且他们代表了人口中的重要部分。据世界卫生组织称,估计有2.53亿人患有视力障碍。幸运的是,有一些工具可用于检查具有这些损伤的人
如何将图像可视化,例如Photoshop和Illustrator中的色盲校对。使用足够大的字体大小以及类型和背景之间足够的对比度等
其他方面也很有帮助。如果模拟工具显示调色板的问题,则有一些技术可以提高图形可读性:使用具有高对比度的颜色使用带有图案或纹理的颜色来
传达不同类型的信息使用文本或图标标记元素即使数据可视化使用比例模型,也可以在每个步骤之间使用足够的颜色对比度。当用户将鼠标悬停在每
个国家/地区时,则显示相应的标签。字体选择可以影响文本的易读性,增强或减损预期的含义。因此,最好避免艺术字体并坚持使用更基本的se
rif或sansserif字体。确保数据可视化的介质具有清晰的字体大小。SmashingMagazine建议“在现代网页设计中
,16像素通常应该是最小尺寸”。不要扭曲数据好的数据可视化应该清楚地讲述故事,避免扭曲。避免使用不能准确表示数据集的可视化表示。数
据可视化可以引导观众得出某些结论而不需要修改数据本身。设计者在希望传达主观信息时,如用于公共传播信息图--这一设计方法非常有用,通
常是为了支持特定结论而不仅仅是传达数据。颜色选择和调用特定数据点之类的东西可以用于此目的,但这可能会使设计者的可信度受到质疑。什么
样的可视化是成功的可视化?可视化好坏的判断标准,是指能否方便理解。图表理解梯度图:从上往下,理解难度递减。合适图表的5大黄金法则:
1.Itlooksfamiliartomostofpeople2.Ithasastructure3.It
matchesyournarrative’sstructure4.Itisvisible(somethingtha
tcanbeseen)多元数据可视化的知觉和认知极限几乎所有的数据可视化都是多变量的,但是单个图形可以显示的变量数量存在实际
限制。这些限制因使用的方法而异。当前可以使用三种图形方法来显示多个变量:使用不同的视觉元素对每个变量进行编码使用相同的视觉元素对每
个变量进行编码使用小而多组图增加变量的数量使用不同的视觉属性对每个变量进行编码第一种方法是最常用的,并且效果很好,但是通常将可以在
单个图形中有效显示的变量数限制为四个。这是此方法的一个简单示例,仅显示两个变量:一个变量(按月)被编码为沿X轴的水平位置,另一个变
量(按美元销售)被编码为沿Y轴的垂直位置。换句话说,此示例使用两个视觉属性来编码值,每个变量一个:二维水平位置和二维垂直位置。这是
另一个示例,但是这次显示了四个变量:沿X轴的水平位置(患者的费用百分比);沿Y轴的垂直位置(每位患者的美元费用);气泡大小(患者数
);和气泡颜色强度(患者年龄)。我们可以在此图中以对我们的大脑有效的方式包含第五个变量吗?当然,还有其他几种视觉属性可供选择,但是
在这种情况下,它们中的任何一个都能起作用吗?不幸的是,主要是由于感知上的限制,答案是“不好”。也许您会想到,除了颜色强度的变化(在
这种情况下可以编码患者的年龄)之外,我们还可以使用各种颜色来编码一个新变量,例如患者种族组。如果这样做,由于很难比较不同色调的变化
强度,因此色彩强度将不再有效,并且使用色相编码的变量将受到影响,因为当色彩强度变化时,不再容易将具有相同色调的对象分成不同的组。作
为替代,可能都是圆形的气泡可以改变形状以编码第五变量(例如,圆形,正方形,三角形等)。这种方法的问题在于,虽然我们可以粗略地比较圆
形,正方形和三角形的大小,但是我们不能很好地比较圆形,正方形和三角形的大小另一个。形状上的差异使得尺寸上的差异难以辨认。即使只有四
个变量,我们也已经在该图中达到了有效性极限。请注意,确定小气泡的颜色强度并将其与其他气泡进行比较是多么困难。当物体很小时,颜色很难
辨别。物体越大,颜色越多,这使辨别变得更容易。在继续考虑可能用于编码第五个变量的其他视觉属性时,每个属性都会遇到问题。您可能会认为
我忽略了可以轻松添加到该气泡图中的视觉属性:沿Z轴的位置。实际上,我有充分的理由避免使用Z轴。通过添加Z轴将其转换为3-D图形,将
使沿该轴编码的变量难以理解。这是因为,与人类感知辨别二维位置(沿平坦平面的水平或垂直方向)差异的难易程度相反,我们对深度的感知不是
很好。添加Z轴将迫使我们不断旋转和倾斜图形,以水平或垂直调整Z轴的方向,以查看气泡沿该轴下落的位置,这是不切实际的。当我们为每个图
形使用不同的视觉属性时,视觉感知和认知对可以在单个图形中编码的变量数量施加了严格的限制。这些限制与几个因素相关:对于图形中的数据编
码,只有少数视觉属性可以很好地起作用。使用某些视觉属性消除了在同一图形中使用某些其他属性的可能性。工作内存一次只能处理三个或最多四
个信息块,因此通过包含四个以上的信息增加价值将是有限的。将单个图形中的视觉属性数量增加到一定数量以上会造成混乱的外观,从而损害感知
。让我们依次考虑这些限制。有效的视觉属性从1960年代SémiologieGraphique《图形符号学》的作者Jacques
Bertin的工作开始,人们就研究了将其应用于数据可视化的视觉感知。Bertin探索了机会和局限性,这些机会和局限性会影响各种视
觉属性用于编码数据。由于Bertin的开创性工作,关于这一主题的最好的书已被写入由科林出版社出版的书籍《信息可视化:感知的设计和视
觉思维的设计》。从事数据可视化领域工作的每个人都应该阅读这些书。开发数据可视化产品的供应商肯定应该阅读这些书,但是基于大多数可视化
产品所展示的无效功能,他们似乎很少这样做。所有数据可视化都有一个共同点:它们使用视觉感知的基本属性以图形方式对数据值进行编码。每当
我们看着这个世界上的物体时,出现在我们脑海中的视觉表示都是由一小组基本的视觉属性构成的。这些属性称为视觉感知的注意力不集中属性,因
为它们在注意力不集中(即在意识觉察之前)在大脑的视觉皮层中进行处理。与有意识的感知相比,这些元素中的每一个都是分开感知的,但是并行
而不是连续地感知。注意力集中的速度和便利性是正确完成数据可视化如此强大的原因的很大一部分。这是视觉感知的前瞻性元素的相当全面的列表
,这些属性是在图形中编码数据的潜在候选者,分为六类:位置属性二维水平位置(即,沿X轴排列的对象)二维垂直位置(即,沿Y轴排列的对象
)立体深度(即,感知对象与查看者的距离,可通过沿Z轴排列对象来图形化模拟)大小属性线长(例如,条形图中条的长度)线宽(例如,折线图
中的线宽)面积(即对象的二维尺寸,例如圆的尺寸)体积(即对象的3-D尺寸,例如球体的尺寸)形式的属性线的方向(例如,线图中线的斜率
)简单形状(例如,圆形,正方形和三角形之间的差异)角度(即两条线相交处创建的角度,例如饼图中的切片在其中心处形成的角度)曲率(例如
,线的弯曲程度)外观属性色相(例如红色,绿色,蓝色等)颜色强度(即,对象的颜色从浅到深,从浅到饱和或两者都变化的程度)透明度(即我
们可以透过一个物体看到的程度)模糊(即对象沿其边缘出现锐化或模糊的程度)纹理(即物体表面上的各种图案,例如木纹或金属的光滑外观)运
动或变化的属性运动方向(例如,气泡在动画气泡图中的移动方向)运动速度(例如,在动画气泡图中以不同的速度移动气泡)闪烁速度(即,对象
在打开和关闭或从低强度到高强度闪烁的速度)数量属性数量(即我们识别一个,两个或三个物体之间数量差异的能力)添加标志(例如,对象中另
一个组件的不同添加—它要么在那里,要么不在那里—例如,气泡图中气泡周围的边框)我们可以将视觉感知的所有这21种注意力集中的属性视为
对图形中的值进行编码的候选项,但只有其中一部分能够很好地工作。二维水平位置(右大于左)二维垂直位置(高大于低)立体深度(远处大于近
处,反之亦然)线长(长大于短)线宽(粗细大于粗细)面积(大大于小)音量(大大于小)线的方向(相对于水平基线,陡度大于浅度)角度(宽
大于窄)曲率(曲线大于直线,反之亦然)颜色强度(暗或亮大于亮或浅)透明度(不透明大于透明)模糊(模糊大于锐利,反之亦然)运动速度(
快大于慢)闪烁速度(快大于慢)数量(多大于少)在这16个属性中,只有三个能很好地编码图形中的定量数据:二维水平位置二维垂直位置线长
当我说它们很好地工作时,我的意思是可以快速,轻松且非常精确地将它们感知并相互比较。尽管这三个属性运作良好,但所有其他属性仅提供一种
近似的价值感和粗略的比较方式。其中,以下两个在图形中往往是最有用的:色彩强度区域由于颜色强度和区域仅支持近似解码和粗略比较,因此,
仅在二维水平位置,二维垂直位置或线长均不可用时,才应使用它们。通常,甚至不考虑数字,因为它受到严格限制。Numerosity指的是
我们专注于观察一个,两个或三个量之间差异的能力。我们还可以辨别出三个以上的对象大于三个对象,但是我们不能专心地解码实际数字。例如,
如果屏幕上出现了几组点,我们可以不经意间就认出其中一些包含一个点,一些包含两个,三个,还有三个以上。但是,当群集包含三个以上的点时
,我们无法不花时间来有意识地计算出它们的数量。因此,仅当数量不超过3时,数字才可用于编码图形中的值。这种情况很少发生,以至于通常不
考虑将数字作为图中值编码的候选对象。剩余的定量感知属性-立体深度,体积,线方向,角度,曲率,模糊,运动速度和闪烁速度-很少在图形中
使用,这是因为我们对它们的感知不佳,或者因为它们没有实际的。某些视觉属性只能用于编码分类变量,而不能用于定量变量。其中包括:造型简
单色调质地新增标记在图形中最有用的两个是色调和简单形状(按此顺序)。纹理并不是特别好用,因为当将纹理图案应用于图形中对象的表面时(
通常使用交叉阴影线等),它们会产生视觉上混乱的外观。添加的标记只能用于表示一个二进制变量(即,只有两个潜在值(例如,女性和男性)的
变量),因为添加的标记要么存在,要么不存在。通过将标记附加到用于对值进行编码的主要对象上,还可以使用总是在图形中显示的添加标记,例
如通过始终在气泡图中显示气泡周围的边框,并通过在其中应用其他属性之一来实现。上面的列表(例如颜色强度)到边界以对定量变量进行编码。
那么,这把我们留在哪里呢?尽管所有这21个全神贯注的属性都可以潜在地用于对图形中的变量进行编码,但只有少数几个能很好地工作。然而,
事实证明,这并不是单个图形只能有效显示有限数量的变量的唯一原因。我们在单个图中编码的变量的数量还受到以下事实的影响:某些视觉属性无
法在单个图中有效地组合,工作内存一次只能处理三个或最多四个变量,并且太多的视觉属性往往会产生视觉混乱。接下来,我们将考虑这些限制。
视觉属性的有效组合某些视觉属性可以组合在一个图形中,而某些则不能。例如,在散点图中,二维水平位置,二维垂直位置,色调和简单形状可以
很好地协同工作。另一方面,正如我已经指出的,我们无法在单个图形中有效地将色相和颜色强度结合在一起。另一个无效的组合是对单独的变量使
用线长和线宽。这是因为长度和宽度是不可或缺的属性。这意味着,当将它们组合在一起时,我们将结果视为面积,而不是长度和宽度的独立属性。
想象一下,我们用条形的长度编码一个变量,用条形的宽度编码第二个变量。我们会先仔细地将这种组合视为条形的总面积上的差异,而不再独立地
视为条形的长度和宽度上的差异。尽管我们不能专心地将长度和宽度视为单独的变量,但我们可以有意识地做到这一点,但是速度会慢得多。这是无
法有效组合的属性的列表:线长和线宽,因为这些属性是不可或缺的颜色的任何属性(例如,色相和颜色强度,色相和透明度或颜色强度和透明度)
当物体尺寸变小时,尺寸和颜色(色相,强度或透明度)形状和大小,因为我们无法有效比较形状变化的对象(例如,圆形,正方形,三角形和星形
)的大小形状和曲率,因为曲率是形状的一个方面,更改曲线会改变形状形状和线的方向,因为只有很少的形状(例如线和矩形)可以很容易地感知
和比较坡度当然可以将这些属性组合在单个图中,但是不能有效地组合它们。视觉混乱通过混乱,我指的是图形外观的特性,当我们尝试着眼于当前
关注的特定属性时,这些特性看起来可能会显得凌乱而分散注意力。例如,毫无疑问,让物体以各种速度闪烁以编码定量变量将使几乎不可能参加其
他任何事情。甚至过亮的颜色也会导致混乱的外观,分散注意力。通过向图形引入另一个视觉属性来编码的每个其他变量都带有感知成本。显示器越
干净越简单,使用起来就越容易。使用相同的视觉属性对每个变量进行编码可以使用相同的属性在图形中显示多个变量,而不是使用视觉感知的不同
注意属性对图形中的每个变量进行编码。特别是发明了两种类型的图形来将这种方法用于特定目的:平行坐标和台镜。平行坐标平行坐标图使用二维
位置(通常沿Y轴垂直)来编码一系列变量。下面的示例显示六个定量变量,每个变量沿其自己的Y轴。如果您不熟悉平行坐标图,请让我简要解释
一下它们如何工作。让我们开始考虑一个变量。在下面的示例中,通过在Y轴上放置25个点来表示25种产品的美元价格。当以这种方式在单个定
量标度上用点表示每个值以显示值如何分布时,该图称为带状图。尽管带状图通常沿X轴排列,但Y轴也可以工作。当条形图垂直排列时,可以并排
放置多个条形图以显示整个系列的变量,例如同一组25种产品下面显示的六个变量。但是,到目前为止,我们无法确定哪个点代表哪个产品。如果
我们要确定产品在整个六个变量集之间的比较方式,这将很有用。为了使之成为可能,平行坐标图将使用一条线在每个Y轴上连接每种产品的点。在
下面的示例中,该示例显示了50种产品的多变量数据,突出显示了特定行以显示单个产品的多变量资料。(注意:在此示例中,没有为每个变量分
配单独的量化标尺,而是通过将每个标尺表示为百分比来对标尺进行归一化:值最低的项目位于底部,值为0%,值最高的项目位于百分比,顶部为
100%。由于平行坐标图的目的不是解码单个值,而是检查和比较多元模式,因此可以以这种方式对比例进行归一化而不会丢失相关信息。)在此
示例中,我们有一个图形显示50个产品的六个变量,但是平行坐标图可以包含更多变量和50多个项目。您可能会想到,当平行坐标图包含许多变
量和项时,它们可能变得复杂且混乱,但是如果设计恰当,它们仍然可以用来有效地比较复杂的多元轮廓,尤其是通过使用过滤和突出显示。与以不
同的视觉属性对变量进行编码的图不同,通过以相同的方式(即,二维垂直位置)对每个变量进行编码,平行坐标图以我们的大脑可以完全阅读和解
释的方式显示多个变量有效。由于一项的每个值都由一条线连接,该行形成的模式可以作为单个信息块保存在工作存储器中。当我们将该行保存在工
作内存中时,我们并没有在内存中保存每个变量的值,但是当我们尝试比较多变量配置文件时,这不是必需的,我们可以通过简单地比较多行的模式
来做到这一点。对于这样的任务,这种用于多元显示的方法非常出色。如果在平行坐标上没有更全面的说明,那么上面的示例可能会让人不知所措,
因此您可能会怀疑这些图以适合我们大脑的方式呈现复杂多元数据的能力。他们确实需要大量的研究和实践,这就是为什么他们不那么熟悉的原因之
一,但是如果您需要比较复杂的多元配置文件,那么可以肯定地值得他们付出努力。Tablelenses使用一系列轴,每个变量一个轴并排
排列,但是排列与平行坐标图略有不同。下面是个简单示例:在这种情况下,Y轴托管一个分类标尺,用于标记要为其显示定量数据的项目(在这种
情况下为美国),X轴托管独立的定量标尺,每个变量一个。将值表示为条形时,每个条形端的水平位置和每个条形的长度都表示相同的定量值。与
用于比较多元轮廓的平行坐标不同,tablelenses用于一次查找几个定量变量之间的潜在相关性。请注意,在上面的示例中,根据利润
(最左侧的变量),各州的排名从顶部的最高值到底部的最低值。有了这种安排,我们现在可以查看其他各列中从上到下的条形排列,以查看是否有
其他变量表现出与获利相似或相反的模式。如果其他变量之一的条形排列大致显示出从顶部的高值到底部的低值的模式,则表明我们与利润呈正相关
。即,随着每个州的利润值降低,销售值也趋于降低。另一方面,如果销售大体上呈现出高值低端到低端高位的格局,这将告诉我们它仍与利润相关
,但呈负相关。即,随着利润值降低,销售值趋于增加。使用小倍数增加变量数这种最终的数据可视化方法用于增加可以同时显示的变量数量。这种
方法有不同的名称,但最熟悉的是爱德华·塔夫特(EdwardTufte)的小倍数。早在1970年代,爱德华·塔夫特(Edward
Tufte)和威廉·克利夫兰(WilliamCleveland)都促进了使用结合了几个小图形的显示器的使用。每个图的工作原理相同
,但是每个图显示与不同分类项关联的数据。在下面的示例中,并排布置了三个小图,每个小图显示与不同客户群相关的数据:消费者,公司和内政
部。除此之外,这三个图的工作原理完全相同。每个显示沿X轴以美元表示的销售收入,沿Y轴按折扣率显示,按气泡大小显示的利润率,按气泡色
调显示的地理区域。此示例中的各个图已经足够复杂,每个图都有四个变量,因此无法在其中显示其他变量。但是,通过将每个客户细分显示在其自
己的图表中,将客户细分的附加变量添加到显示中,而不会造成复杂的情况。可以在较小的倍数显示中包含比上例中出现的三个图形更多的图形,并
且可以以各种方式在屏幕上排列它们。上面的示例将较小的倍数并排水平排列在一行中,但也可以将它们垂直排列在单列中。大型系列也可以包裹在
多行和多行中,威廉·克利夫兰(WilliamCleveland)称这种布置为网格展示。或者,可以使用一系列小的倍数来添加两个以上
的分类变量,而不仅仅是一个。在下面的示例中,图表的每一列仍显示客户细分,但是现在每一行显示产品类别。当以这种方式排列小的倍数时,一
个变量沿着行,另一个变量沿着列,我称其为可视交叉表。即使小的倍数显示由多个图形组成,但由于所有图形都相同并且可以一次看到,因此我们
可以轻松,快速地将它们相互比较。如果我们知道如何读取一张图,那么我们就会知道如何读取它们。这是一种增加可同时显示的变量数量的有效方
法,该数量可以超出您可以包含在使用不同视觉属性对变量进行编码的单个图形中的数量。结论想要突破我们的局限性是很自然的。我们希望变得更
好;我们想做更多。但是,通过忽略我们的局限性,我们无法实现这一目标。无知是导致妄想和功能障碍的途径。软件供应商在构建和销售无法以无
效方式同时可视化十二个或多个变量的工具时一无所获。当我们的局限性消失时,我们会尽力寻找真正的解决方案来克服它们。我们总是从了解我们
的局限性开始。平行坐标图,tablelenses和小倍数都是创新,证明了这种方法的优点。另一方面,下图显示了当我们完全忽略限制时
会发生什么。区分2类问题和4类可视化方法两个问题想要开始用视觉的方法思考,你需要考虑当前问题的本质和目标:我所面对的信息是概念性的
还是数据驱动的?你要么在展示一些定性的信息,要么你在绘制一些定量的信息:一个是想法,一个是统计数据。这里要注意的是,这个问题是关于
信息本身的,而不是你想最后展示信息的方式。举个例子,高德纳公司的技术成熟度曲线是用一个传统上数据驱动的方式展示的(一条曲线),但是
展现的内容并不是真实的数据而是一个概念。?我想展示还是探索一些事情?解释你想要做什么:要么你想要表明一些信息(表明),要么你想解决
一个问题(探索)。探索性的可视化一般有两种。一种是证明一个假设是否正确。一种是挖掘工作簿中的规律、趋势和不规则现象。视觉沟通的四种
类型展现想法,产生想法,视觉探索和日常数据可视化。展现想法我们也可以叫这个象限“咨询角”。咨询师们会情不自禁的处理表格。展现想法最
的就是利用我们理解比喻(树、桥)和简单的设计规范(圆,图)。组织结构图和决策树是经典的展示想法的例子。展现想法数据类型:流程,框架
典型应用场景:展示,教学主要技能:设计,编辑目标:学习,简化,解释展现想法的时候需要非常清楚和简单的设计,但是大量比喻的引入,会带
不必要的附加品。因为展现想法的时候并没有数据集所来来的规范和限制,这些规范需要人为产生。因此这个方向的关注点应该在于沟通,想法的框
架和逻辑也要明了。这一部分最重要的技能与用文档编辑器编辑文档差不多,都在于将复杂的事情解构成它们的本质。设计能力也很重要,有的时候
需要寻求帮助。假设一个公司请咨询公司帮自己的研发部门在其他行业找一些项目灵感。这些咨询师一般会用一种叫做金字塔搜索的方法:这是一种
从与你熟知的领域专家那里获取他们领域中的顶尖人物,然后反复寻找下一个领域的专家的方法。这个方法解释起来有点困难,咨询师用下面的图来
展现这个方法:横轴表示离我们近或者远的行业,纵轴表示专家程度的低到高。而金字塔图型本身展示出来顶尖专家和入门级专家相比的稀缺性。而
标题中的“爬金字塔”让我们很快就可以理解这个概念。产生想法和展现想法一样,产生想法依赖着概念的象征,但它更多地发生在没有那么正式的
场合,比如办公室外,战略会议或早期的创新项目。它被用于发现如何看待商业运作以及解决复杂管理问题的新方法:公司团体重组,开发新商务流
程,为决策系统编制规则。产生想法数据类型:复杂,未定义典型应用场景:工作会议,头脑风暴主要技能:团队组织,辅助目标:解决问题,探索
问题,创新虽然“产生想法”可以单独完成,但交叉使用设计思维、尽量多地收集不同的观点和图像处理方式收集会对此助益良多。视觉探索包括两
部分。一开始我们把以探索为目的的可视化分为两种:证实假设,和挖掘规律、趋势和不规则现象。前者更加目的明确,而后者比较灵活。数据越大
越复杂,而你的相关知识越少,做法便越偏向开放性。视觉探索数据类型:大数据,复杂,动态典型应用场景:工作会议,测试,分析主要技能:商
务智能,编程,配对分析目标:趋势发掘,结合情理理解,深度分析视觉证实面对这种任务,你要回答两个问题:我所猜测的真的正确吗?有其他描
述这个想法的方式吗?数据范围一般是可控的,而且你使用的图表类型大多相似,虽然希望用新方法描述时你可能会尝试些比较罕见的类型。视觉证
实一般不会用于正式场合;你这么做是为了准备适合用于报告的图表,这意味着你的注意力需要从设计转到快速生成可视化。电子表格操作和编程技
能在这里比较有用。视觉探索开放性的、用数据驱动的可视化一般是数据科学家和商务智能分析师的领域,虽然新工具正逐渐把商务经理们吸引到视
觉探索中来。视觉探索值得尝试,因为它通常能提供其它方式无法收集到的信息。因为我们并不知道我们正在寻找的东西是什么,这些可视化会更直
观地呈现数据。在一些极端的情况下,这类项目会结合多个数据集,或结合自动更新的动态、实时数据到系统里。统计模型会从中受益匪浅。视觉探
索会引发交互:经理们可以调节参数,加入新数据,重新可视化。复杂的数据有时候也适合特殊的可视化,比如force-directeddi
agrams展示网络如何分类,以及地理相关的图表。函数在这儿很有优势:分析,编程,数据管理和商务分析技能相比创造出报告图表更为关键
。意料之中的是,这是经理们最频繁寻求专业帮助达到分析目的的部分。日常数据可视化虽然数据科学家们大部分的工作是视觉探索,但主管们大部
分的工作是日常数据可视化。这部分由你平常复制黏贴的基本图表组成。一般来说他们是简单的——线形图,柱状图,饼图和散点图。日常数据可视
化数据类型:简单,少量典型应用创景:正式场合,报告主要技能:设计,故事陈述目标:证实内容,设置情境“简单”是关键。理想情况下,这
样的可视化仅提供一个信息,展现少数几个变量。目的也是直白明确的:证实内容,设置情境。简单是设计上的主要挑战,所以设计技能非常重要。
在报告中,清晰和逻辑通顺会使表格起到更大作用,因为时间有限。一个设计差劲的表格会使人产生疑问,报告者便要浪费时间去解释一些本应该一
目了然的东西。如果一张日常数据可视化图不能把内容表达出来,它便失败了,像一个需要好好解释的冷笑话一样。这并不是说展示性图表不能引起
讨论。但讨论的内容应该基于图表所含的内容,而不是图表本身。配色可视化色彩搭配技巧什么是色彩理论?色彩理论是围绕色彩及其在创造美观视
觉效果方面的主要规则和指导方针的基础。通过了解颜色理论基础知识,您可以开始为自己解析颜色的逻辑结构,从而更有策略地创建和使用调色板
。结果意味着唤起一种特定的情感、氛围或审美。为什么色彩理论在可视化设计中很重要?虽然有许多工具可以帮助我们中最缺乏艺术性的人创建引
人注目的视觉效果,但图形设计任务需要更多关于设计原则的背景知识。选择正确的颜色组合,乍一看这似乎很容易,但是当您凝视色轮时,您会希
望自己对所看到的内容有所了解。了解颜色如何协同工作,它们对情绪和情绪的影响,以及它们如何改变您网站的外观和感觉。从有效的CTA
到销售转化和营销工作,正确的颜色选择可以突出显示您网站的特定部分,让用户更易浏览,或者从他们点击的第一刻起让他们有一种熟悉感。色彩
理论101还记得听说过初级、二级和三级颜色吗?色彩理论模型图初级颜色(原色)原色(Primarycolors)?是您无法通过将两
种或多种其他颜色组合在一起来创建的颜色。它们很像质数,不能通过将其他两个数字相乘来创建。共有三种原色:红色、黄色、蓝色将原色视为父
色,将您的设计固定在通用配色方案中。当您开始探索其他色调、色调和色调时,这些颜色中的任何一种或组合都可以为您的颜色选择来源。在使用
原色进行设计甚至绘画时,不要觉得仅限于上面列出的三种原色。合成色合成色是由上面列出的三种原色中的任意两种组合而成的颜色。查看上面的
色彩理论模型图——看看三种原色中的两种是如何支持每种合成色的?共有三种合成色:橙色、紫色和绿色。您可以使用三种原色中的两种来创建每
一种。以下是创建合成色的一般规则:红色+黄色=橙色蓝色+红色=紫色黄色+蓝色=绿色请记住:上述颜色混合仅在
您使用每种原色的最纯净形式时才有效。三次色当将原色与合成色混合时,会创建三次色。三次色最重要的组成部分是并非每种原色都可以与合成色
匹配以创建三次色。例如,红色不能与绿色混合,蓝色不能与橙色混合,因为这两种混合都会导致略带棕色的颜色。相反,当原色与下面色轮上的合
成色混合时,会产生三次色。有六种三级颜色符合此要求:红色+紫色=红紫色(洋红色)红色+橙色=红橙色(朱红色)蓝色
+紫色=蓝紫色(紫罗兰色)蓝色+绿色=蓝绿色(蓝绿色)黄色+橙色=黄橙色(琥珀色)黄色+绿色=黄绿色
(黄绿色)色彩理论轮一个圆形图,描绘了每种初级颜色、合成色和三次颜色——以及它们各自的色调、色调、色调和阴影。以这种方式可视化颜色
可以帮助您选择配色方案,如下图所示:色彩理论轮在为配色方案选择颜色时,色轮让您有机会通过将白色、黑色和灰色与原始颜色混合来创建更明
亮、更轻亮、更柔和和更暗的颜色。这些混合创建了如下所述的颜色变体:HueShadeTintTone(orSaturation)
Hue(色调)在组合两种原色以创建辅助色时,要记住色调的重要性。如果不使用混合在一起的两种原色的色调,则不会生成辅助色的色调。通过
混合两种带有其他色调、色调和阴影的原色,最红的颜色效果取决于两种以上颜色的兼容性。Shade(阴影)Shade(阴影)?经常用于指
代相同色调的浅色和深色版本,但实际上,从技术上讲,阴影是将黑色添加到任何给定色调时获得的颜色,各种“阴影”只是指添加了多少黑色。T
int(色调,淡色)Tint色调?与阴影(Shade)相反,但人们通常不会区分颜色的阴影和颜色的色调。当在颜色中添加白色时,会得到
不同的色调。因此,一种颜色可以有一系列的色调和色调。Tone(orSaturation(饱和度))还可以将白色和黑色添加到颜色中
以创建色调(tone)。色调和饱和度(Saturation)?本质上是同一件事,但大多数人在谈论为数字图像创建的颜色时会使用饱和度
,而色调将更常用于绘画领域。加法和减法颜色理论你如果曾经在任何计算机程序上玩过颜色,可能已经看到一个模块,其中列出了RGB或CMY
K颜色,字母旁边有一些数字。有没有想过这些字母是什么意思?CMYKCMYK代表青色、品红色、黄色、基色(黑色)。这些也恰好是打印
机墨盒上列出的颜色。CMYK是减色模型,之所以这么叫是因为你必须减去颜色才能得到空白色,而你添加的颜色越多,你就越接近黑色。示例
如下:CMYK颜色组合示例CMYK在0到100的范围内工作。如果C=100、M=100、Y=100和K=100,您最终会得到
黑色。如果所有四种颜色都等于0,那么您最终会得到真正的白色。RGBRGB代表红、绿、蓝,它基于光波的加色模型。这意味着,添加的
颜色越多,您就越接近白色。对于计算机,RGB是使用从0到255的比例创建的。黑色是R=0、G=0和B=0。白色则是R=
255、G=255和B=255。RGB颜色组成示例七种配色方案是什么?七种主要配色方案是单色(Monochromatic)、类比(
Analogous)、互补(Complementary)、分裂互补(SplitComplementary)、三色(Triadic
)、正方形(Square)和矩形(或四色)(Rectangle)。Monochromatic单色配色方案使用具有不同深浅和色调的
单一颜色来产生一致的外观和感觉。虽然它缺乏色彩对比,但它通常最终看起来非常干净和抛光,它还允许您轻松更改颜色的暗度和明度。mono
chromatic-color-wheel当不需要创建高对比度时,单色配色方案通常用于图表和图形。样例如下:ExampleOf
MonochromaticAnalogous类似的配色方案是通过将一种主要颜色与色轮上直接相邻的两种颜色配对而形成的。如果您想使用
五种颜色方案而不是三种颜色,您还可以添加两种其他颜色(位于两种外部颜色旁边)。analogous-color-wheel类似的结构
不会创建具有高对比度颜色的主题,因此它们通常用于创建更柔和、对比度较低的设计。如你可以使用类似的结构来创建具有秋季或春季颜色的配色
方案。这种配色方案非常适合创建暖色(红色、橙色和黄色)?或?更冷色(紫色、蓝色和绿色)?的调色板,如下所示。ExampleOF
analogousComplementary互补色方案是基于在色轮上使用彼此直接相对的两种颜色以及这些颜色的相关色调。comple
mentary-color-wheel互补色(Complementary)方案提供最大量的颜色对比度,最好主要使用一种颜色,并在设
计中使用第二种颜色作为重点。互补色方案也非常适合图表和图形,高对比度可帮助您突出重点和要点。complementarySplit
Complementary拆分互补方案(SplitComplementary)包括一种主色和与主色补色直接相邻的两种颜色,创造了
比互补色方案更微妙的调色板,同时仍然保留了对比色的好处。compound-color-wheel拆分互补配色方案可能难以平衡,因为
与类似或单色配色方案不同,所使用的颜色都提供对比度,其积极和消极方面是您可以在方案中使用任何两种颜色并获得很大的对比度。Examp
leOfcompoundTriadic三元配色(Triadic)方案提供高对比度配色方案,同时保持相同的色调。三色配色方案是通
过选择三种颜色来创建的,这些颜色均等地排列在色轮周围的线条中。triadic-color-wheel三元配色方案对于在设计中的每种
颜色之间创建高对比度很有用,但如果所有颜色都选择在色轮周围一条线上的同一点上,则会显得过于强烈。要在三元方案中抑制某些颜色,可以选
择一种主色并谨慎使用其他颜色,或者通过选择较柔和的色调来抑制其他两种颜色。三元配色方案在条形图或饼图等图形中看起来很棒,因为它提供
了创建比较所需的对比度。ExampleOftriadicSquare方形(Square)配色方案使用色轮上彼此等距的四种颜色来
创建方形或菱形。虽然这种均匀分布的配色方案与您的设计形成鲜明对比,但最好选择一种主色,而不是试图平衡所有四种颜色。square-c
olor-wheel-scheme方形配色方案非常适合在您的网页设计中,选择你最喜欢的颜色并从那里开始工作,看看这个方案是否适合你
的品牌或网站。ExampleOfSquareRectangle也称为四色(Rectangle)配色方案,矩形方法类似于其正方形
对应物,但提供了一种更微妙的颜色选择方法。rectangular-tetradic-color-wheel正如您在上图中所看到的,
虽然蓝色和红色阴影非常大胆,但矩形另一侧的绿色和橙色更加柔和,从而有助于突出较粗的阴影。如何选择配色方案「优先考虑用户体验」在为网
站、应用程序、产品或包装添加颜色之前,请先以灰度进行基本设计。可以专注于最重要的事情:用户体验。与其关注整个网站的配色方案或特定按
钮或链接的色调,不如确保一切都按预期运行。原因如下:即使是最好看的网站或具有完美颜色选择的产品,如果访问者找不到他们想要的东西,也
不足以留住他们。「利用自然灵感」考虑到一些颜色选择,请考虑您希望配色方案设置的心情。如果激情和活力是你的首要任务,那就更倾向于红色
或更亮的黄色。如果您想营造一种平和或安宁的感觉,请趋向于较浅的蓝色和绿色。「考虑颜色上下文」在下图中,每个圆圈中间的大小、形状和颜
色都相同。唯一改变的是背景颜色。然而,中间的圆圈看起来更柔和或更亮,这取决于它背后的对比色,甚至可能会注意到仅基于一种颜色变化的运
动或深度变化。「参考您的色轮」「使用60-30-10规则」使用三种颜色:60%的设计主色,30%的次要颜色和最后10%的强调色
。「起草多个设计」颜色参考工具「AdobeColor」这个免费的在线工具允许您根据本文前面解释的颜色结构快速构建配色方案。一旦您
选择了喜欢的方案中的颜色,就可以将HEX或RGB代码复制并粘贴到您正在使用的任何程序中。它还具有数百种预制配色方案,供您在
自己的设计中探索和使用。更多内容可参考:AdobeColor[1]「IllustratorColorGuide」更多内容可参
考:IllustratorColorGuide[2]「MicrosoftOfficea颜色设定」自定义微软颜色主题,所有O
ffice产品都具有预设颜色,您可以使用这些颜色来创建配色方案。PowerPoint还具有许多配色方案预设,可用于为您的设计汲
取灵感。powerpoint-themese数据可视化配色指南什么是色阶?如果你用颜色进行数据可视化,那么你用到的色相调色板和颜色
渐变就会形成标注数据的色阶。这是因为二者都与数据有着对应关系:例如每一个色相对应着一个特定的类别,而每一种颜色对应着一个特定的数值
区间。而色阶又可以分为类别色阶、连续色阶和发散色阶,它们分别对应不同数据类型:类别色阶所谓色相,就是“不同的颜色”:红,黄,蓝..
....这些颜色可以很好地用来为那些没有天然优劣之分的东西进行分门别类,比如国家、种族、性别、行业——这也是为什么用于分类它们的类
别色阶也被称为“无序色阶”。小贴士:记得要给你的色相赋予不同的明度,这对于色盲读者来说尤为重要。单一方向的连续色阶连续色阶就是由亮
到暗或由暗到亮的渐变。它们能很好地把从低到高的数字数字化,比如收入、温度或年龄。小贴士:你可以在你的连续渐变中使用一种色调(例如从
浅蓝到深蓝色)。使用两种甚至更多的色调可以增加渐变部分之间的颜色对比,使读者更容易区分它们。双方向的发散色阶发散色阶(也称为双极色
阶或双端色阶)的颜色刻度和连续的颜色刻度是一样的-但不是单一从低到高变化,而是有一个明亮的中间值,然后向刻度不同色调的两端逐渐变暗
。发散色阶经常被用来刻画消极/积极的价值取向、选举结果或李克特量表(强烈同意、同意、中立、不同意、强烈不同意)。连续色阶和发散色
阶都是定量色阶。突出/弱化对于任何色阶,无论是类别色阶、连续色阶,还是发散色阶都可以重点强调那些你认为对你的读者或故事特别重要的数
据类别:这张图强调了“0%”部分的未分类梯度。这张图弱化了“text”部分的颜色分类。这张图突出了中国。除了强调,你也可以弱化一些
类别,比如杂项、其他或者无数据。它们通常是灰色的:这张图就补充了“无数据”的已分类梯度.我们接下来关注的问题是:什么时候应该使用哪
种色阶?何时定性?何时定量?我们先来看看适用于90%情况的答案:当你的数据没有内在排序时,使用类别色阶;如果你无法对颜色编码后的变
量进行大小排序,使用类别色阶,反之如果可以排序,使用连续色阶或发散色阶。例如变量是行业或国别,如伊朗、摩洛哥、巴基斯坦,应该使用不
同的色相,因为摩洛哥和巴基斯坦无法进行大小排序,反之亦然。如果你想对失业率,如3.4%,1.4%,2%,这样的数据进行颜色编码,就
要使用一个定量的色阶,连续色阶或者发散色阶。这并不仅仅是用不同方法区分文本与数字的问题,如在李克特量表和衣服尺码表中都有内在的排序
,这些也是定量尺度。所以当你把它们可视化的时候也一定要考虑使用定量的色阶。使用明暗强调内在的排序在你的分类之下总会有一些数字,如各
州的失业率或是子类的计数,你可以使用定性的色阶来展示这些潜在的值。下面的树状图就是一个很好的示例:在大多数图表类型中,避免使用未
被编码的值(例如位置或顺序)着色。如果你想给图表中潜在的值上色,请确保这些值在无颜色的情况下也是清晰可见的,这样这个图表才会易于理
解。我不想给你们留下用一个尚未编码的潜在变量着色总是一个糟糕的决定的印象。下面是《经济学人》的一个反例:让我们看看左上角的散点图:
这张散点图是用它的数值来着色,而不需要用位置、长度等来可视化。散点图是为数不多的用根据数值上色效果就能很好的图表。我认为这是因为散
点图类似于符号图,读者习惯于看到根据数据上色的点。尽管如此,我们还是花了几秒钟才能理解《经济学人》的这张图表。但右上角的散点图就容
易理解多了,因为它是双重编码的:政治意识形态通过位置(左右)和明暗双重显示。如果没有右上角和下方柱状图,要迅速理解左上角的散点图是
很困难的。使用明暗变化区分子类别还有更多的理由建议我们使用定量色阶而不是定性色阶来给定性数值上色。比如,区分子类别。以下是经济学家
的图表展示:?图表来自《经济学人》,按宗教信仰分组的被占领土人口。这张图里,一级分类有犹太人(蓝色)和阿拉伯人(黄色),子分类是
地区,以不同明度的蓝色和黄色表示。使用色调来区分强调和弱化的区域颜色分类不必具有相同的重要性,如果你想突出显示一个类别,可以用一种
色调(通常是灰色)的阴影为所有其他类别着色:这张图表基本上把类别(已婚、单身、离婚、丧偶)分成了子类别,又通过不同色调明暗把它们分
成更大的类别。正如我们刚才看到的,子类别内的阴影不会迷惑读者——所以这个图表也不会。用阴影使分类颜色减少,便于色盲人群阅读在数据可
视化行业中有一条准则——从业者要让他们的可视化数据对于视力受损的读者也可以理解。这条准则的意思是颜色应该具有不同的亮度级别,以便在
将它们转换为灰度时可以轻松区分。此外,仅使用一种色调,你的老板(或读者)就不会抱怨它看起来“太五颜六色”了。如果你正在做一个严肃的
话题的可视化,那么这种单色调方式可能会排在你优先级列表的首位。更容易理解和专业的表达,会说服你在分类时相比于选择不同色相更有可能选
择同一色相,只是通过明暗色调来区别。但当尝试这么做的时候还有一些要点要牢记。首先,要做好一些读者会为你的着色进行“合理化”解释的准
备。即使这并不是你的本意,他们还是可能搜寻一些使用渐变的缘由。如“美国用一种更暗的色调展示是因为它有更高的值”或是“因为这对故事来
说更重要。”因此,不要随意地着色。其次,根据经验,编码条目时使用的渐变越多,阅读就越困难。辨认2-3个相同颜色的明暗渐变还是较为可
行的。但如果是4、5、6个不同的渐变读者就会放弃,尤其是如果它们是无序的、没有被直接标记、或只使用一个色相(浅蓝到深蓝)而不是多个
色相(浅黄到深蓝)的情况下,(读者会更容易放弃)。第三,如果你确实想使用渐变,如果在引入第二种颜色没有意义的情况下,请保持一种颜色
的渐变。何时一个色系?何时两个色系?如果你决定应使用定量色阶而不是分类色阶的话,还有两个问题要讨论。第一个问题,你应该使用顺序色阶
还是发散色阶?如果有一个有意义的中间节点,就使用两端发散的明暗色阶如果中间值有意义,请使用多种颜色。那可能是:例如正负经济增长50
%,例如两个选择之间的投票平均年龄或中位数,例如,年龄中位数以下商定的阈值,例如低于或高于贫困线的收入水平目标,例如收入高于和低于
季度目标这听起来很容易,但是,很多时候中间值是什么并不清楚,或者根本没有中间值。使用发散色阶主要有两个优点:第一,强调极端情况;第
二,使读者看到更多的数据差异。使用发散色阶可以强调极端值如果你的故事强调一个最大值,就选择连续色阶;如果你的故事同时关注最低和最高
值,就选择发散色阶。设想你写了一篇关于互联网的主要构成是欧洲、美国、日本、澳大利亚和其他西方国家,并且这些国家和地区从中受益颇多的
故事。为了说明你的观点,下面这幅用连续色阶制作的地图很适合作为插图。它强调了数值最高的国家但如果你的故事是关于在非洲和亚洲只有少数
人使用互联网,你或许就想用一个发散色阶来展示你的数据:使用发散的明暗,让读者看到数据中的更多差异和连续色阶相比,使用发散的明暗变化
会让你看到数据中更多的差异。这是因为你表现出一个梯度的数量范围是连续渐变的数量范围的一半。你可以在上面的地图上看到,浅蓝色渐变在
顺序色阶地图中占0至100%,但在发散色阶地图图中仅占50%至100%。10%或20%点的差异在发散色阶地图中变得更加明显。将俄罗
斯和土耳其比较一下,按照连续色阶,尽管它们之间相差16%,但土耳其在地图上看起来只比俄罗斯略浅一点点。在发散色阶的地图中,差异会更
加明显——俄罗斯仍然是类似的蓝色,但土耳其看上去颜色更浅,更接近米色,这表明它更接近中间点。何时分类?何时不分类?要使用定量色阶,
除了要注意是用顺序色阶还是发散色阶,你需要考虑是否要把数据分级(即归类,也称分类、阶梯化、量化、分等级、统计或使其离散),还是不分
级(即让其保持未归类的,也称连续的)。如果数据已分类,请使用分类的色阶首先,如果你的数据是非连续的,请不要使用连续的色阶。这意味着
,当可视化有天然排序的数据时,例如李克特量表、服装尺寸、官衔等,请使用分类的色阶。未分类的色阶会让人误认为两个相邻选项之间还有别的
选项,但其实并没有。如果想要表达统计范围,就使用分级色阶使用分类的色阶会比未分类的色阶更容易表明观点。你可以将具有相同颜色的数值和
区域进行分组,以便读者可以快速了解你想表达的观点。制图师迈克尔·多布森(MichaelDobson)在1980年代大力倡导分类地
图。他称它是“更简单、更高效的通信设备”。分类地图肯定会更简单,因为简化是分类地图的核心。但这是否也会更有效?这取决于你要传达的内
容。如果您想传达非常有限的信息,分类地图是一个不错的选择。制图师麦凯瑟琳(Mr.库尔森(Coulson)在1991年指出,只要地
图具有统计目标,例如显示:“中等家庭收入排最后百分之十的县域”“癌症死亡率高于平均水平两个标准差以上的区域”如果某个县的失业率高于
全国平均水平(如上图所示)分类是实现这一目标的方法。“分类系统定义了自己,相比地图的整体模式,重点是哪些数据单元属于特定的预定义类
别。”如果你希望读者查看某些区域是否在统计范围内,请使用分类色阶。但是一旦你想展示一种普遍现象,如“温度在南部比北部高”或“我
们的收入是今年高于去年”,未分类地图可能是更好的选择。这是同一张失业地图,其色阶有所不同:相比上一张,这张地图让人们更难看清各个县
属于哪个统计范围——即它们的失业率低于或高于全国失业率。用未分类色阶呈现细微差别的视图正如上面的两张地图所清楚显示的,与未分类的地
图相比,分类的地图显示的细微差别要小。未分类的地图会提供更真实、更细致的失业率视图。朱迪思·泰纳(JudithA.Tyner)
在她的《地图设计原理》中写道:“未分类的等值线图可以最精确地表示数据模型。”展示数据的复杂性本身就是一个崇高的目标。如果展示复杂性
在你的优先级中名列前茅,请使用未分类的地图。但是分类地图也可以或多或少地产生细微差别。你显示的类别越多,地图就变得越细致入微。仅显
示两个类别的失业率地图是个极端的例子。这里我们提供了一份有六个档次的地图,3个高于全国平均水平的档次和3个低于全国平均水平的档次。
与只有两个分类的地图相比,此地图显示的差别更加细微–但与未分类地图相比还是略逊一筹。如果你懒得向读者解释,请使用未分类色阶未分类的
图中能体现出的那些你观察到的细微差别可以让读者看到一些对仅仅对他们很重要的信息。比如,未分类图能让读者更容易看到:边界区域。在分类
地图中,通常将它们与数值稍高或稍低的区域放在一起。不同类别之间的过渡是平稳的还是突兀的。作为读者我感兴趣的地区的数值与相邻地区相比
到底是更高还是更低。举个例子,让我们放大南达科他州-下图正中央的地区。南达科他州的失业率比周围大多数州都更接近全国平均水平(所以它
的蓝色更浅)。在未分档的地图上,我们可以看到,那些与其他州接壤的南达科他州县的失业率都要高于接壤的外州的区县。上图:数据分六个等级
的地图,下图:未分级的地图。在分档地图中,这些细微的差异是不可见的。读者无法知道南达科他州的标为深蓝色的县的失业率是否比周围其他州
标为深蓝色的县更高还是更低。如果如果想让读者读取数值,请使用分类色阶分档地图使读者虽然只能让读者读取一个范围(例如6%和7%之间)
,但是却可以帮助他们更好的领会这份数据。我们在几小节前已经提到过的麦格和库尔森(MakandCoulson)在1991年的一项
研究中得出结论:“分级地图在估计数值的测试中比未分级地图在统计结果上有着非常显著的优势。”让我们再次看看南达科他州:上图:数据分六
个等级的地图,下图:未分级的地图。在上面的分档地图中,你可以确保正确阅读某一区域的值处在哪个范围-而在未分档的地图上,你只能对值域
有“合理的猜测”。你的猜测可能在很小的区间里(“接近6%”,而不是“介于5%和6.9%之间”),但他们仍只是猜测。当然,数值的可读
性也取决于到底有多少类:你定义的类别越多,读者读出正确数值的可能性就越小。因此,如果你希望读者读出特定的数值范围,请选择仅包含几个
类的分类地图。这在你展示静态地图(例如在打印或PDF报表中)这种人们没有办法通过工具或者鼠标悬停获得补充信息的时候尤为重要。数据
可视化的十条原则所谓可视化,就是用图形来显示数据的过程。更科学的可视化定义也许是:人与数据之间的图形化接口。了解你的观众在可视化设
计的初期,首先要明确可视化结果的受众。如果你做的图是给自己或合作同伴看,那么就可以省略一些步骤,因为你们都知道这张图的背景以及所要
表达的信息;但如果你打算把这张图发表到科学期刊上,那么就需要确认这张图是否正确、是否清晰、是否无歧义、是否包含了期望传递的所有信息
。如果是为了向学生解释一个概念,则必须添加额外的信息,确保这个概念能够被学生充分理解;对于普通大众来说,也许是最困难的,你需要设计
得尽可能简单易懂,只展示最重要的那部分。明确需要传递的信息明确需要传递的信息(Identifyyourmessage)。用一个
图形用来展示一个想法、一些事实或结果,这些信息如果用文字来描述也许很长或难以描述。因此,明确这张图形的作用很重要,明确期望传递的信
息,才能找到对应的最佳的可视化方法。调整图形适配不同设备调整图形适配不同设备(Adaptthefiguretothesu
pportmedium)。你的图形可能会在不同的设备上展示,如海报、电脑、监视器、投影仪,或就在一张纸上。每一个设备都代表着不同
的尺寸、不同的分辨率,以及不同的查看和交互方式。必须添加标题必须添加标题(Captionsarenotoptional)。不
管是描述一个实验步骤、介绍一个新模型,或展示一些结果,这张图形必须有标题。不要希望观众只靠图形就能猜出这张图所要表达的含义。不要相
信软件的默认设置不要相信软件的默认设置(Donottrustthedefaults)。任何的绘图库或软件都会使用一组默认设
置,包括字形、颜色、样式、大小、刻度、标记等等。事实上,这些默认设置在软件中(Matlab、matplotlib、Excel)都可
以修改。这些默认的设置适用于任何图形,换句话说,对每个特定的图形来说都不是最优的。因此,需要进行一些调整。有效使用颜色有效使用颜色
(Usecoloreffectively)。颜色是可视化图形的一个重要维度。颜色可以使图形锦上添花,也可能会使图形杂乱无章。如
果决定使用颜色,就需要慎重考虑使用哪种颜色,在哪里使用颜色。如要突出一些元素,那么就可以单独为这个元素上色,而保持其他元素为灰色或
黑色。切忌使用过多相似的颜色,使人难以辨别颜色的差异。不要误导读者不要误导读者(Donotmisleadthereader
)。区分科学图形和艺术图形的关键点在于其所关联的数据是否真实、客观。一个科学的图形,其所要表达的数据,所用的标题、标签、刻度都应符
合常识,避免无意中误导了观众。如下图所示,有四个数据:30,20,15,10,上面是使用黑色圆的面积来代表不同的数据大小,下面是使
用红色圆的半径来代表不同的数据大小。使用红色圆的半径来表示大小很容易让人产生误解。做出图形后,请向你周围的同事展示、解释、交流,倾
听他们的反馈。避免图形堆砌避免图形堆砌(Avoidchartjunk)。Chartjunk就是一张图里有太多不必要或令人疑惑的元
素,包括使用太多的颜色、标记、背景色、网格线等等。如下图所示,左面将7组数据用不同的颜色画到一张图里,有效信息都混杂到了一起,非常
糟糕;而右面将7组数据用7个图分别突出显示,一目了然。信息重于漂亮信息重于漂亮(Messagetrumpsbeauty)。可视
化在科研上的应用已经由来已久,且每个特定的科研领域都形成了一套可视化的最佳方法或标准。直接套用这些最佳标准省时省力。如果需要设计一
个全新的图时,最好首先浏览相关的科学文献,如果能找到相似的图形那样最好,如果需要你自行设计或从网页上浏览寻找灵感,需要注意的是:科
学、设计和艺术的边界正变得越来越模糊,即使某些图形非常漂亮,也要注意审查它用于科研可视化是否合适,对于科研来说,内容重于形式,信息
重于漂亮。使用合适的工具使用合适的工具(Gettherighttool)。在制作图形时,有很多工具可以使用。重要的是根据你想
要表达的内容,找到最合适的工具用来制作可视化的图形。可视化设计的10个指导原则为特定受众设计可视化是用于揭示模式的,提供上下文并描
述数据中的关系。虽然设计师对给定的一组数据集中的模式和关系没有任何影响,但她可以根据用户的需求选择显示哪些数据以及提供怎样的语境。
毕竟,就像其他产品一样,如果用户无法使用它,那么可视化就毫无意义。为小白用户设计的可视化应该是结构化的、明确的和有吸引力的。他们应
该用文字直接说明受众应该从数据中得到什么。另一方面,面向专家用户的可视化可以显示更精细的数据视图,以驱动用户探索和发现。细节和数据
密度应该简单明了。使用(但不要依赖)交互促进探索关于交互可视化设计,我们不能依赖交互来建立理解。关键数据不能隐藏在交互元素后面,而
应该在没有交互的情况下可见。或者,交互可以用作吸引点,一个引发关注的点,可以让你的读者在远远地浏览之前,亲自参与该项目。利用视觉突
出性聚焦并引导体验视觉突出性,使视觉元素从周围环境凸显的特性,是数据可视化的强大工具。它可以用于引导用户注意可视化中最重要的信息,
以帮助防止信息过载。通过使用视觉突出一些细节并压制其他细节,可以使我们的设计更清晰,更容易理解。一些视觉变量——颜色和大小——是我
们创造和控制视觉显著性的关键。色彩方案是优秀的数据可视化的关键。众所周知,色彩特别擅长打破伪装。我们可以使用温暖,高饱和度的颜色来
突出关键数据点,并应用冷色调,使用低饱和度的颜色将不太重要的信息放到背景中。尺寸也很明显。较大的元素比较小的元素更有吸引力,因此要
扩大您希望读者首先阅读的元素,并缩小不太相关的文本和元素。使用位置和长度表达定量信息并使用颜色表达分类信息Cleveland和
McGill在信息可视化方面的著名工作,研究了视觉编码的有效性(即数据维度与视觉属性的映射)。他们根据人们对视觉编码的准确感知程
度,对不同类型的视觉编码进行了排序,给出了以下(简化的)列表:通过共同的规模定位、长度、角度、区域、颜色这对数据可视化设计的意义在
于,我们显示定量信息的首选应该是按位置进行编码(如经典散点图和条形图所示)。与基于角度(如饼图)或基于区域(如气泡图)的编码相反,
基于位置的编码有助于观众在更短的时间内进行更准确的比较。然而,这并不是说所有可视化都必须是条形图或散点图。在研究可视化数据的新方法
时,牢记这些原则是个好主意。我真正想要强调的是,颜色不应该用于编码定量信息,而是应该用来编码分类信息。也就是说,我们可以使用颜色来
表示属于不同类别的数据。使结构元素像刻度线和轴一样清晰但不显眼从你的图表中消除视觉上的混乱。通过在数据元素和非数据元素之间创建可视
化对比。删除不起任何作用的结构元素使数据清晰(如背景、线条和边框),减弱必要的结构元素(如轴、网格和刻度线),否则这些元素会与您的
数据争夺注意力。网格为浅灰色,最宽设为0.5pt,轴为黑色或灰色,最宽设为1pt。直接标记数据点编码数据的每个元素都需要进行标
记,以便读者理解它所代表的内容。简单吧?错。太多设计师依靠图例来告诉读者哪些符号或颜色代表图表中的哪些数据系列。列举图例虽然对设计
师来说很容易,但对读者来说却很难。它们迫使读者在图例和数据之间来回扫描,给读者的记忆带来不必要的压力。更好的方法是直接在图表上标记
数据系列。使用消息传递和视觉层级创建叙事流程最好的可视化讲述着引人入胜的故事。这些故事来自数据中包含的趋势、相关性或异常值,并且由
于数据周围的元素而加强。这些故事将原始数据转化为有用的信息。从表面上看,似乎数据可视化完全与数字相关,但一个伟大的数据故事是无法用
语言来讲述的。信息传递具有清晰的视觉层次,才能一步一步地引导读者阅读数据。例如,可视化的标题,应该明确阐明一个关键观点,使读者领会
。分散在数据中的微小注释,可以通过异常值或趋势引起读者注意,从而为关键观点提供支撑。将上下文信息直接叠加到图表上我们可以在可视化中
使用注释来帮助创建数据故事的过程。有时我们可以添加图形元素来使这些注释更有意义,以便将这些信息更直接地关联到我们的数据。图表类型信
息可视化图表能使复杂问题简单化,能以直观方式传达抽象信息,使枯燥的数据转化为具有人性色彩的图表,从而抓住阅读群体的眼球。设计的目的
决定了图表设计的形式,按照形式特点我们常把图表分为关系流程图、叙事插图型、树型结构图、时间分布类及空间解构类五种类型。不管何种类型
,都是运用列表、对照、图解、标注、连接等表述手段,使视觉语言最大化的融入信息之中,使信息的传达直观化、图像化、艺术化。关系流程类图
表叙事插图型图表:强调时间维度,并随着时间的推移,信息也不断有变化的图表。插图型图表就是用诙谐幽默的图画表达信息的图表树状结构示意
图:具有非常有序的系统特征,可以把繁复的数据通过分支梳理的方式表达清楚。运用分组,每组再次分类的主体框架表示主从结构,让数据与示意
图有效的结合在一起。时间表述类示意图:以时间轴为中心加入文字数据即可。从设计的角度来看,将主题融入图形设计中,挑选重要事件点解读,
就可以使画面精美,加深理解力度。空间结构类示意图:运用设计语言把繁杂结构模型化、虚拟化是空间结构示意图存在的意义。大篇幅的文字讲不
清楚的事情,也许需要的仅仅是一个简单的空间结构示意图。图表设计流程基础图形创意:在设计中基础图形创意是重中之中,柱状图和饼状图是最
常用的两种基础图形,但是简单的几何形态很难给人设计感。通过对基础图形的创意来突出设计主题,就可以取得一举多得、事半功倍的效果。高吸
引度与视觉亮点画面简洁明了:图表设计是直观的、形象的、准确的、明了的,它的表现手法虽然多种多样,但是在信息传达方面始终要坚持可读性
和条理性共存。视觉导向与秩序:图表的版面设计要充分尊重人们的阅读习惯,当一张图表中充斥了大量的信息时,需要设计者合理地利用视线移动
规律,将信息顺畅有效地传达给读者。象征图释:在图表设计中,我们尽可能少用文字来表达信息含义,用图说话,用图沟通。象征性图释要以受众
广为前提和目标。其实在我们生活中,部分公共标识就已经很好的做到了这一点。选图指南第一,注重方差展示的图第二,注重相关性表达第三,突
出时间变化第四,关注排名第五,注重数据分布第六,注重部分和整体的表达第七,注重数值大小展示第八,注重空间和地图表达Python实现
可视化的三个步骤确定问题,选择图形四种基本视觉元素来展现图形:点:scatterplot二维数据,适用于简单二维关系;线:li
neplot二维数据,适用于时间序列;柱状:barplot二维数据,适用于类别统计;颜色:heatmap适用于展示第三维
度;数据间存在分布,构成,比较,联系以及变化趋势等关系。对应不一样的关系,选择相应的图形进行展示。转换数据,应用函数数据分析和建模
方面的大量编程工作都是用在数据准备的基础上的:加载、清理、转换以及重塑。我们可视化步骤也需要对数据进行整理,转换成我们需要的格式再
套用可视化方法完成作图。下面是一些常用的数据转换方法:合并:merge,concat,combine_frist(类似于数据库中的
全外连接)重塑:reshape;轴向旋转:pivot(类似excel数据透视表)去重:drop_duplicates映射:map填
充替换:fillna,replace重命名轴索引:rename参数设置,一目了然原始图形画完后,我们可以根据需求修改颜色(colo
r),线型(linestyle),标记(maker)或者其他图表装饰项标题(Title),轴标签(xlabel,ylabel),轴
刻度(set_xticks),还有图例(legend)等,让图形更加直观。数据可视化,必须注意的30个小技巧!你不得不注意的图表制
作小技巧.条形图的基线必须从零开始条形图的原理就是通过比较条块的长度来比较值的大小。当基线被改变了,视觉效果也就扭曲了。2.使用简
单易读的字体有些时候,排版可以提升视觉效果,增加额外的情感和洞察力。但数据可视化不包括在内。坚持使用简单的无衬线字体(通常是Exc
el等程序中的默认字体)。无衬线字体即是那些文字边缘没有小脚的字体。条状图宽度适度条形图之间的间隔应该是1/2栏宽度。使用2D图形
虽然他们看起来很酷,但是3d形状可以扭曲感知,因此扭曲数据。坚持2次元,确保数据准确。使用表格数字字体表格间距赋予所有的数字相同的
宽度,使它们排列时能彼此对齐,使比较更容易。大多数流行字体都内置了表格。不确定字体是否正确?就看小数点(或任何数字)是否对齐就行。
统一感统一感使我们更容易接收信息:颜色,图像,风格,来源……不要过分热衷于饼图展示多个区块比例大小,所有区块(圆弧)的加和等于1
00%。但最好避免使用这个图表,因为肉眼对面积大小不敏感。折线图中使用连贯的线条虚线,虚线容易分散注意力。相反,使用实线和颜色,反
而容易区分彼此的区别。尊重部分所占整体的比例在人们多选的问题上就会出现比例的重叠,不同选项的百分比之和大于一。为了避免这种情况,不
能直接把比例做成统计图。相较于呈现数值,有些图更着重于表现部分与整体的关系。面积、尺寸可视化对同一类图形(例如柱状、圆环和蜘蛛图等
)的长度、高度或面积加以区别,来清晰的表达不同指标对应的指标值之间的对比。制作这类数据可视化图形时,要用数学公式计算,来表达准确的
尺度和比例。使用大小来可视化值大小可以帮助强调重要信息并添加上下文提示,使用大小来表示值配合地图使用的效果也非常好。如果您的可视化
中有多个大小相同的数据点,它们会混在一起,很难区分值。使用相同细节添加的细节(和数字)越多,大脑处理的时间就越长。想想你想要用你的
数据传达什么,以及最有效的方式是什么。使用基础图形一个很好的经验法则是,如果你不能高效理解,你的读者或听众可能也难理解。因此,坚持
使用基础图形:直方图、条形图、维恩图、散点图和线形图。视图数量将您的可视化中的视图数量限制为三到四个。如果您添加太多视图,大局会被
详细信息所淹没。关于图表配色,你可以参考的5条准则颜色深浅通过颜色的深浅来表达指标值的强弱和大小,是数据可视化设计的常用方法,用户
一眼看上去便可整体的看出哪一部分指标的数据值更突出。使用同一色系颜色用得太花,会给数据增加不可承受之重,相反,设计师应该采用同一色
系,或者类比色。.避免使用鲜艳的颜色明亮鲜艳的颜色就像是把所有的字母都大写想要强调一样,你的听众感觉你在对他们大声推销。单调的颜色
,反而能很好地用于数据可视化,因为它们可以让你的读者理解你的数据,而不至于被数据淹没。标签使用不同颜色区分在某些情况下,在一段时间
或一系列的值中,我们可能测量了不同种类的物体。例如,假设我们测量6个月以来狗和猫的体重。在实验结束时,我们想画出每只动物的体重
,分别用蓝色和红色区分猫和狗。颜色数量不要在一张图上使用6种以上的颜色。标准的可视化图表一定有注释解释编码通过一定的形状、颜色和几
何图形的结合,将数据呈现出来。为了让读者能读清楚,图表设计者就要把这些图形解码回数据值。轴标签这可能看起来没有必要,或者不是很有帮
助,但是你无法想象,如果你的图表有点混乱,或者看到数据的人对此不是很熟悉,你会被问多少次x/y轴代表的是什么。按照前面的两个绘
图示例,如果要为轴设置特定名称。标题如果我们要将数据呈现给第三方,另一个基本但关键的要点是使用标题,它和之前的轴标记非常相似。重点
元素做注释通常情况下,仅仅在图表的左右两侧使用刻度本身并不是很清楚。在图上标注值对于解释图表非常有用。重要视图位置将最重要的视图放
置在顶部或左上角。眼睛通常会首先注意到该区域。优秀的可视化图表,遵守的6条原则数据排序有序数据类别按字母顺序,大小顺序,或价值进行
排序,以一种合乎逻辑的和直观的方式来引导读者了解数据。比较数据比较是展示数据差异的好法子,但是如果你的读者不容易看出差别的话,那么
你的比较就毫无意义。确保所有的数据都是呈现在读者面前,选择最合适的比较方法。不可扭曲数据确保所有可视化方式是准确的。例如,气泡图大
小应该根据区域扩展,而不是直径。展示数据让读者看到数据,这是可视化的重点。确保没有数据丢失或被设计。例如,使用标准的面积图时,可以
添加透明度,确保读者可以看到所有数据。删除变量很多时候,太多的信息会影响读者的注意,从可视化中删除隐含信息是一个好主意,在这种情况
下,我认为我们不需要在轴中包含变量的名称。避免数据噪音把不重要的东西减到最少或者去掉。这包括减弱或移除图形线,改变轴线、图形线的颜
色,以及用浅灰色描绘电子表格行。使得“数据比率”可以达到一个很高的水平,听众会更容易明白其中的数据情况。可视化工具Python可视
化工具库Altair:为统计数据可视化而构建的开源Python库,通过类似于Seaborn图的条形图、直方图、散点图和气泡
图、网格图和误差图等创建交互式数据可视化。python-highcharts:交互式可视化绘制工具,使用Python进行Highc
harts项目绘制cufflinks:plotly的高级封装版本,就如同seaborn和matplotlib的关系,可以非常简单的
可视化pandas的DataFrame类型数据。Pydeck:空间(地理)数据可视化,Pydeck库通过deck.gl对数据进行空
间可视化渲染,对3D的可视化支持非常强。Pyehcharts:Python-scicomap:专门为Matplotlib提供科学学
术图表的配色,其含有单色系(sequential),双单色系(bi-sequential),双色渐变系(diverging),
循环色系(circular),多色系(qualitative)和混杂色系(miscellaneous)颜色表。Python
-colorcet:配色包Python-cmasher:为学术配色所设计出的一个Matplotlib颜色包Python-viscm
:配色包Python-vapeplot:偏艺术类配色包数据可视化算法可视化AI可视化工具选择如何选择数据可视化工具?明确目标的易用
,多样展示型工具,比如Tableau;可以支持灵活定制的展示型,比如图标库D3;不明确目标的数据探索型,比如googlespre
adsheet的explore;有行业诉求既能可视化分析又能数据探索的,比如帆软FineBI;按照行业或者职能需求的数据可视化,比
如DOMO,Qlikview;分析VS展示:是想使用工具(R,Python)来分析数据,还是更注重于构建可视化效果(D3.j
s,Illustrator)?有些BI工具(比如说FineBI,Tableau,Plotly)试图在这其中谋求平衡,既可分析
又可展示。她根据分析和展示上的侧重性对可视化工具和编程语言们进行了排列:可以看到工具类的往往更注重展示,而编程类的比较平均,各有侧
重。数据管理如果制作可视化的时候需要更改源数据怎么办?在这方面,这些工具或编程语言的灵活性如何?低灵活性:比如在Illustrat
or中,即使你只是轻微修改了数据,也需要重头开始制作图表,这种工具还不方便进行数据管理。中灵活性:比如在D3.js中,可以单独处理
或修改数据,然后再重新导入数据文件来更新可视化结果。高灵活性:比如在FineBI中,数据分析的处理如数据建模,数据清洗,甚至是SQ
L的优化,大数据量的处理都可以在一个平台完成,同时易用,拖拽就能完成数据的可视化。传统图表VS创新图表:如果你只需要基本的图表
类型,如柱状图或折线图,Excel完全可以满足啦~但你如果想创建表现形式更为丰富的互动图表,比如点击可以出现酷炫的交互效果,像D3
.js之类的编程语言就更适合啦,但是学习此类工具的门槛也往往更高,有着陡峭的学习曲线和冗长的代码。或者也可以使用Processin
g,用它制作这张散点图的代码长度只有D3.js的一半。还有Lyra,它不需要任何代码基础,但也可以让你轻松修改数据有关的视觉元素。
交互图表VS静态图表:你是需要创造基于网页的交互图表(如D3.js,Highcharts能做到的),还是PDF/SVG/PN
G形态的图表就能满足你(R和Illustrator可以做到)?几年前,互动图表曾受到高度追捧,但现在关注焦点慢慢从“看起来怎么样
”转移到“什么才更有意义”。对于分析部分,交互特性往往也是很有必要存在的。Plotly和R的库Ggvis就可以让读者轻松地将鼠标悬
停在可视元素上来查看基础数据。下图是作者对于软件/编程的在静态和交互的划分:数据分析工具Python+SQL+Tableau+Wi
nd+Excel5大工具GoogleRefineGoogleRefine。用户在电脑上运行这个应用程序后就可以通过浏览器访问
之。这个东西的主要功能是帮用户整理数据,接下来的演示视频效果非常好:用户下载了一个CSV文件,但是同一个栏中的同一个属性有多种
写法:全称,缩写,后面加了空格的,单数复数格式不一的。。。但是这些其实都代表了同一个属性,GoogleRefine的作用就是帮
你把这些不规范的写法迅速统一起来。DataWranglerdataWrangler是一款由斯坦福大学开发的在线数据清洗、数据重组软
件。主要用于去除无效数据,将数据整理成用户需要的格式等。通过使用dataWrangler能节约用户花在数据整理上的时间,从而使其有
更多的精力用于数据分析。ZohoReportsZohoReports是一个灵活、易用的在线报表软件,做大量的信息跟踪与分析,使
公司可以轻松管理、分析全球的大量信息。Tableau几乎每个数据分析师都会提到Tableau。它具有通用的内置分析图表和一些数据分
析模型。您可以快速进行数据分析,探索价值并生成数据分析报告。https://www.tableau.com/可视化工具集JavaS
cript图形库Arbor.jsArbor是一个利用WebWorks和jQuery创建的可视化图形库,它为图形组织和屏幕刷新处理
提供了一个高效的、力导向的布局算法。34.GephiGephi是一款开源免费跨平台基于JVM的复杂网络分析软件,其主要用于各种网络
和复杂系统,动态和分层图的交互可视化与探测开源工具。可用作:探索性数据分析、链接分析、社交网络分析、生物网络分析等。Gephi是
一款信息数据可视化利器。BonsaiBonsai是一款免费开源的JavaScript图形库,用户可以使用它创建图形和动画。该库使用
SVG作为输出方式来生成图形和动画效果,拥有非常完整的图形处理API,可以使得你更加方便的处理图形效果。它还支持渐变和过滤器(灰度
、模糊、不透明度等)等效果。很多鼠标(或触摸)和键盘事件都内置了该库,并可以轻松地管理。Bonsai支持标准动画和关键帧动画,设
置了一系列的连续动画,并且拥有大量的简单函数,可以在动画中使用。ChartBlocksChartBlocks是一个易于使用在线工具
,它无需编码,便能从电子表格,数据库中构建可视化图表。整个过程可以在图表向导的指导下完成。您的图表将在HTML5的框架下使用强大的
JavaScript库D3.js创建图表。你的图表是响应式的,并且可以和任何的屏幕尺寸及设备兼容。您还可以将图表嵌入任何网页中,分
享在Twitter和Facebook上。Chart.js对于一个小项目的图表,chart.js是一个很好的选择。开源,只有11KB
大小,这使得它快速且易于使用,它支持多种图表类型:饼图,线性图和雷达图等。Chartist.jsChartist.js的开发社区
一直致力于打败所有其他JavaScript图表库。它使用了Sass的个性化风格,它的SVG输出是响应式的。ChartkickCha
rtkick是一个图表绘制工具,特点是UI美观、使用简单,并且支持IE6在内的大多数浏览器。它还可以与开源框架Django、Fla
sk/Jinja2结合使用。可以让你用最少的代码创建专业的JavaScript图表,甚至只需要一行Ruby代码即可绘制出漂亮的图表
!CubeCube是一个开源的系统,用来可视化时间系列数据。它是基于MongoDB、NodeJS和D3.js开发。用户可以使用它为
内部仪表板构建实时可视化的仪表板指标。例如,你可以使用Cube去监控网站流量,统计每5分钟的请求数量等。D3.js毋容置疑D3.j
s是最好的数据可视化工具库。D3.js运行在JavaScript上,并使用HTML,CSS和SVG。D3.js是开源工具,使用数据
驱动的方式创建漂亮的网页。D3.js可实现实时交互。这个库非常强大和前沿,所以它带有没有预置图表也不支持IE9。.Dygraphs
Dygraphs是一款快捷、灵活的开源JavaScript图表库,用户可以自由探索和编译密集型数据集。它具有极强的交互性,比如缩放
、平移和鼠标悬停等都是默认动作。更棒的是,它还对误差线有很强的支持。Dygraphs也是高度兼容的,所有的主流浏览器都可正常运行(
包括不受待见的IE8)。EChartsECharts使用js开发,为网页数据可视化工具,由于H5本身具有跨平台性质,在移动端、PC
软件端均可使用,目前ECharts已升级到第三版本,包含散点图、折线图、柱状图、地图、饼图、雷达图、k线图、箱线图、热力图、关系图
、矩形树图、平行坐标、桑基图、漏斗图、仪表盘、象形柱图、主题河流图等。编程代码下载地址:https://pan.baidu.com
/s/1jHTTelw免编程在线操作地址:http://www.525heart.com/visualization/index.
htmlEmberChartsEmberCharts–顾名思义是一种基于Ember.js框架和使用d3.js的可视化工具。
EmberCharts以绘制时间序列图,柱状图,饼图和散点图为主。它非常优易于扩展。同为Ember.js开发团队,EmberC
harts聚焦于图形互动性。它有极强的错误处理能力,当你遇到坏数据时,系统也不会崩溃。Envision.jsEnvision.js
是个基于Flotr2和HTML5的JavaScript库,用来简化、快速创建交互式的HTML5可视化图表。它包括两个图表
类型:时序图和Finance,提供API给开发者,用户可以直接自定义创建图表。EpochEpoch是一个基于d3.js开发的
工具,它使得开发者可以方便地在他们的应用或是网站上部署实时图表。它的文档整洁,完全免费并且开源,这使得它对于不想花钱购买重量级解决
方案的人来说是一个很好的选择。对普通数据和实时数据,Epoch都支持5种图表类型。这个数量并不能与FusionCharts
或是Highcharts这种特性完整的产品对抗,但它所专长的是以简单和友好的方式呈现实时数据。FusionChartsS
uitXTFusionChartsXT是一款跨平台、跨浏览器的JavaScript图表组件,为你提供令人愉悦的JavaScri
pt图表体验。它是最全面的图表解决方案,包含90+图表类型和众多交互功能,包括3D、各种仪表、工具提示、向下钻取、缩放和滚动等。它
拥有完整的文档以及现成的演示,可以助你快速创建图表。FusionChartsFusionCharts是最全面的JavaScript
图表库,包括90个图表和900种地图。如果你不是特别喜欢的JavaScript。FusionCharts可以轻松集成像jQuery
库,Angularjs和React框架以及ASP.NET和PHP语言。FusionCharts支持JSON和XML数据,并提供许多
格式图表:PNG,JPEG,SVG和PDF。.HighchartsHighcharts是一个JavaScriptAPI与jQue
ry的集成,全球最大的100家公司中有61家正在使用它。图表使用SVG格式,并使用VML支持旧版浏览器。它提供了两个专门的图表类型
:Highstock和Highmaps,并且还配备了一系列的插件。你可以免费使用它,而如果你想建立付费的应用,只须支付少量牌照费用
。此外,你还可以使用Highcharts云服务。iViewiView是TalkingData可视化团队开源的一套基于Vue.j
s的UI组件库,主要服务于PC界面的中后台产品。它具有以下特性:高质量、功能丰富、友好的API,自由灵活地使用空间,
面向任何技术水平的开发者、细致、漂亮的UI、事无巨细的文档、可自定义主题官网:https://www.iviewui.comGi
tHub:https://github.com/iView/iViewJavascriptInfoVISToolJavaScr
iptInfoVisToolkit是一个在Web上创建可交互式的数据图表的JavaScript库。该库有许多独特时髦的动画效
果,并且可以免费使用。jsDraw2DXjsDraw2DX是一个标准的JavaScript库,用来创建任意类型的SVG交互式图形,
可生成包括线、举行、多边形、椭圆、弧线等等图形。MetricsGraphicsMetricsGraphics是一个在D3.js
的基础上专为可视化时间序列数据而开发的绘图库。虽然它只支持线图、散点图、柱状图、直方图和数据表格,但它在这几类图表上的表现非常强
。n3-chartsN3-charts是一种基于AngularJS框架的工具。它建立在D3.js之上,帮助您创建简单的互动图表。N
3-charts是一种小型化的图表工具,不适用于大型项目。NVD3NVD3运行在d3.js之上,它可建立可重用的图表组件。该项目
的目标是保持所有的图表整洁和可定制性。NVD3是d3.js之上的简单的接口,保持了d3.js的所有强大功能。NVD3由Novus
Partners前端工程师开发和使其保持了图表技术洞察力。Paper.jsPaper.js是一个开源的向量图形脚本框架,基于HT
ML5Canvas开发。提供清晰的场景图、DOM和大量强大的功能用来创建各种向量图和贝塞尔曲线。Processing.jsPro
cessing.js是一个基于可视化编程语言的JavaScript库。作为一种面向Web的JavaScript库,Processi
ng.js是您能够有效进行网页格式图表处理。这使得它成为了一种非常好交换式可视化工具。Processing.js需要一个兼容HTM
L5的浏览器来实现这一功能。ProtvisProtovis是一个使用JavaScriptCanvas元素实现的可视化组件。开发者
可以利用简单的标记如线条和圆点+数据来绘制自定义图表。RickshawRickshaw是一个用于绘制时序图的简单jS库,基于
MikeBostock’sdelightfulD3库构建。SigmaJSSigmaJS是交互式可视化工具库。由于使
用了WebGL技术,你可以使用鼠标和触摸的方式来更新和变换图表。SigmaJS同时支持JSON和GEXF两种数据格式。这为它提供
了大量的可用互动式插件。SigmaJS专注于网页格式的网络图可视化。因此它在大数据网络可视化中非常有用。SpringySpri
ngy.js设计轻量并且简单。它提供了一个抽象的图形处理和计算的布局,支持Canvas、SVG、WebGL、HTML元素。Time
Line.jsTimeline.js会让你爱上制作漂亮的时间轴,因为它的操作非常简单直观。这是一款支持40种语言的开源工具,通过它
你可以建立自己的可视化互动时间轴,还可从各种途径置入到媒体中,目前已支持Twitter、Flickr、GoogleMaps、Yo
uTube、Vimeo、Vine、Dailymotion、Wikipedia、SoundCloud等等。系列1AxiisAxiis
是一个开源的数据可视化框架。Axiis让开发人员通过简洁直观的标记,清晰明白地定义数据可视化方式。Axiis在设计上非常强调代码优
雅,可以让你的代码像输出的图形一样美观。Axiis既提供了开箱即用的可视化组件,也提供了抽象布局模式和渲染类,可实现自定义可视化。
BirdEyeBirdEye是一个开源的AdobeFlex图表制作组件。用于创建多维数据分析可视化界面。DipityDipity
是一款基于Timeline的Web应用软件,用户可以将自己在网络上的各种社会性行为(Flickr、Twitter、Youtube、
Blog/RSS等)聚合并全部导入到自己的Dipity时间轴上。GanttiGantti是一个开源的PHP类,帮助用户即时生成
Gantt图表。使用Gantti创建图表无需使用JavaScript,纯HTML5-CSS3实现。图表默认输出非常漂亮,但用户可以
自定义样式进行输出(SASS样式表)。Highcharts6为Web和移动开发人员提供了扩展的图表集合、客户端分析、注释和大
量性能提升。Highcharts6包含15种新的图表系列类型,包括Sankeydiagram(桑基图)、Stream
graph、Sunburst(旭日图)、VariwideCharts、Parallelcoordinates、Variable
radiuspie、Vectorplot、Wind-barbs、X-range等。另外还有像是Venndiagram
(维恩图)和Marimekkocharts(细分市场份额矩阵图).Highcharts6还简化了代码库,遵循现代风格,重
新设计了Annotations注解模块,通过注解,开发人员可以通过在画布上的任何位置绘制简单的形状和文本来描述图表或数据点,或
绑定到指定的数据点。此外,Boost模块已从使用Canvas转换为WebGL,从而在可用时利用GPU加速。具体细节请
查阅发行说明:https://www.highcharts.com/blog/news/announcing-highcharts
-6/下载地址:https://www.highcharts.com/downloadHumbleFinanceHumbleFin
ance是HTML5数据可视化编译工具。作为交互式图形的范本,与Flash工具类似,工具本身是用JavaScript编译的,使用P
rototype和Flotr库,它可以用于显示实际数值共享一个轴的任意两个2D数据集。InstantAtlasInstantAtl
as让信息分析师和研究者得以创建交互式动态分配图报告,并结合统计数据和地图数据来优化数据可视化效果。KartographKarto
graph是一个用于创建无人操控、交互式地图(如:谷歌地图)的框架。它由两个库组成:一个是Python库,从形式函数或PostG
IS中提出矢量地图,并把它们转换成SVG格式;另一个是JavaScript库,将这些SVG格式转换成交互式地图。Leaflet你是
否专注于专业的大数据解决方案?无需饼图和条形图?Leafleft基于OpenStreetMap数据,使用HTML5/CS
S3绘制互动式可视化图。您可以使用他们的扩展插件库添加热点图(heatmaps)和动画标记。Leaflet是开源和只有33KB
大小。ModestMapsModestMaps是一个轻量级、可扩展的、可定制的和免费的地图显示类库,这个类库能帮助开发人员在他
们自己的项目里能够与地图进行交互。ModestMaps提供一个核心健壮的带有很多hooks与附加functionality函数的要
素开发包。.PizzaPieChartPizzaPieCharts是个响应式饼图图表,基于AdobeSnapSVG框架
,通过HTML标记和CSS来替代JavaScript对象,更容易集成各种先进的技术。Polymaps如果你在找一款可同时使用位图
和SVG矢量地图的JavaScript库,那么Polymaps正是你需要的。供的多级缩放数据集方面表现非常迅速,并且可支持矢量数据
的多种视觉表现形式。更棒的是,Polymaps可以在很大的尺度范围上加载数据。它使用的是球形墨卡托投影的tile格式,因此快到弹指
间便可发布信息。网址:http://polymaps.orgRAWRAW弥补了很多工具在电子表格和矢量图形(SVG)之间的缺失环节
。你的大数据可以来自MicrosoftExcel中,谷歌文档或是一个简单的逗号分隔的列表。它最厉害的功能是可以很容易地导出可视化结
果,因为它和AdobeIllustrator,Sketch和Inkscape是相容的。SmoothieChartsSmoot
hieCharts是一个十分小的动态流数据图表库。通过推送一个WebSocket来显示实时数据流。SmoothieCharts
只支持Chrome和Safari浏览器,并且不支持刻印文字或饼图。它很擅长显示流媒体数据。TableauTableau是一款企业
级的大数据可视化工具。Tableau可以让你轻松创建图形,表格和地图。它不仅提供了PC桌面版,还提供了服务器解决方案,可以让您在
线生成可视化报告。服务器解决方案可以提供了云托管服务。Tableau的客户包括巴克莱银行,Pandora和Citrix等企业。.T
ableauPublic这是一款操作简便的app,它可以轻松帮你创建令人眼前一亮的可视化作品。只需打开数据,用Tableau桌面
版来进一步探索。然后,把可视化内容存储在你1GBTableauPublic在线文件空间,最后,将他们放进网站或Blog,通过社
交媒体把你的作品分享给全世界。TimeflowTimeflow是一个用于时态数据的可视化工具。它提供了四种不同的显示视图:时间轴试
图、日历试图、条形图、表试图。Visual.lyVisual.ly是一个综合图库和信息图表生成器。它的工具很简单,却可创造出亮眼的
数据展示作品。另外,你还可以在它的平台上分享你的图像。他能在内容上比一般的视觉分析工具表达更深入。Visual.ly是一个可视化的
内容服务。它提供专门的大数据可视化的服务,用户包括了VISA,耐克,Twitter,福特和国家地理等。如果你想完全外包可视化文件给
第三方。你可以使用非常简化的在线流程:你只需描述你的项目,服务团队将在项目的整个持续时间内和你在一起。Visual.ly给您发送所
有项目关键点的邮件通知,也将让你不断给出反馈。VisulizeFreeVisulizeFree是一款免费的可视化分析工具,基于
先进的商业指示板和可视化软件开发。WolframAlphaWolframAlpha把自己称作计算型知识引擎、谷歌在分析领域的劲敌。
它最棒的一点是在显示图表时可以不需要任何配置就响应数据请求。如果你用的是公开的数据,那么你只需一个简单的小部件生成器就能在你的网页
上轻松加入可视化数据。积木报表jimureport积木报表是JeecgBoot旗下的一款免费制作报表和大屏的软件,主打开源。跟
阿里和百度一样,手机号一键注册,便可永久使用,重要的是:免费!免费!免费!积木报表采用类word风格,可以随意拖动组件,想怎么设计
怎么设计,可以像百度和阿里一样,设计出炫酷的可视化大屏!地址:http://www.jimureport.com/http://w
ww.jimureport.com/帆软FineReport帆软是业内做报表比较久的一家公司,使用类excel风格的界面,可添加图
表和数据源,也可实现大屏效果。Finereport是一款企业级的web报表软件,解决的是企业数据查询、展示、录入的问题,并且可以以
拖拽的方式形成可视化大屏,简单又便捷。传统的报表,常常以表格的形式展现,它能突出数据本身,但并不利于阅读者直观的看出数据之间的关系
等,而FineReport除了能实现复杂的表格样式外,还具备极其丰富的图表,能够满足多样的数据可视化场景诉求。缺点:(1)只能拖动
块的固定排版,对于大屏的随意排版、随意拖动很不方便;(2)需下载软件,本地制作,软件占用空间较大,打卡比较慢;需要安装许多插件才可
以实现一些动态效果;国云大数据魔镜一款免费的新型大数据可视化分析工具,操作简单,支持多种数据源,上卷下钻,数据预测,聚类分析,相关
性分析,数据联想,决策树,地图,组合图等功能。系列2AnychartAnychart是一个灵活的基于Flash/JavaScrip
t(HTML5)的图表解决方案、跨浏览器、跨平台。除了图表功能外,它还有一款收费的交互式图表和仪表。AntVAntV是AntFi
nancial(Ali)的一组数据可视化语法,它似乎是中国第一个使用名为TheGrammarOfGraphics的理论的可视
化库。Antv附带了一系列https://antv.alipay.com/zh-cn/index.htmlhttps://antv
.alipay.com/zh-cn/index.htmlBimeBime是一个高端的数据和仪表盘云平台,其跨设备设计相当时尚。Be
tterWorldFlux使用BetterWorldFlux可以通过观察社交,经济,政治指标来跟踪国家的发展,并发现重要
的趋势和模式。CartoDBCartoDB是一个不可错过的网站,你可以用CartoDB很轻易就把表格数据和地图关联起来,这方面Ca
rtoDB是最优秀的选择。ChartingFontsChartingFonts是将符号字体与字体整合(把符号变成字体),创建出
漂亮的矢量化图标。CrossfilterCrossfilter既是图表,又是互动图形用户界面的小程序,当你调整一个图表中的输入范围
时,其他关联图表的数据也会随之改变CircosCircos最初主要用于基因组序列相关数据的可视化,目前已应用于多个领域,例如:影视
作品中的人物关系分析,物流公司的订单来源和流向分析等,大多数关系型数据都可以尝试用Circos来可视化。CreatelyCreat
ely可以制作有50多种图,包含几千个例子和形状库,支持实时协作。ColorBrewerColorBrewer由Penn
State开发,是一款用于选择地图颜色的工具,用户可以用它来保证特殊区域的独立性。ChartkickChartkick是一个图表绘
制工具,特点是UI美观、使用简单,并且支持IE6在内的大多数浏览器。它还可以与开源框架Django、Flask/Jinja2结合使
用。可以让你用最少的代码创建专业的JavaScript图表,甚至只需要一行Ruby代码即可绘制出漂亮的图表!ChooselChoo
sel是可扩展的模块化Google网络工具框架,可以用来创建基于网络的整合了数据工作台和信息图表的可视化平台。CytoscapeC
ytoscape能够合成不同属性的数据形成可视化的复杂网络。针对特别领域分析的功能,例如生物信息学、语义网和社交网络分析,Cyto
scape具有这些功能,并能创建邻人着迷的图表来表示数据之间的关系。dc.jsdc.js是一个开源的JavaScript绘图
库。非常适合用来创建交互式的仪表盘(Dashboard)。图表之间是有联系的,所以当你与其中一个部分进行交互时,其他部分都会做出实
时的反馈。DapresyDapresy专为研究分析师设计,允许用户运用简易使用的拖拉界面建立为他们的幻灯片和仪表盘建立信息图表。D
apresy是一个综合性平台能够处理整个报道过程,从数据分析到视觉上具有吸引力的展示工具和仪表板。Databoard来自谷歌的工具
,Databoard是Think平台的一部分,主要面向企业主。探索见解直接来自谷歌调查研究,来迅速的查找数据并且创建自定义的信息图
表来嵌入网站或在社交网络上分享。ExcelExcel作为一个入门级工具,是快速分析数据的理想工具,也能创建供内部使用的数据图,但是
Excel在颜色、线条和样式上课选择的范围有限,这也意味着用Excel很难制作出能符合专业出版物和网站需要的数据图。Easel.l
yEasel.ly是一款非常简单好用的信息图形生成器,拥有好几百个模版,当然,如果你喜欢,也可以不用模版哦~ExhibitExhi
bit可以轻松地创建网页与先进的文本搜索和过滤功能,互动地图,时间表以及其他可视化图表。FlotFlot是一个优秀的线框图表库,支
持所有支持canvas的浏览器(目前主流的浏览器如火狐、IE、Chrome等都支持)。FFChartwellFFChartwe
ll将简单数字串转换会可编辑的数据可视化,并进一步的自定义使用OpenTy功能。它是能够用于标准设计套件,例如AdobeCrea
tiveSuite,简单化图表的设计。FusionTables谷歌FusionTables是一款数据管理应用,通过Fusio
nTable,用户可以快速生成相惜的图表,图形或者地图。用户还可以将图表与其他人协作并支持使用共有数据或私有数据。英国的《卫报》
(Guardian)也使用这个工具哦~GephiGephi是进行社会图谱数据可视化分析的工具,不但能处理大规模数据集并且Gephi
是一个可视化的网络探索平台,用于构建动态的、分层的数据图表。GoogleChartAPIGoogleChart提供了一种非常
完美的方式来可视化数据,提供了大量现成的图标类型,从简单的线图表到复杂的分层树地图等。它还内置了动画和用户交互控制。文档和帮助信息
丰富的GoogleCharts对于刚刚入门JavaScript绘图的人来说是极佳的选择。它的文档里到处都是带注释的代码。
GeoCommonsGeoCommons可以使用户构建富交互可视化应用来解决问题,即使他们没有任何传统地图使用经验。你可以将实社会
化数据或者GeoCommons保存的超5万份开源数据在地图上可视化,创造带交互的可视化分析作品,并将作品嵌入网站、博客或分享到社交
网络上。G22.0G2(TheGrammarOfGraphics)是一个由纯JavaScript编写、强大的语义化
图表生成工具,它提供了一整套图形语法,可以让用户通过简单的语法搭建出无数种图表,并且集成了大量的统计工具,支持多种坐标系绘制,可以
让用户自由地定制图表,是为大数据时代而准备的强大的可视化工具。JolichartsJolicharts将图表和表格嵌入你的应用程序
里,能够兼容多种数据源并处理连接多种数据源的复杂性。利用集成的弹性计算能力,Jolicharts能轻易处理大数据。Keylines
Keylines是一个Java工具包,能够用一个快速、简单的方法创建自定义网络可视化。Keylines解放了用户的手,提供更多的自
由,它不是一个预先构建的应用程序,使得开发者可以用几行代码改变节点、链接、菜单和添加整函数,还包括地理空间整合、时间条、各种布局模
式和过滤选项。LinkuriousLinkurious是一个直观的图形可视化解决方案,它提供了一个简单的即装即用的安装方法,无需配
置。这让那些不是特别精通技术的人上手数据分析及复杂数据的洞察。Linkurious包括一个强大的搜索引擎,帮助用户发现边缘和节点
的文本。此外,它包括高级的分析功能,允许结合过滤器来解决复杂的问题。Linkurious也有使用Cypher(专为图形分析而设计的
一种查询语言)来识别复杂模式的能力。ManyEyesManyEyes是一个Web应用程序,用来创建、分享和讨论用户上传图形数据
。NodeBoxNodeBox是OSX上创建二维图形和可视化的应用程序,你需要了解Python程序,NodeBox与Proces
sing类似,但没有Processing的互动功能。NodeXLNodeXL主要功能是社交网络可视化。NetworkXNetwor
kX基于Python编程语言,能够创建图表、有向图和多种多媒体格式合成的重图。NuviNuvi是个高端的社交媒体可视化平台,用户可
以创建实时可视化,监控主题或关键字并构建定制报告。OpenlayersOpenlayers可能是所有地图库中可靠性最高的一个。虽然
文档注释并不完善。且学习曲线非常陡峭,但是对于特定的任务来说,Openlayers能够提供一些其他地图库都没有的特殊工具。Open
StreetMapOpenStreetMap是一个世界地图,由像您一样的人们所构筑,可依据开放协议自由使用。OpenHeatMap
OpenHeatMap简单易用,用户可以用它上传数据、创建地图、交流信息。它可以把数据(如GoogleSpreadsheet的表
单)转化为交互式的地图应用,并在网上分享。QuantumGIS(QDIS)QuantumGIS(QDIS)是一个用户界面友好、
开源代码的GIS客户端程序,支持数据的可视化、管理、编辑与分析和印刷地图的制作。QResearchSoftware对于研究和数
据可视化而言都是一个强大的数据库,QResearch软件时一个用于准备市场研究报告的工具,全是有价值的见解和可视化效果。以图表格
式、CSV文件和PDF文档输出到Word、Excel和PowerPoint,并且从一大堆工具/元素中选择进行自制可视化效果。RR语
言是主要用于统计分析、绘图的语言和操作环境。虽然R主要用于统计分析或者开发统计相关的软件,但也有用作矩阵计算。其分析速度可比美GN
UOctave甚至商业软件MATLAB。RaphaelRaphael是创建图表和图形的JavaScript库,与其他库最大的不同是
输出格式仅限SVG和VML.SmoothieChartsSmoothieCharts是一个十分小的动态流数据图表路。通过推送一
个webSocket来显示实时数据流。SmoothieCharts只支持Chorme和Safari浏览器,并且不支持刻印文字或饼
图,它很擅长显示流媒体数据。SisenseSisense支持组合多个数据源,可以让用户从丰富的数据可视化数据中发现病分享见解。S
ASVisualAnalyticsSAS可视化分析工具拥有直观的平台和自动化预测工具,SAS视觉分析允许甚至可以让无技术基础的
用户来探索数据和潜在机会之间更加深层次的关系。TagxedoTagxedo是一款简单的词云生成器。对于任意文本,都可以将单词提取
出来,并根据其出现的频率调整单词的大小。TomSawyerPerspectivesTomSawyerPerspective
s是一个基于图形的工具,用于生成数据关系可视化和分析应用。该软件支持两个图形模块:设计和预览。“设计”可以帮助用户定义架构,数据源
,规则和搜索。“预览”可用于反复地查看应用程序设计,而不需要重新编译。使用这两种工具可以大大提高应用开发的速度。TomSawye
rPerspectives的其他功能包括:结构化、半结构化和非结构化数据的数据集成、多视图的支持和高级的图形分析功能。VegaV
ega是一个基于d3.js的用于创建、分享和保存可视化图标的库。它由许多部件组成,其中一些能够在不需要写代码的前提下达到与
d3竞争的水平。Vega能够把JSON数据转换成SVG或HTML5图表。虽然这没什么了不起的,但它把这一步做的很踏
实。因为使用Vega不需要写任何代码(只要会编辑JSON文件即可),它是一个很好的d3替代品,能在降低使用复杂度的同时
保留d3的特性。VisualizeFreeVisualizeFree是一个建立在高阶商业后台集游InetScoft开发的视
觉化软体免费的视觉分析工具,可从多元变量资料筛选并看其趋势,或是利用简单地点及方法来切割资料或是小范围的资料。WekaWeka是一
个能根据属性分类和集群大量数据的优秀工具,Weka不但是数据分析的强大工具,还能生成一些简单的图表。ZohoReportsZoh
oReports支持丰富的功能帮助不同的用户解决各种个性化需求,支持SQL查询、类四暗自表格界面等。IT大厂工具百度Sugarh
ttps://cloud.baidu.com/product/sugar.htmlSugar是百度云推出的数据可视化服务平台,目
标是解决报表和大屏的数据可视化问题,解放数据可视化系统的开发人力。Sugar提供了组件编辑平台,进入平台后设计师可以直接进行组件
的拖拽编辑,打造自己所需要的大屏界面。在设计师完成后就可以直接交接给开发,进行各类数据源的接入。这种形式无疑节约了很多的开发时间,
设计师也不用再担心前端开发的效果与自己的差之千里。对于时间紧迫或者自身技术能力不足的项目很适合。2.阿里云DataV:Data
V在效果的酷炫程度上会更符合领导的要求。只是DataV目前分为基础版、企业版和专业版收费服务。个人申请有30天的基础版试
用期。具体选择需要看公司自身内部需求而定。https://www.aliyun.com/product/bigdata/datav
https://www.aliyun.com/product/bigdata/datav微软PowerBI腾讯RayDataht
tps://cloud.tencent.com/product/raydataEcharts-百度开源可视化库网站链接:http
s://echarts.baidu.com/这是一个使用JavaScript实现的开源可视化库,可以流畅地运行在PC和移动
设备上,兼容当前绝大部分浏览器。4.0版本还提供了对微信小程序的适配。DataV中的一些组件也是依赖Echarts生成的。
Echarts提供的图表很多样化,几乎包含常用的、不常用的各类图表样式。且提供有可交互组件,可以对数据进行多维度数据筛取、视图缩
放、展示细节等交互操作。Mapv–百度地理信息可视化开源库https://mapv.baidu.com/用以展示大量地理信息点
、线、面的数据。创建需先上传地理信息数据,再设置地图样式后,即可下载保存。目前仅开放Beta版本。蚂蚁AntV网站链接:htt
ps://antv.alipay.com/zh-cn/index.html蚂蚁金服的AntDesign,作为设计师应该都是较为
熟悉的。AntV是蚂蚁Ant系列下的一个数据可视化解决方案。分为G2、G6、F2、L7不同产品,分别对应不同的特性需求。
Kitchen–蚂蚁金服官方插件http://kitchen.alipay.com/Iconfont图标库,可以直接在sk
etch中搜索拖拽。其次数据填充也比较常用,自动填充时间、地址、城市等挺方便的。sketch也有自带的功能,但毕竟自带的填充都
是英文,想要中文的需要自己编写填充文档,相对还是比较麻烦。与可视化设计相关的就是里面的图表生成器了。不过Kitchen当前只有
一些常规的图表,不过胜在简洁明了,很适合在此基础上进行二次设计。该插件还是蚂蚁Ant系列的官方插件,可以自动配置符合Ant
Design规范的组件,配合公司采用的Ant系列的框架,会方便不少。FusionCool–阿里FusionDesign
开源中后台UI解决方案辅助工具网站链接:https://fusion.design/tool这也是一个sketch的插件工具。
分为图标、图表、组件、模块和模板五大功能区。FusionDesign作为一个开源中后台解决方案,和AntDesign有一
定类似,但也有所差别。AntDesign是一套组件库,FusionDesign更像是一个组件库生成工厂。MapGener
ator–快速地图生成填充https://github.com/eddiesigner/sketch-map-generato
r这是一款基于谷歌地图的自动填充的Sketch插件,输入地址后就可以自动生成不同风格样式的地图,个人比较喜欢第三款灰色的。Am
charts–矢量地图定制下载http://pixelmap.amcharts.com/#这个网站上面提过,但其实设计师用来获
取矢量地图也很好用,选择地图样式和地区之后,右下方即可以下载SVG、HTML、Image格式的图,十分方便。点击「Genera
tePpxelMap」还可以转化为像素圆点形式的地图。如果需要省份的地图,网站上无法直接下载,但可以先下载中国svg地图,
然后再打开svg选择自己需要的省份模块即可。另外,在使用地图的时候,要注意正确用图,规范用图。要有国家版图意识,符合测绘法。标
准地图可以参考国家自然资源局提供的标准地图服务,服务网址:http://bzdt.ch.mnr.gov.cn/index.html
Chart–图表插件网站链接:https://github.com/pavelkuligin/chart这个插件是收费的,每年
10美元。优势在于可以在Sketch中创建包含随机、表格或者JSON数据的图表。图表样式也是非常丰富了PythonPlot
lyPlotly帮助你在短短几分钟内,从简单的电子表格中开始创建漂亮的图表。Plotly已经为谷歌、美国空军和纽约大学等机构所使用
。Plotly是一个非常人性化的网络工具,让你在几分钟内启动。如果你的团队希望为JavaScript和Python等编程语言提供一
个API接口的话,Plotly是一款非常人性化的工具。交互编辑CanvaCanva让每个人都能简单做设计,它提供你所需要的一切来帮
助你把想法转变成杰出的设计。你可以从一个定制版面或一个空白页面开始。你所需的工具都在一个地方,简明的界面才不会限制你发挥创造力。只
需通过搜索并拖拽,就能创造出漂亮的设计,那些无聊的编程就让Canva来处理吧。Canva可以在线免费使用。网址:https://w
ww.canva.comDatawrapperDatawrapper是一款专注于新闻和出版的可视化工具。华盛顿邮报,卫报,华尔街日
报和Twitter等媒体都使用了这一工具。Datawrapper非常容易使用,不需要任何编程基础。你只需要上传你的数据,便能轻松地
创建和发布图表,甚至是地图。Datawrapper提供了众多的自定义布局及地图模板。GliffyGliffy可以帮助你制作专业级流
程图、组织图、UML分析图(UnifiedModelingLanguage,统一建模语言,译注)、线框图、技术制图等等,而且它
兼容所有的浏览器。Gliffy使用HTML5编辑器,速度是Flash的两倍。它提供一个可读的URL地址展示你的分析图,也可以将成果
分享到社交媒体上。你只需从海量库里把你想要的图形拖拖拽拽,然后单击选择需要的格式,通过简单的重选就能定制你的图表。HighChar
ts通过HighCharts你可以为网站项目制作交互式图表。它的用户非常广泛(全世界最大的100家公司里面有61家以及成千上万的开
发人员都在使用)。如果是为个人网站或非盈利组织使用这个软件,它将是免费的。HighCharts是建立在HTML5上的,在现代的浏览
器包括移动、平板设备上运行,也支持过时的IE浏览器(IE6之后的都可以)。它同时也是动态的,你可以自由添加、移除、修改数据列(Se
ries)和关键点(Points)。这款app支持多种类型的图表:折现图、样条曲线、面积图、曲线面积图、柱状图、条状图、饼状图和散
点图等等。网址:https://www.highcharts.com.cnGoogleChartsGoogleCharts
以HTML5和SVG为基础,充分考虑了跨浏览器的兼容性,并通过VML支持旧版本的IE浏览器。所有您将创建的图表是交互式的,有的还可
缩放。GoogleCharts是非常人性化和他们的网站拥有一个非常好的,全面的模板库,你可以从中找到所需模板。iChartsiC
harts提供了一个用于创建并呈现引人注目图表的托管解决方案。有许多不同种类的图表可供选择,每种类型都完全可定制,以适合网站的主
题。iCharts有交互元素,可以从GoogleDoc、Excel表单和其他来源中获取数据。iCharts的免费版只允许你用
基本的图表类型,如私人图表、自定义模板、上传图片和图标、下载高清图片、无线实时数据库连接、调查数据集、大型数据集、图表报告、数据收
集、品牌图表渠道等。]Infogr.am在Infogr.am网站中,你可以使用30多种图形和6种主题创建互动和可嵌入的图表。]in
MapinMap是TalkingData可视化团队开源的一款基于Canvas的大数据可视化库,专注于大数据方向的散点、热力图、
网格、聚合等方式展示,致力于让大数据可视化变得简单易用。它具有以下特性:高性能、多线程、多图层叠加、友好的AP、可以自定义主题;
inMap采用更加智能的地理可视化框架,主要面向从事数据可视化应用相关的工程师和设计师。底层绘图引擎:目前基于canvas2d
提供基础绘图能力,基于WebGL的版本正在规划中;算法:内置了经纬度墨卡托转换、文字避让算法、最佳标记点算法、自动分组标记配色
算法等。官网:http://inmap.talkingdata.comGitHub:https://github.com/Talk
ingData/inmaphttps://github.com/TalkingData/inmapPiktoChartPiktoC
hart提供了单击编辑器,有着超过400种模板、图标、图表,一个极大的图片素材库和无限制的自定义服务,保证了你的信息图表是独一无二
的。ZingChartZingChart是一个强大的库,为用户提供了快速创造漂亮的图表、操作面板和信息图表的可能性。你可以在上百种
图表类型中自由选择,你的设计和个性化要求不会受到任何限制。你也可以使你的用户通过交互式图表特性参与到你的作品之中。可视化学算法的工
具旧金山大学数据结构和算法的可视化学习工具http://hao.jobbole.com/visualizing-algorithm
s-and-data-structure/VisuAlgo:通过动画学习算法和数据结构http://hao.jobbole.com
/visualgo/Algomation:查看、创建和分享算法的学习平台http://hao.jobbole.com/algoma
tion/http://hao.jobbole.com/algomation/GitHub一万多Star,一个可视化学算法的好
工具回溯法、加密算法、动态规划、图搜索、贪婪算法、搜索算法、排序算法等http://algorithm-visualizer.or
ghttps://github.com/algorithm-visualizer/algorithm-visualizerht
tps://github.com/algorithm-visualizer/algorithm-visualizerAI算法可视化
VisualDL开源免费的,所有底层代码可任意查看、更改、二次开发!同时适配各种主流深度学习框架(PaddlePaddle、Ten
sorFLow、Pytorch、ONNX等等)GitHub项目地址:https://github.com/PaddlePaddle
/VisualDLhttps://github.com/PaddlePaddle/VisualDLGitee项目地址:https:
//gitee.com/PaddlePaddle/VisualDLhttps://gitee.com/PaddlePaddle/V
isualDLVisualDL官网:https://www.paddlepaddle.org.cn/paddle/visualdl
https://www.paddlepaddle.org.cn/paddle/visualdlPaddle官网:https://w
ww.paddlepaddle.org.cn/https://www.paddlepaddle.org.cn/VisualDL功能
全览标量(Scalar):训练参数实时可视化实时展示关键指标变化趋势用户可根据需求快速绘制loss、acc、learningra
te等重要训练指标,并将波动不均的中间数据进行平滑处理,突出变化趋势,通过指标变化情况,判断模型训练是否正常,并针对性地调整参数。
同时,结合可灵活展示的指标极值,深入理解模型情况。多组实验指标对比将多组实验指标绘制于同一张表格,实时对比变化趋势,从而观察每一处
细节的不同。同时,所有图表及其数据可供下载,便于随时查看分析。样本分析(Sample):数据全程可视化图像(Image):可视化模
型开发任意阶段的图像数据训练前查看数据样本、数据预处理/数据增强效果:训练中查看模型特征提取情况:音频/文本:可视化模型开发任意阶
段的音频/文本数据网络结构可视化(Graph)支持Paddle、ONNX、Pytorch等主流模型格式,一键拖拽可视化模型结构展示
节点信息及数据流向深入理解网络结构和工作机制超参可视化(HyperParameters):展示每组超参及模型指标,快速选择最佳超
参以丰富的视图直观呈现不同组超参对模型效果的影响PR/ROC曲线:展示不同阈值下的模型关键指标,秒选最佳阈值直方图(Histog
ram):监测每层网络参数异常情况数据降维(HighDimensional):可视化高维向量间的关系特征探索性分析可视化yell
owbrickhttps://www.scikit-yb.org/en/latest/index.html雷达RadVizRad
Viz雷达图是一种多变量数据可视化算法,它围绕圆周均匀地分布每个特征,并且标准化了每个特征值。一般数据科学家使用此方法来检测类之间
的关联。例如,是否有机会从特征集中学习一些东西或是否有太多的噪音?#加载数据data=load_data(''occupancy'')
#?特征和目标变量features=[''temperature'',''relativehumidity'',?''light'',?''
C02'',?''humidity'']classes=[''unoccupied'',?''occupied'']#?赋值x和yX?=?d
ata[features]y?=?data.occupancy#?导入visualizerfrom?yellowbrick.fe
atures?import?RadViz#?调用visualizervisualizer?=?RadViz(classes=cla
sses,?features=features)visualizer.fit(X,?y)visualizer.transform(
X)visualizer.poof()从上面雷达图可以看出5个维度中,温度对于目标类的影响是比较大的。一维排序Rank1D特征
的一维排序利用排名算法,仅考虑单个特征,默认情况下使用Shapiro-Wilk算法来评估各特征样本分布的正态性,通过绘制一个条形图
,展示每个特征的检验值。from?yellowbrick.features?import?Rank1D#?使用Sharpiro?
ranking算法调用Rank1Dvisualizer?=?Rank1D(features=features,?algorithm
=''shapiro'')visualizer.fit(X,?y)visualizer.transform(Xvisualizer.
poof()PCAProjectionPCA分解可视化利用主成分分析将高维数据分解为二维或三维,以便可以在散点图中绘制每个实例。
PCA的使用意味着可以沿主要变化轴分析投影数据集,并且可以解释该数据集以确定是否可以利用球面距离度量。双重图BiplotPCA投
影可以增强到双点,其点是投影实例,其矢量表示高维空间中数据的结构。通过使用proj_features=True标志,数据集中每
个要素的向量将在散点图上以该要素的最大方差方向绘制。这些结构可用于分析特征对分解的重要性或查找相关方差的特征以供进一步分析。#?导
入数据data?=?load_data(''concrete'')#?选择特征和目标变量target?=?''strength''feat
ures?=?[?''cement'',?''slag'',?''ash'',?''water'',?''splast'',?''coarse'',?''f
ine'',?''age'']#?设置x和yX?=?data[features]y?=?data[target]visualizer?=
?PCADecomposition(scale=True,?proj_features=True)visualizer.fit_t
ransform(X,?y)visualizer.poof()特征重要性FeatureImportance特征工程过程涉及选择
生成有效模型所需的最小特征,因为模型包含的特征越多,它就越复杂(数据越稀疏),因此模型对方差的误差越敏感。消除特征的常用方法是描述
它们对模型的相对重要性,然后消除弱特征或特征组合并重新评估以确定模型在交叉验证期间是否更好。在scikit-learn中,Deci
sionTree模型和树的集合(如RandomForest,GradientBoosting和AdaBoost)在拟合时提供
feature_importances_属性。YellowbrickFeatureImportances可视化工具利用此属性对相
对重要性进行排名和绘制。import?matplotlib.pyplot?as?pltfrom?sklearn.ensemble?
import?GradientBoostingClassifierfrom?yellowbrick.features.import
ances?import?FeatureImportances#?绘图fig?=?plt.figure()ax?=?fig.add
_subplot()viz?=?FeatureImportances(GradientBoostingClassifier(),?
ax=ax)viz.fit(X,?y)viz.poof()递归特征消除RecursiveFeatureElimination
递归特征消除(RFE)是一种特征选择方法,它训练模型并删除最弱的特征(或多个特征),直到达到指定数量的特征。特征按模型的coef_
或feature_importances_属性排序,并通过递归消除每个循环的少量特征,RFE尝试消除模型中可能存在的依赖性和共线性
。??RFE需要保留指定数量的特征,但事先通常不知道有多少特征有效。为了找到最佳数量的特征,交叉验证与RFE一起用于对不同的特征子
集进行评分,并选择最佳评分特征集合。RFECV可视化绘制模型中的特征数量以及它们的交叉验证测试分数和可变性,并可视化所选数量的特征
。from?sklearn.svm?import?SVCfrom?sklearn.datasets?import?make_cla
ssificationfrom?yellowbrick.features?import?RFECV#?造数据集X,?y?=?mak
e_classification(?n_samples=1000,?n_features=25,?n_informative=3,
?n_redundant=2,?n_repeated=0,?n_classes=8,?n_clusters_per_class=1
,?random_state=0)#?linear?SVM?分类器创建递归特征消除viz?=?RFECV(SVC(kernel=''
linear'',?C=1))viz.fit(X,?y)viz.poof()该图显示了理想的RFECV曲线,当捕获三个信息特征时,曲
线跳跃到极好的准确度,然后随着非信息特征被添加到模型中,精度逐渐降低。阴影区域表示交叉验证的可变性,一个标准偏差高于和低于曲线绘制
的平均精度得分。下面是一个真实数据集,我们可以看到RFECV对信用违约二元分类器的影响。from?sklearn.ensemble
?import?RandomForestClassifierfrom?sklearn.model_selection?import
?StratifiedKFolddf?=?load_data(''credit'')target?=?''default''feature
s?=?[col?for?col?in?data.columns?if?col?!=?target]X?=?data[featur
es]y?=?data[target]cv?=?StratifiedKFold(5)oz?=?RFECV(RandomForest
Classifier(),?cv=cv,?scoring=''f1_weighted'')oz.fit(X,?y)oz.poof()在
这个例子中,我们可以看到选择了19个特征,尽管在大约5个特征之后模型的f1分数似乎没有太大改善。选择要消除的特征在确定每个递归的结
果中起着重要作用;修改步骤参数以在每个步骤中消除多个特征可能有助于尽早消除最差特征,增强其余特征(并且还可用于加速具有大量特征的数
据集的特征消除)。残差图ResidualsPlot在回归模型的上下文中,残差是目标变量(y)的观测值与预测值(?)之间的差异,
例如,预测的错误。残差图显示垂直轴上的残差与水平轴上的因变量之间的差异,允许检测目标中可能容易出错或多或少的误差的区域。from?
sklearn.linear_model?import?Ridgefrom?yellowbrick.regressor?impor
t?ResidualsPlot#?创建岭回归和残差图ridge?=?Ridge()visualizer?=?ResidualsPl
ot(ridge)visualizer.fit(X_train,?y_train)visualizer.score(X_test
,?y_test)visualizer.poof()正则化AlphaSelection正则化旨在惩罚模型复杂性,因此α越高,
模型越复杂,由于方差(过度拟合)而减少误差。另一方面,太高的Alpha会因偏差(欠调)而增加误差。因此,重要的是选择最佳α,以便在
两个方向上最小化误差。??AlphaSelectionVisualizer演示了不同的α值如何影响线性模型正则化过程中的模型选择
。一般而言,α增加了正则化的影响,例如,如果alpha为零,则没有正则化,α越高,正则化参数对最终模型的影响越大。import?n
umpy?as?npfrom?sklearn.linear_model?import?LassoCVfrom?yellowbric
k.regressor?import?AlphaSelection#?创建alpha进行交叉验证alphas?=?np.logsp
ace(-10,?1,?400)#?创建线性模型和可视化model?=?LassoCV(alphas=alphas)visuali
zer?=?AlphaSelection(model)visualizer.fit(X,?y)g?=?visualizer.poo
f()分类预测误差ClassPredictionError分类预测误差图提供了一种快速了解分类器在预测正确类别方面有多好的方法
。from?sklearn.ensemble?import?RandomForestClassifierfrom?yellowbr
ick.classifier?import?ClassPredictionError#?创建分类器和可视化visualizer?=
?ClassPredictionError(?RandomForestClassifier(),?classes=classes)
#?训练visualizervisualizer.fit(X_train,?y_train)#?用测试数据验证模型visualiz
er.score(X_test,?y_test)#?绘图g?=?visualizer.poof()当然也同时有分类评估指标的可视化
,包括混淆矩阵、AUC/ROC、召回率/精准率等等。二分类辨别阈值DiscriminationThreshold关于二元分类器
的辨别阈值的精度,召回,f1分数和queuerate的可视化。辨别阈值是在阴性类别上选择正类别的概率或分数。通常,将其设置为50
%,但可以调整阈值以增加或降低对误报或其他应用因素的敏感度。from?sklearn.linear_model?import?Lo
gisticRegressionfrom?yellowbrick.classifier?import?Discrimination
Threshold#?创建分类器和可视化logistic?=?LogisticRegression()visualizer?=?D
iscriminationThreshold(logistic)visualizer.fit(X,?y)visualizer.po
of()聚类肘部法则?ElbowMethodKElbowVisualizer实现了“肘部”法则,通过使模型具有K的一系列值来帮助
数据科学家选择最佳簇数。如果折线图类似于手臂,那么“肘”(拐点)就是曲线)是一个很好的迹象,表明基础模型最适合那一点。??在下面的
示例中,KElbowVisualizer在具有8个随机点集的样本二维数据集上适合KMeans模型,以获得4到11的K值范围。当模型
适合8个聚类时,我们可以在图中看到“肘部”,在这种情况下,我们知道它是最佳数字。from?sklearn.datasets?imp
ort?make_blobs#?创建8个随机的簇X,?y?=?make_blobs(centers=8,?n_features=1
2,?shuffle=True,?random_state=42)from?sklearn.cluster?import?KMea
nsfrom?yellowbrick.cluster?import?KElbowVisualizer#?创建Kmeans聚类模型和
可视化model?=?KMeans()visualizer?=?KElbowVisualizer(model,?k=(4,12))
visualizer.fit(X)visualizer.poof()集群间距离图?Intercluster?DistanceM
aps集群间距离地图以2维方式显示集群中心的嵌入,并保留与其他中心的距离。例如。中心越靠近可视化,它们就越接近原始特征空间。根据评
分指标调整集群的大小。默认情况下,它们按内部数据的多少,例如属于每个中心的实例数。这给出了集群的相对重要性。但请注意,由于两个聚类
在2D空间中重叠,因此并不意味着它们在原始特征空间中重叠。from?sklearn.datasets?import?make_bl
obs#?创建簇数12的数据集X,?y?=?make_blobs(centers=12,?n_samples=1000,?n_fe
atures=16,?shuffle=True)from?sklearn.cluster?import?KMeansfrom?ye
llowbrick.cluster?import?InterclusterDistance#?创建Kmeans聚类模型和可视化vi
sualizer?=?InterclusterDistance(KMeans(9))visualizer.fit(X)?visua
lizer.poof()?模型选择-学习曲线LearningCurve?学习曲线基于不同数量的训练样本,检验模型训练分数与交叉
验证测试分数的关系。这种可视化通常用来表达两件事:?1.模型会不会随着数据量增多而效果变好2.模型对偏差和方差哪个更加敏感下面
是利用yellowbrick生成的学习曲线可视化图。该学习曲线对于分类、回归和聚类都可以适用。模型选择-验证曲线Validati
on?Curve模型验证用于确定模型对其已经过训练的数据的有效性以及它对新输入的泛化程度。为了测量模型的性能,我们首先将数据集拆分
为训练和测试,将模型拟合到训练数据上并在保留的测试数据上进行评分。?为了最大化分数,必须选择模型的超参数,以便最好地允许模型在指定
的特征空间中操作。大多数模型都有多个超参数,选择这些参数组合的最佳方法是使用网格搜索。然而,绘制单个超参数对训练和测试数据的影响有
时是有用的,以确定模型是否对某些超参数值不适合或过度拟合。import?numpy?as?npfrom?sklearn.tree?
import?DecisionTreeRegressorfrom?yellowbrick.model_selection?impo
rt?ValidationCurve#导入数据集data?=?load_data(''energy'')#?选择特征和目标变量tar
gets?=?[''heating?load'',?''cooling?load'']features?=?[col?for?col?in
?data.columns?if?col?not?in?targets]#?设置x和yX?=?data[features]y?=?
data[targets[0]]viz?=?ValidationCurve(DecisionTreeRegressor(),?pa
ram_name=''max_depth'',param_range=np.arange(1,?11),?cv=10,?scoring
=''r2'')#?训练和可视化viz.fit(X,?y)viz.poof()网站可视化软件OriginLabOrigin学习成本很低
,基本上可以现学现用,无需编程可视化:海量制图模版,点击即可制作发表级2D/3D学术/工程图统计分析:轻松搞定统计、信号处理、曲线
拟合和峰值分析数据导入:支持多种格式的数据,包括ASCII、Excel、NITDM、DIADem、NetCDF、SPC等等插件
:支持多种插件,如LatTex、PCA、Python等等图形输出格式多样:如JPEG,GIF,EPS,TIFF等,也可友好导出到P
PT、Word等缺点:无Mac版本,灵活性比不上Python/R等编程软件数据分析最有用的25个Matplotlib图简介50个
Matplotlib图的汇编,在数据分析和可视化中最有用。此列表允许您使用Python的Matplotlib和Seaborn库选择
要显示的可视化对象。关联散点图带边界的气泡图带线性回归最佳拟合线的散点图抖动图计数图边缘直方图边缘箱形图相关图矩阵图偏差发散型条形
图发散型文本发散型包点图带标记的发散型棒棒糖图面积图排序有序条形图棒棒糖图包点图坡度图哑铃图分布连续变量的直方图类型变量的直方图密
度图直方密度线图JoyPlot分布式包点图包点+箱形图Dot+BoxPlot小提琴图人口金字塔分类图组成华夫饼图饼图树形图
条形图变化时间序列图带波峰波谷标记的时序图自相关和部分自相关图交叉相关图时间序列分解图多个时间序列使用辅助Y轴来绘制不同范围的图形
带有误差带的时间序列堆积面积图未堆积的面积图日历热力图季节图7.分组树状图簇状图安德鲁斯曲线图与编程平行坐标#?!pip?inst
all?brewer2mplimport?numpy?as?npimport?pandas?as?pdimport?matplot
lib?as?mplimport?matplotlib.pyplot?as?pltimport?seaborn?as?snsimp
ort?warnings;?warnings.filterwarnings(action=''once'')large?=?22;?m
ed?=?16;?small?=?12params?=?{''axes.titlesize'':?large,?''legend.fon
tsize'':?med,?''figure.figsize'':?(16,?10),?''axes.labelsize'':?med,?''
axes.titlesize'':?med,?''xtick.labelsize'':?med,?''ytick.labelsize'':?
med,?''figure.titlesize'':?large}plt.rcParams.update(params)plt.sty
le.use(''seaborn-whitegrid'')sns.set_style(''white'')%matplotlib?inli
ne#?Versionprint(mpl.__version__)??#>?3.0.0print(sns.__version__)
??#>?0.9.0散点图Scatteplot是用于研究两个变量之间关系的经典和基本图。如果数据中有多个组,则可能需要以不同颜色可
视化每个组。在Matplotlib,你可以方便地使用。#?Import?dataset?midwest?=?pd.read_csv
(''https://raw.githubusercontent.com/selva86/datasets/master/midwe
st_filter.csv'')#?Prepare?Data?#?Create?as?many?colors?as?there?ar
e?unique?midwest[''category'']categories?=?np.unique(midwest[''categ
ory''])colors?=?[plt.cm.tab10(i/float(len(categories)-1))?for?i?in
?range(len(categories))]#?Draw?Plot?for?Each?Categoryplt.figure(f
igsize=(16,?10),?dpi=?80,?facecolor=''w'',?edgecolor=''k'')for?i,?cat
egory?in?enumerate(categories):?plt.scatter(''area'',?''poptotal'',??
data=midwest.loc[midwest.category==category,?:],??s=20,?c=colors[
i],?label=str(category))#?Decorationsplt.gca().set(xlim=(0.0,?0.1
),?ylim=(0,?90000),?xlabel=''Area'',?ylabel=''Population'')plt.xticks
(fontsize=12);?plt.yticks(fontsize=12)plt.title(''Scatterplot?of?M
idwest?Area?vs?Population'',?fontsize=22)plt.legend(fontsize=12)pl
t.show()2.带边界的气泡图有时,您希望在边界内显示一组点以强调其重要性。在此示例中,您将从应该被环绕的数据帧中获取记录,
并将其传递给下面的代码中描述的记录。encircle()from?matplotlib?import?patchesfrom?sc
ipy.spatial?import?ConvexHullimport?warnings;?warnings.simplefilt
er(''ignore'')sns.set_style(''white'')#?Step?1:?Prepare?Datamidwest?=
?pd.read_csv(''https://raw.githubusercontent.com/selva86/datasets/
master/midwest_filter.csv'')#?As?many?colors?as?there?are?unique?m
idwest[''category'']categories?=?np.unique(midwest[''category''])colo
rs?=?[plt.cm.tab10(i/float(len(categories)-1))?for?i?in?range(len
(categories))]#?Step?2:?Draw?Scatterplot?with?unique?color?for?ea
ch?categoryfig?=?plt.figure(figsize=(16,?10),?dpi=?80,?facecolor=
''w'',?edgecolor=''k'')for?i,?category?in?enumerate(categories):?plt.
scatter(''area'',?''poptotal'',?data=midwest.loc[midwest.category==ca
tegory,?:],?s=''dot_size'',?c=colors[i],?label=str(category),?edgec
olors=''black'',?linewidths=.5)#?Step?3:?Encircling#?https://stacko
verflow.com/questions/44575681/how-do-i-encircle-different-data-s
ets-in-scatter-plotdef?encircle(x,y,?ax=None,?kw):?if?not?ax:?a
x=plt.gca()?p?=?np.c_[x,y]?hull?=?ConvexHull(p)?poly?=?plt.Polygo
n(p[hull.vertices,:],?kw)?ax.add_patch(poly)#?Select?data?to?be
?encircledmidwest_encircle_data?=?midwest.loc[midwest.state==''IN''
,?:]#?Draw?polygon?surrounding?verticesencircle(midwest_encircle_
data.area,?midwest_encircle_data.poptotal,?ec=''k'',?fc=''gold'',?alp
ha=0.1)encircle(midwest_encircle_data.area,?midwest_encircle_data
.poptotal,?ec=''firebrick'',?fc=''none'',?linewidth=1.5)#?Step?4:?Dec
orationsplt.gca().set(xlim=(0.0,?0.1),?ylim=(0,?90000),?xlabel=''A
rea'',?ylabel=''Population'')plt.xticks(fontsize=12);?plt.yticks(fon
tsize=12)plt.title(''Bubble?Plot?with?Encircling'',?fontsize=22)plt
.legend(fontsize=12)plt.show()带线性回归最佳拟合线的散点图如果你想了解两个变量如何相互改变,那么最合
适的线就是要走的路。下图显示了数据中各组之间最佳拟合线的差异。要禁用分组并仅为整个数据集绘制一条最佳拟合线,请从下面的调用中删除该
参数。#?Import?Datadf?=?pd.read_csv(''https://raw.githubusercontent.c
om/selva86/datasets/master/mpg_ggplot2.csv'')df_select?=?df.loc[df
.cyl.isin([4,8]),?:]#?Plotsns.set_style(''white'')gridobj?=?sns.lmp
lot(x=''displ'',?y=''hwy'',?hue=''cyl'',?data=df_select,??height=7,?asp
ect=1.6,?robust=True,?palette=''tab10'',??scatter_kws=dict(s=60,?li
newidths=.7,?edgecolors=''black''))#?Decorationsgridobj.set(xlim=(0
.5,?7.5),?ylim=(0,?50))plt.title(''Scatterplot?with?line?of?best?f
it?grouped?by?number?of?cylinders'',?fontsize=20)每个回归线都在自己的列中或者,您可
以在其自己的列中显示每个组的最佳拟合线。你可以通过在里面设置参数来实现这一点。#?Import?Datadf?=?pd.read_
csv(''https://raw.githubusercontent.com/selva86/datasets/master/mp
g_ggplot2.csv'')df_select?=?df.loc[df.cyl.isin([4,8]),?:]#?Each?li
ne?in?its?own?columnsns.set_style(''white'')gridobj?=?sns.lmplot(x=
''displ'',?y=''hwy'',??data=df_select,??height=7,??robust=True,??pale
tte=''Set1'',??col=''cyl'',?scatter_kws=dict(s=60,?linewidths=.7,?edg
ecolors=''black''))#?Decorationsgridobj.set(xlim=(0.5,?7.5),?ylim=(
0,?50))plt.show()抖动图通常,多个数据点具有完全相同的X和Y值。结果,多个点相互绘制并隐藏。为避免这种情况,请稍微
抖动点,以便您可以直观地看到它们。这很方便使用#?Import?Datadf?=?pd.read_csv(''https://raw
.githubusercontent.com/selva86/datasets/master/mpg_ggplot2.csv'')#
?Draw?Stripplotfig,?ax?=?plt.subplots(figsize=(16,10),?dpi=?80)sn
s.stripplot(df.cty,?df.hwy,?jitter=0.25,?size=8,?ax=ax,?linewidth
=.5)#?Decorationsplt.title(''Use?jittered?plots?to?avoid?overlappi
ng?of?points'',?fontsize=22)plt.show()计数图避免点重叠问题的另一个选择是增加点的大小,这取决于
该点中有多少点。因此,点的大小越大,周围的点的集中度就越大。#?Import?Datadf?=?pd.read_csv(''http
s://raw.githubusercontent.com/selva86/datasets/master/mpg_ggplot2
.csv'')df_counts?=?df.groupby([''hwy'',?''cty'']).size().reset_index(n
ame=''counts'')#?Draw?Stripplotfig,?ax?=?plt.subplots(figsize=(16,1
0),?dpi=?80)sns.stripplot(df_counts.cty,?df_counts.hwy,?size=df_c
ounts.counts2,?ax=ax)#?Decorationsplt.title(''Counts?Plot?-?Size?
of?circle?is?bigger?as?more?points?overlap'',?fontsize=22)plt.show
()边缘直方图边缘直方图具有沿X和Y轴变量的直方图。这用于可视化X和Y之间的关系以及单独的X和Y的单变量分布。该图如果经常用于探索
性数据分析(EDA)。#?Import?Datadf?=?pd.read_csv(''https://raw.githubuserc
ontent.com/selva86/datasets/master/mpg_ggplot2.csv'')#?Create?Fig?
and?gridspecfig?=?plt.figure(figsize=(16,?10),?dpi=?80)grid?=?plt
.GridSpec(4,?4,?hspace=0.5,?wspace=0.2)#?Define?the?axesax_main?=
?fig.add_subplot(grid[:-1,?:-1])ax_right?=?fig.add_subplot(grid[:
-1,?-1],?xticklabels=[],?yticklabels=[])ax_bottom?=?fig.add_subpl
ot(grid[-1,?0:-1],?xticklabels=[],?yticklabels=[])#?Scatterplot?o
n?main?axax_main.scatter(''displ'',?''hwy'',?s=df.cty4,?c=df.manufac
turer.astype(''category'').cat.codes,?alpha=.9,?data=df,?cmap=''tab1
0'',?edgecolors=''gray'',?linewidths=.5)#?histogram?on?the?rightax_b
ottom.hist(df.displ,?40,?histtype=''stepfilled'',?orientation=''vert
ical'',?color=''deeppink'')ax_bottom.invert_yaxis()#?histogram?in?th
e?bottomax_right.hist(df.hwy,?40,?histtype=''stepfilled'',?orientat
ion=''horizontal'',?color=''deeppink'')#?Decorationsax_main.set(title
=''Scatterplot?with?Histograms??displ?vs?hwy'',?xlabel=''displ'',?yla
bel=''hwy'')ax_main.title.set_fontsize(20)for?item?in?([ax_main.xax
is.label,?ax_main.yaxis.label]?+?ax_main.get_xticklabels()?+?ax_m
ain.get_yticklabels()):?item.set_fontsize(14)xlabels?=?ax_main.ge
t_xticks().tolist()ax_main.set_xticklabels(xlabels)plt.show().边缘箱
形图边缘箱图与边缘直方图具有相似的用途。然而,箱线图有助于精确定位X和Y的中位数,第25和第75百分位数。#?Import?Dat
adf?=?pd.read_csv(''https://raw.githubusercontent.com/selva86/data
sets/master/mpg_ggplot2.csv'')#?Create?Fig?and?gridspecfig?=?plt.f
igure(figsize=(16,?10),?dpi=?80)grid?=?plt.GridSpec(4,?4,?hspace=
0.5,?wspace=0.2)#?Define?the?axesax_main?=?fig.add_subplot(grid[:
-1,?:-1])ax_right?=?fig.add_subplot(grid[:-1,?-1],?xticklabels=[]
,?yticklabels=[])ax_bottom?=?fig.add_subplot(grid[-1,?0:-1],?xtic
klabels=[],?yticklabels=[])#?Scatterplot?on?main?axax_main.scatte
r(''displ'',?''hwy'',?s=df.cty5,?c=df.manufacturer.astype(''category''
).cat.codes,?alpha=.9,?data=df,?cmap=''Set1'',?edgecolors=''black'',?
linewidths=.5)#?Add?a?graph?in?each?partsns.boxplot(df.hwy,?ax=ax
_right,?orient=''v'')sns.boxplot(df.displ,?ax=ax_bottom,?orient=''h''
)#?Decorations?------------------#?Remove?x?axis?name?for?the?box
plotax_bottom.set(xlabel='''')ax_right.set(ylabel='''')#?Main?Title,?
Xlabel?and?YLabelax_main.set(title=''Scatterplot?with?Histograms??
displ?vs?hwy'',?xlabel=''displ'',?ylabel=''hwy'')#?Set?font?size?of?di
fferent?componentsax_main.title.set_fontsize(20)for?item?in?([ax_
main.xaxis.label,?ax_main.yaxis.label]?+?ax_main.get_xticklabels(
)?+?ax_main.get_yticklabels()):?item.set_fontsize(14)plt.show()相关
图Correlogram用于直观地查看给定数据帧(或2D数组)中所有可能的数值变量对之间的相关度量。#?Import?Datase
tdf?=?pd.read_csv(''https://github.com/selva86/datasets/raw/master
/mtcars.csv'')#?Plotplt.figure(figsize=(12,10),?dpi=?80)sns.heatma
p(df.corr(),?xticklabels=df.corr().columns,?yticklabels=df.corr()
.columns,?cmap=''RdYlGn'',?center=0,?annot=True)#?Decorationsplt.ti
tle(''Correlogram?of?mtcars'',?fontsize=22)plt.xticks(fontsize=12)p
lt.yticks(fontsize=12)plt.show()矩阵图成对图是探索性分析中的最爱,以理解所有可能的数字变量对之间的
关系。它是双变量分析的必备工具。#?Load?Datasetdf?=?sns.load_dataset(''iris'')#?Plot
plt.figure(figsize=(10,8),?dpi=?80)sns.pairplot(df,?kind=''scatter
'',?hue=''species'',?plot_kws=dict(s=80,?edgecolor=''white'',?linewidt
h=2.5))plt.show()#?Load?Datasetdf?=?sns.load_dataset(''iris'')#?Plo
tplt.figure(figsize=(10,8),?dpi=?80)sns.pairplot(df,?kind=''reg'',?
hue=''species'')plt.show()偏差发散型条形图如果您想根据单个指标查看项目的变化情况,并可视化此差异的顺序和数量
,那么发散条是一个很好的工具。它有助于快速区分数据中组的性能,并且非常直观,并且可以立即传达这一点。#?Prepare?Datad
f?=?pd.read_csv(''https://github.com/selva86/datasets/raw/master/m
tcars.csv'')x?=?df.loc[:,?[''mpg'']]df[''mpg_z'']?=?(x?-?x.mean())/x.s
td()df[''colors'']?=?[''red''?if?x?z'']]df.sort_values(''mpg_z'',?inplace=True)df.reset_index(inplace=T
rue)#?Draw?plotplt.figure(figsize=(14,10),?dpi=?80)plt.hlines(y=d
f.index,?xmin=0,?xmax=df.mpg_z,?color=df.colors,?alpha=0.4,?linew
idth=5)#?Decorationsplt.gca().set(ylabel=''$Model$'',?xlabel=''$Mile
age$'')plt.yticks(df.index,?df.cars,?fontsize=12)plt.title(''Diverg
ing?Bars?of?Car?Mileage'',?fontdict={''size'':20})plt.grid(linestyle
=''--'',?alpha=0.5)plt.show()发散型文本分散的文本类似于发散条,如果你想以一种漂亮和可呈现的方式显示图表中
每个项目的价值,它更喜欢。#?Prepare?Datadf?=?pd.read_csv(''https://github.com/s
elva86/datasets/raw/master/mtcars.csv'')x?=?df.loc[:,?[''mpg'']]df[''
mpg_z'']?=?(x?-?x.mean())/x.std()df[''colors'']?=?[''red''?if?x?se?''green''?for?x?in?df[''mpg_z'']]df.sort_values(''mpg_z'',?inplace=T
rue)df.reset_index(inplace=True)#?Draw?plotplt.figure(figsize=(14
,14),?dpi=?80)plt.hlines(y=df.index,?xmin=0,?xmax=df.mpg_z)for?x,
?y,?tex?in?zip(df.mpg_z,?df.index,?df.mpg_z):?t?=?plt.text(x,?y,?
round(tex,?2),?horizontalalignment=''right''?if?x??verticalalignment=''center'',?fontdict={''color'':''red''?if?x?e?''green'',?''size'':14})#?Decorationsplt.yticks(df.index,?df.cars,?
fontsize=12)plt.title(''Diverging?Text?Bars?of?Car?Mileage'',?fontd
ict={''size'':20})plt.grid(linestyle=''--'',?alpha=0.5)plt.xlim(-2.5,
?2.5)plt.show()发散型包点图发散点图也类似于发散条。然而,与发散条相比,条的不存在减少了组之间的对比度和差异。#?P
repare?Datadf?=?pd.read_csv(''https://github.com/selva86/datasets/
raw/master/mtcars.csv'')x?=?df.loc[:,?[''mpg'']]df[''mpg_z'']?=?(x?-?x
.mean())/x.std()df[''colors'']?=?[''red''?if?x?or?x?in?df[''mpg_z'']]df.sort_values(''mpg_z'',?inplace=True)df.reset
_index(inplace=True)#?Draw?plotplt.figure(figsize=(14,16),?dpi=?8
0)plt.scatter(df.mpg_z,?df.index,?s=450,?alpha=.6,?color=df.color
s)for?x,?y,?tex?in?zip(df.mpg_z,?df.index,?df.mpg_z):?t?=?plt.tex
t(x,?y,?round(tex,?1),?horizontalalignment=''center'',??verticalali
gnment=''center'',?fontdict={''color'':''white''})#?Decorations#?Lighte
n?bordersplt.gca().spines[''top''].set_alpha(.3)plt.gca().spines[''b
ottom''].set_alpha(.3)plt.gca().spines[''right''].set_alpha(.3)plt.g
ca().spines[''left''].set_alpha(.3)plt.yticks(df.index,?df.cars)plt
.title(''Diverging?Dotplot?of?Car?Mileage'',?fontdict={''size'':20})p
lt.xlabel(''$Mileage$'')plt.grid(linestyle=''--'',?alpha=0.5)plt.xlim
(-2.5,?2.5)plt.show()带标记的发散型棒棒糖图带标记的棒棒糖通过强调您想要引起注意的任何重要数据点并在图表中适当
地给出推理,提供了一种可视化分歧的灵活方式。#?Prepare?Datadf?=?pd.read_csv(''https://git
hub.com/selva86/datasets/raw/master/mtcars.csv'')x?=?df.loc[:,?[''m
pg'']]df[''mpg_z'']?=?(x?-?x.mean())/x.std()df[''colors'']?=?''black''#?
color?fiat?differentlydf.loc[df.cars?==?''Fiat?X1-9'',?''colors'']?=?
''darkorange''df.sort_values(''mpg_z'',?inplace=True)df.reset_index(i
nplace=True)#?Draw?plotimport?matplotlib.patches?as?patchesplt.fi
gure(figsize=(14,16),?dpi=?80)plt.hlines(y=df.index,?xmin=0,?xmax
=df.mpg_z,?color=df.colors,?alpha=0.4,?linewidth=1)plt.scatter(df
.mpg_z,?df.index,?color=df.colors,?s=[600?if?x?==?''Fiat?X1-9''?els
e?300?for?x?in?df.cars],?alpha=0.6)plt.yticks(df.index,?df.cars)p
lt.xticks(fontsize=12)#?Annotateplt.annotate(''Mercedes?Models'',?x
y=(0.0,?11.0),?xytext=(1.0,?11),?xycoords=''data'',??fontsize=15,?h
a=''center'',?va=''center'',?bbox=dict(boxstyle=''square'',?fc=''firebri
ck''),?arrowprops=dict(arrowstyle=''-[,?widthB=2.0,?lengthB=1.5'',?l
w=2.0,?color=''steelblue''),?color=''white'')#?Add?Patchesp1?=?patche
s.Rectangle((-2.0,?-1),?width=.3,?height=3,?alpha=.2,?facecolor=''
red'')p2?=?patches.Rectangle((1.5,?27),?width=.8,?height=5,?alpha=
.2,?facecolor=''green'')plt.gca().add_patch(p1)plt.gca().add_patch(
p2)#?Decorateplt.title(''Diverging?Bars?of?Car?Mileage'',?fontdict=
{''size'':20})plt.grid(linestyle=''--'',?alpha=0.5)plt.show()面积图通过对轴和
线之间的区域进行着色,区域图不仅强调峰值和低谷,而且还强调高点和低点的持续时间。高点持续时间越长,线下面积越大。import?nu
mpy?as?npimport?pandas?as?pd#?Prepare?Datadf?=?pd.read_csv(''https
://github.com/selva86/datasets/raw/master/economics.csv'',?parse_d
ates=[''date'']).head(100)x?=?np.arange(df.shape[0])y_returns?=?(df
.psavert.diff().fillna(0)/df.psavert.shift(1)).fillna(0)??100#?P
lotplt.figure(figsize=(16,10),?dpi=?80)plt.fill_between(x[1:],?y_
returns[1:],?0,?where=y_returns[1:]?>=?0,?facecolor=''green'',?inte
rpolate=True,?alpha=0.7)plt.fill_between(x[1:],?y_returns[1:],?0,
?where=y_returns[1:]?<=?0,?facecolor=''red'',?interpolate=True,?alp
ha=0.7)#?Annotateplt.annotate(''Peak?1975'',?xy=(94.0,?21.0),?xytex
t=(88.0,?28),?bbox=dict(boxstyle=''square'',?fc=''firebrick''),?arrow
props=dict(facecolor=''steelblue'',?shrink=0.05),?fontsize=15,?colo
r=''white'')#?Decorationsxtickvals?=?[str(m)[:3].upper()+''-''+str(y)
?for?y,m?in?zip(df.date.dt.year,?df.date.dt.month_name())]plt.gca
().set_xticks(x[::6])plt.gca().set_xticklabels(xtickvals[::6],?ro
tation=90,?fontdict={''horizontalalignment'':?''center'',?''verticalal
ignment'':?''center_baseline''})plt.ylim(-35,35)plt.xlim(1,100)plt.t
itle(''Month?Economics?Return?%'',?fontsize=22)plt.ylabel(''Monthly?
returns?%'')plt.grid(alpha=0.5)plt.show()排序有序条形图有序条形图有效地传达了项目的排名顺序
。但是,在图表上方添加度量标准的值,用户可以从图表本身获取精确信息。#?Prepare?Datadf_raw?=?pd.read_
csv(''https://github.com/selva86/datasets/raw/master/mpg_ggplot2.c
sv'')df?=?df_raw[[''cty'',?''manufacturer'']].groupby(''manufacturer'').
apply(lambda?x:?x.mean())df.sort_values(''cty'',?inplace=True)df.re
set_index(inplace=True)#?Draw?plotimport?matplotlib.patches?as?pa
tchesfig,?ax?=?plt.subplots(figsize=(16,10),?facecolor=''white'',?d
pi=?80)ax.vlines(x=df.index,?ymin=0,?ymax=df.cty,?color=''firebric
k'',?alpha=0.7,?linewidth=20)#?Annotate?Textfor?i,?cty?in?enumerat
e(df.cty):?ax.text(i,?cty+0.5,?round(cty,?1),?horizontalalignment
=''center'')#?Title,?Label,?Ticks?and?Ylimax.set_title(''Bar?Chart?f
or?Highway?Mileage'',?fontdict={''size'':22})ax.set(ylabel=''Miles?Pe
r?Gallon'',?ylim=(0,?30))plt.xticks(df.index,?df.manufacturer.str.
upper(),?rotation=60,?horizontalalignment=''right'',?fontsize=12)#?
Add?patches?to?color?the?X?axis?labelsp1?=?patches.Rectangle((.57
,?-0.005),?width=.33,?height=.13,?alpha=.1,?facecolor=''green'',?tr
ansform=fig.transFigure)p2?=?patches.Rectangle((.124,?-0.005),?wi
dth=.446,?height=.13,?alpha=.1,?facecolor=''red'',?transform=fig.tr
ansFigure)fig.add_artist(p1)fig.add_artist(p2)plt.show()16.棒棒糖图棒
棒糖图表以一种视觉上令人愉悦的方式提供与有序条形图类似的目的。#?Prepare?Datadf_raw?=?pd.read_csv
(''https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv''
)df?=?df_raw[[''cty'',?''manufacturer'']].groupby(''manufacturer'').app
ly(lambda?x:?x.mean())df.sort_values(''cty'',?inplace=True)df.reset
_index(inplace=True)#?Draw?plotfig,?ax?=?plt.subplots(figsize=(16
,10),?dpi=?80)ax.vlines(x=df.index,?ymin=0,?ymax=df.cty,?color=''f
irebrick'',?alpha=0.7,?linewidth=2)ax.scatter(x=df.index,?y=df.cty
,?s=75,?color=''firebrick'',?alpha=0.7)#?Title,?Label,?Ticks?and?Yl
imax.set_title(''Lollipop?Chart?for?Highway?Mileage'',?fontdict={''s
ize'':22})ax.set_ylabel(''Miles?Per?Gallon'')ax.set_xticks(df.index)
ax.set_xticklabels(df.manufacturer.str.upper(),?rotation=60,?font
dict={''horizontalalignment'':?''right'',?''size'':12})ax.set_ylim(0,?3
0)#?Annotatefor?row?in?df.itertuples():?ax.text(row.Index,?row.ct
y+.5,?s=round(row.cty,?2),?horizontalalignment=?''center'',?vertica
lalignment=''bottom'',?fontsize=14)plt.show()包点图点图表传达了项目的排名顺序。由于它沿水
平轴对齐,因此您可以更容易地看到点彼此之间的距离。#?Prepare?Datadf_raw?=?pd.read_csv(''http
s://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv'')df?=?
df_raw[[''cty'',?''manufacturer'']].groupby(''manufacturer'').apply(lam
bda?x:?x.mean())df.sort_values(''cty'',?inplace=True)df.reset_index
(inplace=True)#?Draw?plotfig,?ax?=?plt.subplots(figsize=(16,10),?
dpi=?80)ax.hlines(y=df.index,?xmin=11,?xmax=26,?color=''gray'',?alp
ha=0.7,?linewidth=1,?linestyles=''dashdot'')ax.scatter(y=df.index,?
x=df.cty,?s=75,?color=''firebrick'',?alpha=0.7)#?Title,?Label,?Tick
s?and?Ylimax.set_title(''Dot?Plot?for?Highway?Mileage'',?fontdict={
''size'':22})ax.set_xlabel(''Miles?Per?Gallon'')ax.set_yticks(df.inde
x)ax.set_yticklabels(df.manufacturer.str.title(),?fontdict={''hori
zontalalignment'':?''right''})ax.set_xlim(10,?27)plt.show()坡度图斜率图最适合
比较给定人/项目的“之前”和“之后”位置。import?matplotlib.lines?as?mlines#?Import?Da
tadf?=?pd.read_csv(''https://raw.githubusercontent.com/selva86/dat
asets/master/gdppercap.csv'')left_label?=?[str(c)?+?'',?''+?str(roun
d(y))?for?c,?y?in?zip(df.continent,?df[''1952''])]right_label?=?[st
r(c)?+?'',?''+?str(round(y))?for?c,?y?in?zip(df.continent,?df[''1957
''])]klass?=?[''red''?if?(y1-y2)?df[''1952''],?df[''1957''])]#?draw?line#?https://stackoverflow.com/qu
estions/36470343/how-to-draw-a-line-with-matplotlib/36479941def?n
ewline(p1,?p2,?color=''black''):?ax?=?plt.gca()?l?=?mlines.Line2D([
p1[0],p2[0]],?[p1[1],p2[1]],?color=''red''?if?p1[1]-p2[1]?>?0?else?
''green'',?marker=''o'',?markersize=6)?ax.add_line(l)?return?lfig,?ax
?=?plt.subplots(1,1,figsize=(14,14),?dpi=?80)#?Vertical?Linesax.v
lines(x=1,?ymin=500,?ymax=13000,?color=''black'',?alpha=0.7,?linewi
dth=1,?linestyles=''dotted'')ax.vlines(x=3,?ymin=500,?ymax=13000,?c
olor=''black'',?alpha=0.7,?linewidth=1,?linestyles=''dotted'')#?Point
sax.scatter(y=df[''1952''],?x=np.repeat(1,?df.shape[0]),?s=10,?colo
r=''black'',?alpha=0.7)ax.scatter(y=df[''1957''],?x=np.repeat(3,?df.s
hape[0]),?s=10,?color=''black'',?alpha=0.7)#?Line?Segmentsand?Annot
ationfor?p1,?p2,?c?in?zip(df[''1952''],?df[''1957''],?df[''continent'']
):?newline([1,p1],?[3,p2])?ax.text(1-0.05,?p1,?c?+?'',?''?+?str(rou
nd(p1)),?horizontalalignment=''right'',?verticalalignment=''center'',
?fontdict={''size'':14})?ax.text(3+0.05,?p2,?c?+?'',?''?+?str(round(p
2)),?horizontalalignment=''left'',?verticalalignment=''center'',?font
dict={''size'':14})#?''Before''?and?''After''?Annotationsax.text(1-0.05
,?13000,?''BEFORE'',?horizontalalignment=''right'',?verticalalignment
=''center'',?fontdict={''size'':18,?''weight'':700})ax.text(3+0.05,?130
00,?''AFTER'',?horizontalalignment=''left'',?verticalalignment=''cente
r'',?fontdict={''size'':18,?''weight'':700})#?Decorationax.set_title(''
Slopechart:?Comparing?GDP?Per?Capita?between?1952?vs?1957'',?fontd
ict={''size'':22})ax.set(xlim=(0,4),?ylim=(0,14000),?ylabel=''Mean?G
DP?Per?Capita'')ax.set_xticks([1,3])ax.set_xticklabels([''1952'',?''1
957''])plt.yticks(np.arange(500,?13000,?2000),?fontsize=12)#?Light
en?bordersplt.gca().spines[''top''].set_alpha(.0)plt.gca().spines[''
bottom''].set_alpha(.0)plt.gca().spines[''right''].set_alpha(.0)plt.
gca().spines[''left''].set_alpha(.0)plt.show()哑铃图哑铃图传达各种项目的“前”和“后”位
置以及项目的排序。如果您想要将特定项目/计划对不同对象的影响可视化,那么它非常有用。import?matplotlib.lines
?as?mlines#?Import?Datadf?=?pd.read_csv(''https://raw.githubuserco
ntent.com/selva86/datasets/master/health.csv'')df.sort_values(''pct
_2014'',?inplace=True)df.reset_index(inplace=True)#?Func?to?draw?l
ine?segmentdef?newline(p1,?p2,?color=''black''):?ax?=?plt.gca()?l?=
?mlines.Line2D([p1[0],p2[0]],?[p1[1],p2[1]],?color=''skyblue'')?ax.
add_line(l)?return?l#?Figure?and?Axesfig,?ax?=?plt.subplots(1,1,f
igsize=(14,14),?facecolor=''#f7f7f7'',?dpi=?80)#?Vertical?Linesax.v
lines(x=.05,?ymin=0,?ymax=26,?color=''black'',?alpha=1,?linewidth=1
,?linestyles=''dotted'')ax.vlines(x=.10,?ymin=0,?ymax=26,?color=''bl
ack'',?alpha=1,?linewidth=1,?linestyles=''dotted'')ax.vlines(x=.15,?
ymin=0,?ymax=26,?color=''black'',?alpha=1,?linewidth=1,?linestyles=
''dotted'')ax.vlines(x=.20,?ymin=0,?ymax=26,?color=''black'',?alpha=1
,?linewidth=1,?linestyles=''dotted'')#?Pointsax.scatter(y=df[''index
''],?x=df[''pct_2013''],?s=50,?color=''#0e668b'',?alpha=0.7)ax.scatter
(y=df[''index''],?x=df[''pct_2014''],?s=50,?color=''#a3c4dc'',?alpha=0.
7)#?Line?Segmentsfor?i,?p1,?p2?in?zip(df[''index''],?df[''pct_2013'']
,?df[''pct_2014'']):?newline([p1,?i],?[p2,?i])#?Decorationax.set_fa
cecolor(''#f7f7f7'')ax.set_title(''Dumbell?Chart:?Pct?Change?-?2013?
vs?2014'',?fontdict={''size'':22})ax.set(xlim=(0,.25),?ylim=(-1,?27),?ylabel=''Mean?GDP?Per?Capita'')ax.set_xticks([.05,?.1,?.15,?.20])ax.set_xticklabels([''5%'',?''15%'',?''20%'',?''25%''])ax.set_xticklabels([''5%'',?''15%'',?''20%'',?''25%''])plt.show()分配连续变量的直方图直方图显示给定变量的频率分布。下面的表示基于分类变量对频率条进行分组,从而更好地了解连续变量和串联变量。#?Import?Datadf?=?pd.read_csv(''https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv'')#?Prepare?datax_var?=?''displ''groupby_var?=?''class''df_agg?=?df.loc[:,?[x_var,?groupby_var]].groupby(groupby_var)vals?=?[df[x_var].values.tolist()?for?i,?df?in?df_agg]#?Drawplt.figure(figsize=(16,9),?dpi=?80)colors?=?[plt.cm.Spectral(i/float(len(vals)-1))?for?i?in?range(len(vals))]n,?bins,?patches?=?plt.hist(vals,?30,?stacked=True,?density=False,?color=colors[:len(vals)])#?Decorationplt.legend({group:col?for?group,?col?in?zip(np.unique(df[groupby_var]).tolist(),?colors[:len(vals)])})plt.title(f''Stacked?Histogram?of?${x_var}$?colored?by?${groupby_var}$'',?fontsize=22)plt.xlabel(x_var)plt.ylabel(''Frequency'')plt.ylim(0,?25)plt.xticks(ticks=bins[::3],?labels=[round(b,1)?for?b?in?bins[::3]])plt.show()类型变量的直方图分类变量的直方图显示该变量的频率分布。通过对条形图进行着色,您可以将分布与表示颜色的另一个分类变量相关联。#?Import?Datadf?=?pd.read_csv(''https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv'')#?Prepare?datax_var?=?''manufacturer''groupby_var?=?''class''df_agg?=?df.loc[:,?[x_var,?groupby_var]].groupby(groupby_var)vals?=?[df[x_var].values.tolist()?for?i,?df?in?df_agg]#?Drawplt.figure(figsize=(16,9),?dpi=?80)colors?=?[plt.cm.Spectral(i/float(len(vals)-1))?for?i?in?range(len(vals))]n,?bins,?patches?=?plt.hist(vals,?df[x_var].unique().__len__(),?stacked=True,?density=False,?color=colors[:len(vals)])#?Decorationplt.legend({group:col?for?group,?col?in?zip(np.unique(df[groupby_var]).tolist(),?colors[:len(vals)])})plt.title(f''Stacked?Histogram?of?${x_var}$?colored?by?${groupby_var}$'',?fontsize=22)plt.xlabel(x_var)plt.ylabel(''Frequency'')plt.ylim(0,?40)plt.xticks(ticks=bins,?labels=np.unique(df[x_var]).tolist(),?rotation=90,?horizontalalignment=''left'')plt.show()密度图密度图是一种常用工具,可视化连续变量的分布。通过“响应”变量对它们进行分组,您可以检查X和Y之间的关系。以下情况,如果出于代表性目的来描述城市里程的分布如何随着汽缸数的变化而变化。#?Import?Datadf?=?pd.read_csv(''https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv'')#?Draw?Plotplt.figure(figsize=(16,10),?dpi=?80)sns.kdeplot(df.loc[df[''cyl'']?==?4,?''cty''],?shade=True,?color=''g'',?label=''Cyl=4'',?alpha=.7)sns.kdeplot(df.loc[df[''cyl'']?==?5,?''cty''],?shade=True,?color=''deeppink'',?label=''Cyl=5'',?alpha=.7)sns.kdeplot(df.loc[df[''cyl'']?==?6,?''cty''],?shade=True,?color=''dodgerblue'',?label=''Cyl=6'',?alpha=.7)sns.kdeplot(df.loc[df[''cyl'']?==?8,?''cty''],?shade=True,?color=''orange'',?label=''Cyl=8'',?alpha=.7)#?Decorationplt.title(''Density?Plot?of?City?Mileage?by?n_Cylinders'',?fontsize=22)plt.legend()直方密度线图带有直方图的密度曲线将两个图表传达的集体信息汇集在一起,这样您就可以将它们放在一个图形而不是两个图形中。#?Import?Datadf?=?pd.read_csv(''https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv'')#?Draw?Plotplt.figure(figsize=(13,10),?dpi=?80)sns.distplot(df.loc[df[''class'']?==?''compact'',?''cty''],?color=''dodgerblue'',?label=''Compact'',?hist_kws={''alpha'':.7},?kde_kws={''linewidth'':3})sns.distplot(df.loc[df[''class'']?==?''suv'',?''cty''],?color=''orange'',?label=''SUV'',?hist_kws={''alpha'':.7},?kde_kws={''linewidth'':3})sns.distplot(df.loc[df[''class'']?==?''minivan'',?''cty''],?color=''g'',?label=''minivan'',?hist_kws={''alpha'':.7},?kde_kws={''linewidth'':3})plt.ylim(0,?0.35)#?Decorationplt.title(''Density?Plot?of?City?Mileage?by?Vehicle?Type'',?fontsize=22)plt.legend()plt.show()JoyPlotJoyPlot允许不同组的密度曲线重叠,这是一种可视化相对于彼此的大量组的分布的好方法。它看起来很悦目,并清楚地传达了正确的信息。它可以使用joypy基于的包来轻松构建matplotlib。#?!pip?install?joypy#?Import?Datampg?=?pd.read_csv(''https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv'')#?Draw?Plotplt.figure(figsize=(16,10),?dpi=?80)fig,?axes?=?joypy.joyplot(mpg,?column=[''hwy'',?''cty''],?by=''class'',?ylim=''own'',?figsize=(14,10))#?Decorationplt.title(''Joy?Plot?of?City?and?Highway?Mileage?by?Class'',?fontsize=22)plt.show()分布式点图分布点图显示按组分割的点的单变量分布。点数越暗,该区域的数据点集中度越高。通过对中位数进行不同着色,组的真实定位立即变得明显。import?matplotlib.patches?as?mpatches#?Prepare?Datadf_raw?=?pd.read_csv(''https://github.com/selva86/datasets/raw/master/mpg_ggplot2.csv'')cyl_colors?=?{4:''tab:red'',?5:''tab:green'',?6:''tab:blue'',?8:''tab:orange''}df_raw[''cyl_color'']?=?df_raw.cyl.map(cyl_colors)#?Mean?and?Median?city?mileage?by?makedf?=?df_raw[[''cty'',?''manufacturer'']].groupby(''manufacturer'').apply(lambda?x:?x.mean())df.sort_values(''cty'',?ascending=False,?inplace=True)df.reset_index(inplace=True)df_median?=?df_raw[[''cty'',?''manufacturer'']].groupby(''manufacturer'').apply(lambda?x:?x.median())#?Draw?horizontal?linesfig,?ax?=?plt.subplots(figsize=(16,10),?dpi=?80)ax.hlines(y=df.index,?xmin=0,?xmax=40,?color=''gray'',?alpha=0.5,?linewidth=.5,?linestyles=''dashdot'')#?Draw?the?Dotsfor?i,?make?in?enumerate(df.manufacturer):?df_make?=?df_raw.loc[df_raw.manufacturer==make,?:]?ax.scatter(y=np.repeat(i,?df_make.shape[0]),?x=''cty'',?data=df_make,?s=75,?edgecolors=''gray'',?c=''w'',?alpha=0.5)?ax.scatter(y=i,?x=''cty'',?data=df_median.loc[df_median.index==make,?:],?s=75,?c=''firebrick'')#?Annotateax.text(33,?13,?''$red?;?dots?;?are?;?the?:?median$'',?fontdict={''size'':12},?color=''firebrick'')#?Decorationsred_patch?=?plt.plot([],[],?marker=''o'',?ms=10,?ls='''',?mec=None,?color=''firebrick'',?label=''Median'')plt.legend(handles=red_patch)ax.set_title(''Distribution?of?City?Mileage?by?Make'',?fontdict={''size'':22})ax.set_xlabel(''Miles?Per?Gallon?(City)'',?alpha=0.7)ax.set_yticks(df.index)ax.set_yticklabels(df.manufacturer.str.title(),?fontdict={''horizontalalignment'':?''right''},?alpha=0.7)ax.set_xlim(1,?40)plt.xticks(alpha=0.7)plt.gca().spines[''top''].set_visible(False)plt.gca().spines[''bottom''].set_visible(False)plt.gca().spines[''right''].set_visible(False)plt.gca().spines[''left''].set_visible(False)plt.grid(axis=''both'',?alpha=.4,?linewidth=.1)plt.show()21
献花(0)
+1
(本文系汉无为首藏)