Advertisement

The Science of Data Visualization: A Primer on the Fund

阅读量:

作者:禅与计算机程序设计艺术

1.简介

数据可视化(Data visualization)是从数据中发现insights并传达给用户的一种方式。许多年来,数据可视化已经成为人们分析、理解和运用数据的一种重要工具。无论是研究领域还是商业领域,数据可视化都扮演着至关重要的角色。

在过去的十几年里,数据可视化一直在蓬勃发展,其潜力已不可估量。但是,对于一些数据可视化专业人员来说,掌握数据可视化背后的科学基础知识将会极大地提高工作效率。本文试图对数据可视化中的基本概念、分析技术、设计技巧等方面进行系统性的介绍。

2.数据可视化的起源

数据可视化的起源可以追溯到19世纪70年代末期左右。当时的科学家们发现某些复杂的数据结构如图像、声音或文本,具有复杂的空间-时间结构。然而,由于这些数据体积庞大且难以理解,科学家们想通过符号表示来简化这种结构。因此,他们开发出了一种基于图形的方法——生动、清晰的图像——来描述这些数据。

另一个重要的影响因素是电脑和互联网的普及。随着人们能够更加便捷地获取和处理海量数据,信息技术和网络技术的发展促进了数据可视化的快速发展。现在,数据可视化已经成为日常生活的一部分,许多企业也在使用数据可视化来帮助决策和洞察数据。

3.数据可视化的目的

数据可视化的目的之一就是使数据更容易被人类理解。它可以用于改善业务决策,增加工作效率,提升产品品质,甚至改变社会意识。

数据可视化的主要任务是从大量的数据中提取有效的信息。数据可视化通常包括三个层次:信息编码、信息重构和信息呈现。

  1. 信息编码 数据可视化中的第一步是将原始数据转换成图形、影像或其他符号形式。这一阶段涉及到一些数据预处理,例如标准化、归一化和降维等。

  2. 信息重构 第二步是利用所生成的符号,对原始数据进行重新组合、排序和聚合,以便于查看数据之间的关联。重构阶段需要对数据的统计分析能力、计算机算力和创造力有一定的要求。

  3. 信息呈现 最后一步是选择最适合的符号和颜色方案来呈现数据。同时,还要考虑数据的可读性、可用性、易用性和美观程度。

4.数据可视化的分类

数据可视化的类型很多,根据其表现形式可以分为:

  1. 静态图形(Static Graphics):静态图形是指那些不包含动态变化的数据,或者仅仅展示一张图片。典型的静态图形包括散点图、柱状图、条形图等。
  2. 可交互图形(Interactive Graphics):可交互图形是指基于动态的交互行为,比如点击、悬停、缩放、拖动等,进行数据探索的图形。典型的可交互图形包括柱状图、折线图、气泡图、地图、仪表盘等。
  3. 动态图形(Animated Graphics):动态图形可以实时反映数据的变化,可以帮助用户更直观地看到数据之间的关联关系。典型的动态图形包括股票图、雷达图、三维图形等。
  4. 量化图形(Quantitative Graphics):量化图形由数字和图形共同组成,是一种专门用于量化分析的数据可视化方法。典型的量化图形包括柱状图、折线图、饼图、散点图、热力图等。
  5. 信息图形(Infographic):信息图形是一种简洁、直观、富媒体的方式来呈现复杂的数据。它一般不包含任何计算结果,信息图形的内容主要通过动画、照片、文字等来传递信息。典型的信息图形包括新闻报道、公司宣传册、广告宣传物料等。

5.基本概念术语说明

5.1 数据集(Dataset)

数据集(Dataset)是用来描绘数据的集合。数据集可以是结构化的,也可以是半结构化的。结构化数据是指按照一定的数据模型来组织的数据;半结构化数据则不按照固定的模式来存储数据。例如,电子邮件、日志文件、网页浏览记录、位置数据等都是结构化数据;社交媒体数据、医疗数据、文本数据等都是半结构化数据。

5.2 图元(Element)

图元(Element)是用来表示数据的具体形态,可以是点(Point),线(Line),面(Polygon),或者任意三角形(Triangle)。例如,散点图中的每个点就是一个图元,而折线图中的曲线就是图元。

5.3 属性(Attribute)

属性(Attribute)是用来表示图元的特征,可以是点的大小,颜色,形状,或者值。例如,点集中有多个属性,即代表不同种类的点。

5.4 通用计算语言(UCLC)

通用计算语言(UCLC)是指一种使用图元和属性来对数据进行可视化的方法。它包括了两种语言:基于面向对象的GL(Graphics Library)和基于声明式的VG(Visualization Grammar)。

5.5 主题(Theme)

主题(Theme)是用来描述数据的样式,可以是一个具体的图形风格,也可以是一个抽象的主题描述。例如,气候变化主题下的温度分布图,可以有不同的颜色映射风格,也可以采用轮廓线的方式来突出变化的区域。

