数据可视化<第一天>
数据可视化
数据可视化是指通过可视化表示来探索数据,它与数据挖掘紧密相关
而数据挖掘指的是使用代码来探索数据集的规律和关联
数据集可以是用一行代码就能表示的小型数字列表,也可以是数以千兆的字节的数据
以引人注目的简洁方式呈现数据,让观看者能够明白其含义
发现数据集中原本未意识到的规律和含义
下面我们将使用matplotlib(一个数学绘图库)来制作简单的图表
如折线图,散点图
还将使用Pygal包,该包可在用户与图表交互时突出元素以及调整其大小
还可以轻松调整图表的尺寸
一,绘制简单的折线图
1.
下面来使用matplotlib绘制一个简单的折线图,再对其进行订制
以实现信息更丰富的数据可视化
我们将使用平方数序列1,4,9,16和25来绘制图表
import matplotlib.pyplot as plt
squares = [1,4,9,16,25]
plt.plot(squares)
plt.show()
我们首先导入了模块pyplot,并指定别名plt
创建一个列表储存平方数,再将这个列表传递给函数plot()
这个函数尝试根据这些数字绘制出图形,plt.show()打开matplotlib查看器
并显示绘制的图形
2.修改标签文字和线条粗细
matplotlib可以调整可视化的各个方面
下面通过定制来改善这个图形的可读性,如下所示:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STFangsong']
squares = [1,4,9,16,25]
plt.plot(squares,linewidth=5)
#设置图表标题,并给坐标轴加上标签
plt.title('示例折线图',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
#设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
plt.show()
参数linewidth决定了plot()绘制的线条粗细,函数title()给图表指定标题
这里我使用的华文仿宋字体显示中文,代码见上
fontsize指定了图表中文字的大小
函数xlabel()和ylabel()为每条轴设置标题
函数tick_params()设置刻度的样式
其中指定的实参将影响x轴和y轴上的刻度(axis='both')
并将刻度标记的字号设置为14(labelsize=14)
最终显示如下:
3.校正图形
通过图像可以看到,我们没有正确绘制数据,x,y轴数据没有一一对应
下面来修复这个问题
当你向plot()提供一系列数字时,它假设第一个数据点对应的x坐标值为0
但我们的第一个点对应的x值为1,为改变这种默认行为
我们可以给plot()同时提供输入值和输出值
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STFangsong']
input_values = [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth=5)
#设置图表标题,并给坐标轴加上标签
plt.title('示例折线图',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
#设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
plt.show()
现在plot()将正确地绘制,因为我们同时提供了输入值和输出值
它无需对输出值的生成方式作出假设,最终图形是正确的
使用plot()时可指定各种实参,还可使用众多函数对图形进行定制
4.使用scatter()绘制散点图并设置其样式
有时候,需要绘制散点图并设置各个数据点的样式
例如,你可能想以一种颜色显示较小的值
而用另一个颜色显示较大的值,绘制大型数据集时
你还可以对每个点都设置同样的样式,再使用不同的样式选项重新绘制某些点
以突出它们
要绘制单个点,可使用函数scatter(),并向它传递一对x和y坐标
它将在指定位置绘制一个点:
import matplotlib.pyplot as plt
plt.scatter(2,4)
plt.show()
如图:
下面来设置输出样式,使其更有趣:添加标题,给轴加上标签
并确保所有文本都大到能够看清:
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['STFangsong']
plt.scatter(2,4,s=200)
#设置图表标题,并给坐标轴加上标签
plt.title('示例折线图',fontsize=24)
plt.xlabel('value',fontsize=14)
plt.ylabel('square of value',fontsize=14)
#设置刻度标记的大小
plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()
我们调用了scatter(),并使用实参s设置了绘制图形时使用的点的尺寸
如图: