数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联。数据集可以是一行代码就能表示的小型数字列表,也可以是数亿G字节的数据。
漂亮地呈现数据关乎的并非仅仅是漂亮的图片。以引人注目的简洁方式呈现数据,让观看者能够明白其含义,发现数据集中原本未意识到的规律和意义。
所幸即便没有超级计算机,也能够可视化复杂的数据。鉴于Python的高效性,使用它在笔记本电脑上就能快速地探索由数百万个数据点组成的数据集。数据点并非必须是数字,利用本书前半部分介绍的基本知识,也可以对非数字数据进行分析。
在基因研究、天气研究、政治经济分析等众多领域,大家都使用Python来完成数据密集型工作。数据科学家使用Python编写了一系列令人印象深刻的可视化和分析工具,其中很多也可供我们使用。最流行的工具之一是matplotlib,它是一个数学绘图库,我们将使用它来制作简单的图表,如折线图和散点图。然后,我们将基于随机漫步概念生成一个更有趣的数据集——根据一系列随机决策生成的图表。
我们还将使用Pygal包,它专注于生成适合在数字设备上显示的图表。通过使用Pygal,可在用户与图表交互时突出元素以及调整其大小,还可轻松地调整整个图表的尺寸,使其适合在微型智能手表或巨型显示器上显示。我们将使用Pygal以各种方式探索掷骰子的结果。
15.1 安装matplotlib
首先,需要安装matplotlib,我们将使用它来制作开始的几个图表。
15.1.5 matplotlib画廊
要查看使用matplotlib可制作的各种图表,请访问http://matplotlib.org/的示例画廊。单击画廊中的图表,就可查看用于生成图表的代码。
15.2 绘制简单的折线图
下面来使用matplotlib绘制一个简单的折线图,在对其进行定制,以实现信息更丰富的数据可视化。我们将使用平方序数1 4 9 16 和 25来绘制这个图表。
只需向matplotlib提供如下数字,matplotlib就能完成其他的工作:
mql_squares.py
import matplotlib.pyplot as plt
squares = [1,4,9,16,25]
plt.plot(squares)
plt.show()
我们首先导入模块pyplot,并给它指定了别名plt,以免反复输入pyplot。在线示例大都这样做,因此这里也这样做。模块pyplot包含很多用于生成图表的函数。
我们创建了一个列表,在其中存储了前述平方数,再将这个列表传递给函数plot(),这个函数尝试根据这些数字绘制处有意义的图形。plt.show()打开matplotlib查看器,并显示绘制的图形,如图15-1所示。查看器让我们能够缩放和导航图形,另外,点击磁盘图表可将图形保存起来。
15.2.1 修改标签文字和线条粗细
上图所示表明数字是越来越大的,但标签文字太小,线条太细。所幸matplotlib让我们能够调整可视化的各个方面。
下面通过一些定制来改善这个图形的可读性,如下所示:
mql_squares.py
import matplotlib.pyplot as plt
squares = [1,4,9,16,25]
plt.plot(squares,linewitdth=5) --(1)
#设置图标标题,并给坐标轴加上标签
plt.title("Square Numbers",fontsize=24) --(2)
plt.xlabel("value",fontsize=14) --(3)
plt.ylabel("Square of Value",fontsize=14)
#设置刻度标记大小
plt.tick_params(axis='both',labelsize=14) --(4)
plt.show()
参数linewidth(见(1))决定了plot()绘制的线条的粗细。函数title()(见(2))给图表指定标题。在上述代码中,出现了多次的参数fontsize指定了图表中文字的大小。
函数xlabel()和ylabel()让我们能够为每条轴设置标题(见(3));而函数tick_params()设置刻度的样式(见(4)),其中指定的实参将影响x轴和y轴上的刻度(axes='both'),并将刻度标记的字号设置为14(labelsize=14).
最终的图表阅读起来容易多了,如图15-2所示:标签文字更大,线条也更粗。
15.2.2 校正图形
图形更容易阅读后,我们发现没有正确地绘制数据:折线图的终点指出4.0的平方为2