5.6 概念图(Conceptual Diagram)

概念图(Conceptual Diagram)是用来表示数据及其关系的图表。它把数据按主题划分成不同的区域,并在不同区域之间建立联系。例如,电影评论情感分析的概念图可能包括主角,配乐,故事情节,票房收入等。

6.核心算法原理和具体操作步骤以及数学公式讲解

数据可视化技术作为一种艺术,其出现的历史较短。许多艺术家认为,数据可视化不是一件神奇的事情,只是用图画出数据。这种看法在一些学科里面得到了认同,例如物理学家都喜欢研究空间和宇宙,所以还有牛顿的著作,哈伯顿说法的出现。

不过,随着近些年数据可视化技术的飞速发展,有些人又认为数据可视化必须具备一些高级的技巧和算法。那么,数据可视化中最基础的概念、术语及其相关的算法原理和操作步骤,以及如何用数学公式来阐述,将会是学界关注的焦点。

6.1 数据映射

数据映射(Data Mapping)是指将原始数据的值映射到图形上,以便于用户更快、更准确地识别数据趋势、比较各项指标。

数据映射的步骤:

  1. 确定唯一标识符
  2. 对属性进行编码
  3. 分组
  4. 创建图形
  5. 设置颜色、标记和其他图形元素
  6. 添加轴标签
  7. 添加注释
  8. 添加比例尺
  9. 将图形元素组合成可视化
  10. 测试可视化效果

6.1.1 唯一标识符(Unique Identifier)

唯一标识符(Unique Identifier)是指每一条数据都有一个唯一的标识符,可以是数值、字符串、日期时间戳、IP地址等。

6.1.2 属性编码(Encoding Attributes)

属性编码(Encoding Attributes)是指把数据的值映射到图形上的过程。属性编码可以分为离散和连续两种,其中离散数据可以映射到颜色、标记、大小等图形元素上,而连续数据则需要使用连续的图形元素,如散点图、线图、气泡图等。

6.1.3 分组(Grouping)

分组(Grouping)是指把相似的项目放在一起,方便用户对数据进行比较和分析。分组可以按照维度、类型、大小、位置、颜色等进行。

6.1.4 创建图形(Creating Graphics)

创建图形(Creating Graphics)是指选择合适的图形元素,以便于表达原始数据的特征。创建图形可以分为线图、柱状图、饼图、散点图等。

6.1.5 设置颜色、标记和其他图形元素(Setting Colors, Markings, and Other Graphics Elements)

设置颜色、标记和其他图形元素(Setting Colors, Markings, and Other Graphics Elements)是指对图形进行风格化,使用合适的颜色、标记、透明度等方式,让图形变得更富有特色。

6.1.6 添加轴标签(Adding Axis Labels)

添加轴标签(Adding Axis Labels)是指在图表上添加描述性的标签,为读者提供有用的信息。轴标签的数量应当与图表上的图元数量保持一致,以便于用户进行对应。

6.1.7 添加注释(Adding Comments)

添加注释(Adding Comments)是指在图表上添加描述性的注释,以便于呈现更详细的注释信息。注释应该避免与图表元素混淆,否则可能会干扰读者的阅读。

6.1.8 添加比例尺(Adding a Scale Bar)

添加比例尺(Adding a Scale Bar)是指在图表上添加能够反映数据的规模的尺度。尺度栏可以显示图表上每一个坐标轴的刻度单位。

6.1.9 将图形元素组合成可视化(Combining Graphics Elements into Visualizations)

将图形元素组合成可视化(Combining Graphics Elements into Visualizations)是指将之前创建的图形元素组合在一起,生成完整的可视化。

6.1.10 测试可视化效果(Testing Visualization Effectiveness)

测试可视化效果(Testing Visualization Effectiveness)是指检查生成的可视化是否能够满足用户需求,验证可视化的正确性。

6.2 排版布局

排版布局(Layout or Presentation)是指确定数据可视化的外观、排列方式,使其更易于理解和交流。排版布局的步骤:

  1. 选择合适的图例
  2. 使用图例进行交叉引用
  3. 调整字体、字号
  4. 调整色彩
  5. 为页面留白
  6. 决定图的大小
  7. 选择合适的比例尺
  8. 添加标题
  9. 在图表上添加注释
  10. 生成PDF文档或图像文件

6.2.1 选择合适的图例(Choosing an Appropriate Legend)

选择合适的图例(Choosing an Appropriate Legend)是指选择最恰当的图例,可以帮助用户快速了解数据的概貌,而非单纯的使用颜色来区分。图例的选择应当避免过多的细节,并且易于理解。

6.2.2 使用图例进行交叉引用(Using a Legend for Cross-Referencing)

使用图例进行交叉引用(Using a Legend for Cross-Referencing)是指使用图例来帮助用户找到特定的图元。

