python小白联盟numpy&pandas&matlaplib

来来来!学matplotlib之箱线图

2018-09-22  本文已影响22人  雨路浅歌

大家好,今天和大家一起来学习一种比较少见的图形——箱线图,人如,哦,不不,图如其名,这家伙长这样。

因为不知道大家对这种图熟不熟悉,为了照顾不太熟悉的童鞋,我就在上面标注了几个重要位置的名称(可能不太准确,不过都大同小异)。我只介绍上下四分位线和异常点,其它的几个就不作介绍了,毕竟不是很难,大家应该也都了解了。当然,我不会开篇就介绍这个,大家应该都知道我的风格,我喜欢把知识点穿插到文章当中逐个介绍。

好了,不说废话了,下面开始学习箱线图。和以往一样,先给大家展示一个最简单的图形骨架。

从上图中可以看出,这组数据没有异常点,上下四分位线分别是4和2,下面给大家介绍四分位线的计算方法。

假设数据个数是n。

下四分位线:将数据从小到大排列,第(n+3)/4个数就是下四分位线。

上四分位线:将数据从小到大排列,第(3n+1)/4个数就是上四分位线。

可能有人就要问了,那如果(n+3)/4或(3n+1)/4不是整数怎么办?这就比较复杂了,因为涉及到权重的问题,我给大家举个例子吧。

比如数据是[1,2,3,5,6,8]。很显然(n+3)/4=9/4=2.25,不是一个整数,所以就要使用权重来确定下四分位线了,因为2.25在2和3之间而且距离2比较近,所以第二个数的权重比较大,它的权重是1-0.25=0.75,而第三个数的权重是0.25,所以下四分位线是2*0.75+3*0.25=2.25,同理可求得上四分位线是5.75,我们来验证一下结果。

很显然,我们的结果是正确的。

对箱子进行修饰

注意此时patch_artist必须设置为True,否则报错。哦哦,差点忘记说了,showmeans是用来显示平均值的。

对平均值进行修饰

设置meanline的值为True,将平均值的显示方式变为线型

对中位数进行修饰

异常值

上面我们都没有提到过异常值,现在我们来开始学习异常值。

在上面的示例中,我故意设置两个异常值,分别是1.9和18.1,可以看到分别和它们非常接近的2和18并不是异常值,很多读者可能已经猜到了,2和18其实是异常值的临界点。那这个临界点是怎么算出来的呢?往下看吧。

通过公式我们可以算出上下四分位线分别是12和8,我们用Q3和Q1来分别代表上四分位线和下四分位线,则范围在[2.5Q1-1.5Q3,2.5Q3-1.5Q1]之外的点即为异常点,在本数据中,异常点的范围是[2,18]之外。

对异常点进行修饰

将箱线图水平放置

绘制一组箱线图

修改箱子宽度以及自定义标签(默认值是1,2,3……)

抛一个比较完整的示例。

那好,今天就到这,改天聊。

python小白联盟
上一篇下一篇

猜你喜欢

热点阅读