条形图
如果说通过直方图可以看到变量的数值分布,那么条形图可以帮我们查看类别的特征。在条形图中,长条形的长度表示类别的频数,宽度表示类别。
在Matplotlib中,我们使用plt.bar(x, height)函数,其中参数x代表x轴的位置序列,height是y轴的数值序列,也就是柱子的高度。
在Seaborn中,我们使用sns.barplot(x=None, y=None, data=None)函数。其中参数data为DataFrame类型,x、y是data中的变量。
1 |
x =["cat1","cat2","cat3","cat4","cat5"] |
我们创建了x、y两个数组,分别代表类别和类别的频数,然后用Matplotlib和Seaborn进行条形图的显示,结果如下:
箱线图
箱线图,又称盒式图,它是在1977年提出的,由五个数值点组成:最大值(max)、最小值(min)、中位数(median)和上下四分位数(Q3, Q1)。它可以帮我们分析出数据的差异性、离散程度和异常值等。
在Matplotlib中,我们使用plt.boxplot(x, labels=None)函数,其中参数x代表要绘制箱线图的数据,labels是缺省值,可以为箱线图添加标签。
在Seaborn中,我们使用sns.boxplot(x=None, y=None, data=None)函数。其中参数data为DataFrame类型,x、y是data中的变量。
1 |
data = np.random.normal(size=(10,4)) |
这段代码中,我生成0-1之间的10*4维度数据,然后分别用Matplotlib和Seaborn进行箱线图的展示,结果如下。
饼图
饼图是常用的统计学模块,可以显示每个部分大小与总和之间的比例。在Python数据可视化中,它用的不算多。我们主要采用Matplotlib的pie函数实现它。
在Matplotlib中,我们使用plt.pie(x, labels=None)函数,其中参数x代表要绘制饼图的数据,labels是缺省值,可以为饼图添加标签。
这里我设置了lables数组,分别代表高中、本科、硕士、博士和其他几种学历的分类标签。nums代表这些学历对应的人数。
1 |
nums = [25,37,33,37,6] |
通过Matplotlib的pie函数,我们可以得出下面的饼图:
热力图
热力图,英文叫heat map,是一种矩阵表示方法,其中矩阵中的元素值用颜色来代表,不同的颜色代表不同大小的值。通过颜色就能直观地知道某个位置上数值的大小。另外你也可以将这个位置上的颜色,与数据集中的其他位置颜色进行比较。
热力图是一种非常直观的多元变量分析方法。
我们一般使用Seaborn中的sns.heatmap(data)函数,其中data代表需要绘制的热力图数据。
这里我们使用Seaborn中自带的数据集flights,该数据集记录了1949年到1960年期间,每个月的航班乘客的数量。
1 |
flights = sns.load_dataset("flights") |
通过seaborn的heatmap函数,我们可以观察到不同年份,不同月份的乘客数量变化情况,其中颜色越浅的代表乘客数量越多,如下图所示:
蜘蛛图
蜘蛛图是一种显示一对多关系的方法。在蜘蛛图中,一个变量相对于另一个变量的显著性是清晰可见的。
假设我们想要给王者荣耀的玩家做一个战力图,指标一共包括推进、KDA、生存、团战、发育和输出。那该如何做呢?
这里我们需要使用Matplotlib来进行画图,首先设置两个数组:labels和stats。他们分别保存了这些属性的名称和属性值。
因为蜘蛛图是一个圆形,你需要计算每个坐标的角度,然后对这些数值进行设置。当画完最后一个点后,需要与第一个点进行连线。
因为需要计算角度,所以我们要准备angles数组;又因为需要设定统计结果的数值,所以我们要设定stats数组。并且需要在原有angles和stats数组上增加一位,也就是添加数组的第一个元素。
1 |
labels=np.array([u"推进","KDA",u"生存",u"团战",u"发育",u"输出"]) |
代码中flt.figure是创建一个空白的figure对象,这样做的目的相当于画画前先准备一个空白的画板。然后add_subplot(111)可以把画板划分成1行1列。再用ax.plot和ax.fill进行连线以及给图形上色。最后我们在相应的位置上显示出属性名。