6.2.3 调整字体、字号(Adjusting Font Sizes and Types)

调整字体、字号(Adjusting Font Sizes and Types)是指在整个页面上统一调整字体大小,以确保字号符合规范,而且不会违反版权规定。

6.2.4 调整色彩(Adjusting Color Palette)

调整色彩(Adjusting Color Palette)是指根据数据需要,选择不同的色彩搭配,增强数据可视化的独特性。

6.2.5 为页面留白(Providing White Space Around Graphics)

为页面留白(Providing White Space Around Graphics)是指在页面周围留有空白区域,以免影响视觉效果。留白的大小应该根据数据的规模、图形元素的数量、布局的复杂程度等进行调整。

6.2.6 决定图的大小(Determining Size of Charts)

决定图的大小(Determining Size of Charts)是指根据数据量、呈现的对象和布局情况,确定图表的尺寸。图表的大小应该足够大,可以展示更多的信息,而且不能太小,以免无法辨认。

6.2.7 选择合适的比例尺(Selecting a Proper Scale for Charts)

选择合适的比例尺(Selecting a Proper Scale for Charts)是指为图表上的坐标轴添加合适的刻度和标签,能够帮助用户快速理解数据的含义和规模。

6.2.8 添加标题(Adding Title to Charts)

添加标题(Adding Title to Charts)是指为图表添加标题,使其更易于理解。标题可以是图表的名字,也可以是图表的内容的总结。

6.2.9 在图表上添加注释(Annotating Charts with Notes)

在图表上添加注释(Annotating Charts with Notes)是指在图表上添加额外的注释,以便于呈现更详细的说明。注释应该突出重要的部分,并且避免与图表元素混淆,以免影响视觉效果。

6.2.10 生成PDF文档或图像文件(Generating PDF Documents or Images File Formats)

生成PDF文档或图像文件(Generating PDF Documents or Images File Formats)是指生成一份带有高保真度的输出文件,可以分享或打印出来,并配合版式做好准备。

7.具体代码实例和解释说明

为了方便学习和理解,作者将会用Python代码实例说明数据可视化的相关知识点。我们先来看一个简单的例子,根据收入和婚姻状况判断男性和女性的平均收入差距,这是个二维数据可视化的问题。

复制代码
    import pandas as pd
    import matplotlib.pyplot as plt
    
    data = {'Gender': ['Male', 'Female'],
    'Average Income': [50000, 60000]}
    
    df = pd.DataFrame(data)
    
    plt.barh(y='Gender', width='Average Income', data=df)
    
    plt.title('Average Income Difference Between Male and Female')
    plt.xlabel('Average Income')
    plt.ylabel('')
    plt.show()
    
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

运行后会生成如下的柱状图:

首先,导入了两个库:pandas 和 matplotlib。

然后,定义了一个字典 data,包含了性别和平均收入两列。

接着,用 pd.DataFrame() 函数将数据转换成 DataFrame 对象。

然后,用 plt.barh 方法画出柱状图。参数 y 表示 y 轴上的变量,width 表示柱的宽度,data 指定数据集。

最后,设置标题、x轴标签、y轴标签,并展示图表。

下面的例子是一个更复杂的数据可视化,用来呈现市场上不同电影类型的销售额排行榜。

复制代码
    import pandas as pd
    import seaborn as sns
    from matplotlib import pyplot as plt
    
    movies_data = {
    'Movie Name': ["The Dark Knight", "Pulp Fiction", "Star Wars", "Inception", "Jurassic Park"], 
    'Genre': ["Action", "Crime", "Sci-Fi", "Adventure", "Action"],
    'Release Year': [2008, 1994, 1977, 2010, 1993],
    'Sales (in millions)': [9.3, 3.9, 2.7, 2.7, 2]
    }
    
    df = pd.DataFrame(movies_data)
    
    sns.catplot(x="Genre", 
    y="Sales (in millions)", 
    hue="Movie Name",
    kind="bar",
    order=["Action", "Comedy", "Drama", "Sci-Fi"],
    data=df)
    
    plt.xticks(rotation=-45)
    plt.title("Top Movie Genres Sales in Millions")
    plt.xlabel("")
    plt.ylabel("Sales (in millions)")
    plt.show()
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

运行后,会生成如下的条形图:

这里也用到了 Pandas 和 Seaborn 两个库。

首先,定义了字典 movies_data,包含了电影名称、类型、发行年份和销售额等五列数据。

然后,用 pd.DataFrame() 函数将数据转换成 DataFrame 对象。

接着,用 sns.catplot() 函数画出条形图。参数 x 表示 x 轴上的变量,y 表示 y 轴上的变量,hue 表示颜色变量,kind 表示图的类型,order 表示genre的顺序,data 指定数据集。

最后,设置图例的旋转角度、标题、x轴标签、y轴标签,并展示图表。

全部评论 (0)

还没有任何评论哟~