图表是数据可视化最基础的应用
一、常见的图表
1.折线图
将数据标注成点,并通过直线将这些点按某种顺序连接成的图表,适用于反映具有固定时间间隔的数据的变化趋势的场景,例如股票分析、天气预报等。
2.柱形图
由一系列宽度相等的纵向矩形条组成的图表,适用于中小规模数据集的各分类之间比较的场景。
3.条形图
是横置的柱形图,由一系列高度相等、长短不一的横向矩形条组成,适用于矩形条数量较多的场合。
4.堆积图
分为堆积面积图(由若干折线与折线或水平坐标轴之间的填充区域组成的图表,反映整体与部分的关系)、堆积柱形图和堆积条形图(由若干个以颜色或线条填充、高度不一的纵向矩形条或横向矩形条堆叠而成的图表,反映每个构成部分在总体中的比重)。
5.直方图
又称质量分布图,是由一系列高低不等的纵向矩形条或线段组成的图表,用于反映数据的分布和波动情况,通常将连续型数据分割成若干个不重叠的值范围分段将每个范围分段中统计的值频率作为y轴的数据。
注意:柱形图与直方图的区别
柱形图用于展示离散型数据(记录不同类别的数据)的分布,而直方图用于展示连续型数据(一定区间内连续数值所组成的数据)的分布;柱形图的各矩形条之间具有固定的间隙,而直方图的各矩形条之间没有任何间隙。
6.箱形图
又称盒须图、箱线图,是一种利用数据的5个统计量(最小值、下四分位数、中位数、上四分位数和最大值)描述数据的图表,主要用于反映一组或多组数据的对称性、分布程度等信息。能够识别异常值、判断偏态与尾重、比较数据形状,使用与品质管理的场景。例如不同厂家所产地毯的耐用性比较图。
7.饼图
由若干个面积大小不一、以条形或颜色填充的扇形组成的圆形图表,主要用于显示数据中各项大小与各项总和的比例,适用于快速了解整体数据中各项数据分配情况的场景。
8.散点图
又称X-Y图,由若干个数据点组成的图表,用于判断两变量之间是否存在某种关联,或者总结数据点的分布模式。
9.气泡图
是散点图的变形,是一种能够展示多变量关系的图表,使用两个变量标注气泡在坐标系中的位置,使用第三个变量标注气泡的面积,适用于分类数据对比、多变量相关性等情况,常见于财务数据分析中。
10.误差棒图
使用误差棒标明被测量数据的不确定度大小的图表,用于表示测量数据中客观存在的测量误差(标准差或标准误差),误差棒图中误差棒是以被测量数据的平均值为中点,在表示测量值大小的方向上画出的一条线段,线段长度的一半为不确定度。
11.雷达图
又称蜘蛛网图、形状图、极区图,由一组坐标轴和多个等距同心圆或多边形组成,是一种表现多维(4维以上)数据的图表,适用于对多指标对象做出全局性、整体性评价的场景,常见于企业经营状况的评价和财务分析。
12.统计地图
是一种以地图为背景,使用各种线纹、色彩、几何图形或实物形象标注指标数值及其在不同地理位置的分布状况的图表,主要用于说明某种现象在地域上的分布,适用于比较人口、资源、产量等在各地区的分布情况。
13.3D图表
是在三维坐标系中呈现数据的图表,可仿真多种场景。
二、选择正确的数据可视化图表
选择图表之前,要明确数据的逻辑关系,可分为4种:比较、分布、构成和联系。
1.比较关系
主要关注数据中各类别或时间变化的情况
2.分布关系
主要关注不同数值范围内包含数据量的情况。
3.构成关系
主要关注各部分与整体占比的情况
4.联系关系
主要关注两个及两个以上的变量之间关系的情况。
三、matplotlib概述
主要用于绘制2D图表的Python库,支持numpy、pandas的数据结构,具有丰富的绘制图表、定制图表元素(图例、注释文本、表格等)或样式(如颜色、字体、线型等)的功能,可以帮助开发人员轻松获得高质量图表,也可用于绘制一些3D图表。是一个面向对象的绘图库,所绘制的图表元素均对应一个对象,提供了3种API:pyplot、object-oriented、pylab
四、编程练习
编写程序,分别采用面向对象和面向函数两种方式绘制正弦曲线和余弦曲线。
#面向对象的方式
import numpy as np
import matplotlib.pyplot as plt
x_data = np.linspace(-np.pi,np.pi,256,endpoint = True)
y_sin,y_cos = np.sin(x_data),np.cos(x_data)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x_data,y_sin)
ax.plot(x_data,y_cos)
plt.show()
#面向函数的方式
import numpy as np
import matplotlib.pyplot as plt
x_data = np.linspace(-np.pi,np.pi,256,endpoint = True)
y_sin,y_cos = np.sin(x_data),np.cos(x_data)
plt.plot(x_data,y_sin)
plt.plot(x_data,y_cos)
plt.show()