来来来!学matplotlib之柱形图

作者: 雨路浅歌 | 来源:发表于2018-09-11 09:54 被阅读0次

大家好,今天进入新章节的学习,我们来学习matplotlib这个库,想必大家对这个著名的库都有所耳闻,它是python可视化类中在GitHub上提交次数一直处于领先的一个库,在可视化方面有极大的应用。好了,废话不多说,我们下面一步一步地逐层揭开它神秘的面纱,你将看到它就像妙龄女子一样美丽。

起步

我们学习matplotlib主要是学习其中的一个可以说是最重要的模块——pyplot。如果安装了matplotlib的话,直接导入即可。下图是一个可以显示柱状图的最简单的完整骨架。如果遇到中文乱码问题,请参考https://www.zhihu.com/question/25404709,如果图片显示不出来,尝试在第一行添加%matplotlib inline。

上面的程序虽然可以显示柱形图,但是图片过于简陋,下面我们来给它美美颜。设置柱形宽度,颜色,轮廓宽度和轮廓颜色。

上图是横轴标签与柱形图的中间对齐,我们还可以通过设置align属性为edge(边缘对齐)来改变对齐方式,当width为正数时,柱形图左边缘对齐标签,反之则为右边缘对齐标签。

添加柱形图名称和横纵坐标名称、设置bottom属性来改变柱形图底部的纵坐标并修改字体大小。

添加数值以及擦除坐标轴

为柱形图添加数值,通过text方法来添加数字,数字设置为整数,正中心对齐柱形图,底部与柱形图顶部对齐。

上面的部分数字被上面的坐标轴给挡住了,这是我们不能忍受的,当然,我们可以通过ylim方法来增大纵坐标的范围,但是,在这里,我将粗暴地把上面的坐标轴和右边的坐标轴去掉,方法是这样的:通过gca方法获取当前子图,然后把上面和右边的坐标颜色设置为无即可。

柱形图的堆叠

如果想要在一个子图上表示多种性质,就要使用柱形图的堆叠方式,下面表示的是一个人的身高和体重的柱形图。分为左右堆叠和上下堆叠两种方式。

左右堆叠

左右堆叠的思路很简单,只要设置两组柱形图的对齐方式即可。

上下堆叠

上下堆叠的思路也不复杂,将两组柱形图的对齐方式设置为一样即可。

上图的堆叠方式中,红色有部分被绿色部分挡住,如果想要不被挡住,可以通过设置红色部分底部的纵坐标对应等于绿色部分的高度即可。

添加图例以及双纵坐标

上图并没有标明哪个柱形图表示身高,哪个表示体重,这时候就要添加图例来辅助说明,添加图例的方式有很多种,下面我演示的是我个人认为比较简单的一种(其它的大家可以上官网了解),在bar方法中添加一个label属性,然后通过legend方法就可以把图标显示出来,下面的例子中,我在legend方法中设置了很多属性,主要是想要大家认识一下,其实不设置属性也是可以显示图例的。对于这些属性,稍微懂一点英文的都知道这是什么意思,我只解释一下bbox_to_anchor这个属性,可以看到,它是一个元组,第一个数字表示图例上边中心(因为在这里我把位置设置为''upper center'')相对于柱形图横坐标的比值,第二个数字相对于纵坐标的比值。额……再介绍一下loc这个属性吧,它有10个值,分别是八个方位加上中心和best(最佳位置,默认)。0可以表示'best',其它的方位也可以用数字表示,但是这个说实话我记不住。

下面介绍如何设置双纵坐标,其实在这里设置双纵坐标是没有必要的,因为两组数据的纵坐标相差不大,但是为了给大家介绍这个知识点,就不考虑这些了。

简单解释下面的前三行,首先通过figure创建一个画布(暂且这么叫吧),然后在画布上添加一个子图ax1,最后通过twinx方法添加一个与ax1共有x坐标的子图ax2(figure,axes和bar...的包含关系是,figure>axes>bar...)。需要注意的是,在双纵坐标中,如果想要添加图例,两个子图都需要调用legend方法才可,因为它们的位置虽然相同,但其实是两个不同的子图,从体重这个图例就可以看出,我明明设置的是最佳位置,但是他却把身高这个柱形给挡住了,说明它根本不会理会身高的位置,它在乎的是有没有挡住体重这几个柱形。

如果需要把两个图例合并到一起,可以通过fig来整体使用legend方法,因为身高和体重两个子图都是在fig中的。

今天的内容就是这些,谢谢各位的捧场!!!

python小白联盟

相关文章

  • 来来来!学matplotlib之柱形图

    大家好,今天进入新章节的学习,我们来学习matplotlib这个库,想必大家对这个著名的库都有所耳闻,它是pyth...

  • 来来来!学matplotlib之散点图

    这几天太忙了,已经两天没有更新,心想再不更新你们可能就要取关了,吓得我连夜写了这篇小短文。好吧,废话不多说了,开始...

  • 来来来!学matplotlib之箱线图

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

  • 来来来!学matplotlib之饼图

    大家好,好久不见,今天来学习饼图。 还是老规矩,先来画一个非常简单的饼图,在此基础上逐步扩展。注释我都写得很清楚了...

  • 来来来!学matplotlib之折线图

    今天给大家带来的内容是绘制折线图,在进入正题之前,首先来补充条形图的绘制,因为条形图和柱形图的绘制过程基本一致,所...

  • 来来来!学matplotlib之3D图

    最近一直在忙大创的事情,很久都没有写文章了,抱歉哈!今天我们来聊聊matplotlib中的3D图。既然3D图都摆上...

  • matplotlib的使用

    matplotlib.pyplot 绘制线性直线 例如 柱形图、直方图、散点图的绘制 面向对象形式的绘图与饼图的绘...

  • 【python实战】pyecharts绘制PictorialBa

    一直想用matplotlib来画用图片填充的柱形图,但是,摸索了好久都没找到,最后只能转战pyecharts了。 ...

  • Python数据可视化利器Matplotlib,如何绘制横向柱形

    Python绘图库Matplotlib中,横向柱形图主要通过barh函数绘制得到,该函数的使用方法与常见的纵向的柱...

  • Matplotlib和Seaborn之簇状柱形图

    簇状柱形图 为了描绘两个分类变量之间的关系,我们可以将在上节课见到的单变量条形图扩展为簇状柱形图。和标准条形图一样...

网友评论

    本文标题:来来来!学matplotlib之柱形图

    本文链接:https://www.haomeiwen.com/subject/hipygftx.html