matplotlib柱状图上方显示数据_可视化技能之Matplotlib(上)|可视化系列01

本文详细介绍了Python的可视化库Matplotlib,包括其基础图表绘制、图表元素调校、组合图和子图的创建。文章通过实例展示了如何绘制散点图、柱状图、条形图、饼图和直方图,并讨论了如何在柱状图上方显示数据。此外,还探讨了面向对象的接口和plt.plot()的快速绘图方式,以及如何通过调整参数实现瀑布图和矩阵图等复杂图表。
摘要由CSDN通过智能技术生成

6f5441291a81f79c4f6bf8d31a67def3.gif

     作者:蜇虫适航

     来源:蜇虫适航

Matplotlib可以说是Python最声名远扬的可视化库了,也是Python数据分析库的“三驾马车”之一。Matplotlib是基础而非常强大的可视化库,Seaborn等好用的可视化库是在前者的基础上进行的封装。Matplotlib擅长快速出简单的图、有丰富的接口进行精细化绘图、和Numpy结合做科学可视化及三维图配合默契、三维图。但也有些缺点,如不容易基于实用目的绘制有一定难度的图表(如小提琴图等)、标签等元素需指定坐标而不能自适应优化显示、难以实现交互。

官网[1]说:

Matplotlib tries to make easy things easy and hard things possible.

越用越认可这句话,Matplotlib非常强大,Hard things是possible但并非easy and fast。

可视化基础框架

对于一个数据表df(通过pandas读入为DataFrame)来说,用Matplotlib对其进行可视化的基础框架为:

fig, ax = plt.subplots()ax.plot(df['x'],df['y'])

通过上面几行代码就可以画出df表周一到周五y指标的变化折线。

31e8f831b1219e81ff87e79c3963281d.png

折线图绘制示例

Matplotlib其实为作图提供了两套可视化接口,分别为:

plt.plot()系列•fig, ax = plt.subplots(); ax.plot() 系列

根据官网教程,分别对应MATLAB的陈述式语法和面向对象写法,具体可参考tutorials:lifecycle.html[2] ,

个人理解,plt.plot()适合用于快速出图,读入一个数据表后想快速知道数据分布、指标关系等,通过plt.plot()系列语句直接出图,而ax.plot()更方便用来精细绘图,接口对各种图表元素的编辑很友好。

在Matplotlib官网搜索,通常能看到两套接口,如搜绘制饼图的关键词pie,结果中的axes.Axes.pie对应ax.pie()的用法,pyplot.pie对应plt.pie()的函数接口。

1aaef9b2a461b6db4e85c0177e79103a.png

两套接口

ax.×××()的写法看起来要写的语句多些,但这种面向对象(object-oriented)的写法通过fig, ax = plt.subplots()建立画布(figure)和定义轴域(axes),能更明确在哪作画和映射规则,给用户更大的自由度和更精细的调参能力。Axes包含了一套坐标轴(axis),确定了x/y坐标轴之后,数值再确定对应坐标,也就唯一确定了所在位置(这是二维情况下,更高维度就会对应着更多的axis),散点图是去确定点在轴域下的位置,柱状图是确定每个柱柱所在的位置,因此一套Axes就确定了唯一的独立的图,一个画布可以有多套Axes。更具体的辨析可读姚太多啊的一篇文章[3],简单说就是ax.×××()更方便调细节,初学者尽量避免用plt.×××系列来画图。

基础图表绘制

数据可视化从目的来说,是为了更直观展示数据或数据之间的对比、分布或关联关系。散点图、折线图、柱状图、条形图、饼图、直方图是非常常用而基础的可视化图。个人认为通过画这几种基础图并调细节是很好的学可视化实践。

588cedf400654c4111910fdd583907ea.png

将数据映射为可视图表

为了整体的美观和一致性,本文都用了一套自定义配色,通过mpl.rcParams["axes.prop_cycle"] = mpl.cycler('color', ['1EAFAE', 'A3FFFF', '69FFFF']) 语句实现简单改配色,具体关于mpl.rcParams后面再展开。

画散点图可以用两种主要的方法,scatter(x,y)plot(x,y,'o') 。通过ax.scatter(x,y)绘制以x为横坐标,y为纵坐标的散点图,scatter的重要参数如下:

x,y:对应着x轴和y轴的数据,散点画在坐标轴里的[xi,yi]处。•s,c,alpha: 对应散点大小(size)、颜色(color)、透明度,都可以传一个和点数量相同长度的数组,如s=df['z']可以做气泡图,一般气泡图为了防止遮盖问题,通常设置一定的透明度,alpha的范围为0到1。c='#BA5C25'设置点颜色,c赋值为一个数组可以做出每个点一个颜色的效果。•marker:设置点的形状;•cmap:颜色映射;•norm:当颜色c为一组浮点数时,把值标准化到[0,1]做颜色映射,vminvamx参数是结合 norm 来用的;

831f8e78ced46d210a39a863ba7807b2.png

散点图参数示例

ax.plot(x,y,'o')也可以画散点图,ax.plot()核心是绘制坐标系下的点和点之间的连线的,当突出点的大小而省略线时,就是散点图了,同样突出线就变成了折线图。通过fmt(也就是format_string)参数来控制这些,包括点的形状、颜色、线的风格颜色等。折线图基础绘制效果可回看上一部分可视化基础框架

plot()的常用参数如下:

x,y: x轴和y轴的数据,当plot()只有一个输入列表或数组时,参数被当做y轴,也就是value,x轴以索引自动生成,也就是ax.plot(y)相当于ax.plot(range(len(y)),y);•fmt: 控制x,y绘制的折线的点形状、颜色、线的风格、颜色,fmt参数可分类为三种:颜色字符、风格字符和标记字符[4];•其他的lines.Line2D支持的属性, 如color控制线颜色,marker控制点形状,linestyle控制线风格类型及linewidth控制线宽等,如果既设置了fmt又指定了color呢?可以实践一下,线的颜色会根据color属性最终显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值