Python数据可视化三部曲之 Matplotlib 从上手到上头,阿里、百度、美团、携程、蚂蚁面经分享

  • 1.plot()方法基本

    • 1.1 方法概述
  • 1.2 不设置x时

  • 1.3 x中元素的顺序

  • 2.设置坐标轴范围 plt.xlim() & plt.ylim()

  • 3.设置坐标标签 plt.xticks() & plt.yticks()

  • 4.负号正常显示 与 中文正常显示 问题

  • 5. 设置坐标 轴 标签 plt.xlabel() & plt.ylabel()

  • 6.增加标题 plt.title()

  • 7.增加图例 和 网格 plt.legend() & plt.grid()

  • 8. 设置样式(颜色,线条,标记)

    • 8.1 线条颜色 color
  • 8.2 线条样式 linestyle

  • 8.3 标记样式 maker

  • 8.4 线条宽度 linewidth

  • 8.5 标记的样式

  • 8.6 样式使用示例

  • 9.面向对象绘图

    • 9.1 面向对象绘图 - 创建画布对象
  • 9.2 创建Axes对象

  • 9.3 常用面向对象绘图方法

  • 10.matplotlib进阶学习

    • (一)给图像添加 文本标签 与 注释
  • (二)subplots_adjust()方法解决图表与画布的间距问题

  • (三)直方图的绘制

  • (四)单柱柱形图与多柱柱形图的绘制

  • (五)绘制饼形图专题(从一般饼状图到内嵌环形图)

  • (六)绘制面积图&热力图

  • (七)绘制箱线图 与 异常值的输出

  • (八)双y轴图像实现

  • (九)绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)

  • (十)绘制渐变色扇形图 -基于 颜色地图plt.cm模块儿

  • (十一)实现 等高线图


ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ

在这里插入图片描述请添加图片描述请添加图片描述请添加图片描述在这里插入图片描述

ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ


大家好,我是侯小啾!

本次blog,将为大家串讲一遍python的三大数据可视化库之一 —— matplotlib库。本篇博客侧重于基本功与面向对象绘图,更多细节小啾将在其他blog中分块儿呈现。


–安装命令–

============================================================================

pip install matplotlib


1.plot()方法基本

==================================================================================

1.1 方法概述


plot()方法是最常用的方法之一,Matplotlib绘图基本主要使用plot()函数。其通常用来绘制折线图,也可以用来绘制散点图。

因为plot()方法的构造过于复杂,很难一次将所有的参数将清楚。所以这里分块进行,按照功能来一步一步解析。plot()每多设定一个参数,每多一个plt命令,图像就会多一部分细节。

plot(x,y,format_string,**kwargs)

这里暂先展示一小部分参数,

其中

参数x

x 指x轴的数据 可以是一个列表,元组,Series等。也可以是range对象。

参数y

指的y轴的数据,可以选择的格式同x:可以是一个列表,元组,Series等。也可以是range对象。。

参数format_string

指的是控制曲线格式的字符串

**kwargs

通过**kwargs可以传入键值参数。

1.2 不设置x时


当不设置x时,x轴默认为0,1,2…这样的数值类型。

import matplotlib.pyplot as plt

plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])

plt.show()

在这里插入图片描述


1.3 x中元素的顺序


绘图时,绘图的顺序与x内数值本身的大小无关,数值在x中的顺序,即为绘图的先后顺序。

如:

import matplotlib.pyplot as plt

plt.plot([2, 1, 3, 4, 5], [2, 5, 8, 12, 18])

plt.show()

在这里插入图片描述

即绘制此折线图时,先绘制了(2,2)点,再绘制了(1,5)点,接着绘制了(3, 8)点。


在x中,只要存在一个数据是字符串类型,则x中所有的元素都视为字符串,这些元素在图像中不再有大小之分。

代码示例如下:

import matplotlib.pyplot as plt

plt.plot([3, 1, ‘2’, 4, 5], [2, 8, 12, 5, 9])

plt.show()

在这里插入图片描述


2.设置坐标轴范围 plt.xlim() & plt.ylim()

=======================================================================================================

plt.ylim() 设置y轴范围。

plt.xlim() 设置x轴范围。

import matplotlib.pyplot as plt

plt.plot([1, 1, 0, 0, -1, 0, 1, 1, -1])

plt.ylim(-3, 3)

plt.xlim(-10, 20)

plt.show()

在这里插入图片描述


3.设置坐标标签 plt.xticks() & plt.yticks()

==========================================================================================================

设置标签,即可以将plot()中传入的x、y的元素值在坐标轴中以其他形式显示出来。

具体方法为

plt.xticks(location, lables,rotation)

plt.yticks(location, lables,rotation)

其中,location表示原x/y轴的数据(而不是位置索引下标),lables指新设定的标签,元素数量要与location相同,且与location相同位置上有着一一对应的关系。

rotation参数通过设定一个角度的数值,可以将设定的标签旋转一定的角度。(示例代码中将x轴标签旋转45度)

且在设置标签过程中,标签可以选择设置部分。没有设置的标签也不会再显示原值。(如下边代码中没有设置x轴上数值“2”处的标签)

具体示例如下:

import matplotlib.pyplot as plt

正常显示中文

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]

plt.plot([1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 1, 0, 0, -1, 0, 1, 1, -1])

plt.ylim(-3, 3)

plt.xlim(-10, 20)

plt.xticks([1, 3, 4, 5, 6, 7, 8, 9],

[‘02-01’, ‘02-03’, ‘02-04’,

‘02-05’, ‘02-06’, ‘02-07’, ‘02-08’,

‘02-09’], rotation=45)

plt.yticks([0, 1, -1], [‘低’, ‘高’, ‘中’])

plt.show()

在这里插入图片描述


4.负号正常显示 与 中文正常显示 问题

==========================================================================================

负号正常显示

rcParams 是Matplotlib库中pyplot包绘图的参数字典,key为’axes.unicode_minus’的默认取值(value)为True,表示unicode的minus类型,有些字体对其兼容性支持不够,导致负号无法正常显示,现在将’axex.unicode_minus’的取值设为False,则可正常显示负号。

代码:

plt.rcParams[‘axes.unicode_minus’] = False


中文正常显示

默认情况下,图形中的中文为乱码形式

每次绘图前,通过代码更改参数。更改Matplotlib包中pyplot包的参数字(rcParams)字体的无衬线字体属性(font.sans-serif, 为参数字典的一个key)的取值(value),现将其设定为以’SimHei’为元素的数组形式。

代码:

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]


5. 设置坐标 轴 标签 plt.xlabel() & plt.ylabel()

===============================================================================================================

在图像中添加坐标轴标题可以直观地显示坐标轴代表的数据变量。

plt.xlabel()

plt.ylabel()

import matplotlib.pyplot as plt

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]

plt.plot([1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 1, 0, 0, -1, 0, 1, 1, -1])

plt.xticks([1, 2, 3, 4, 5, 6, 7, 8, 9],

[‘02-01’, ‘02-02’, ‘02-03’, ‘02-04’,

‘02-05’, ‘02-06’, ‘02-07’, ‘02-08’,

‘02-09’], rotation=45)

plt.yticks([0, 1, -1], [‘低’, ‘高’, ‘中’])

plt.xlabel(‘日期’)

plt.ylabel(‘A指标’)

plt.show()

在这里插入图片描述


6.增加标题 plt.title()

========================================================================================

plt.title()

import matplotlib.pyplot as plt

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]

plt.title(‘xxxxxxxxxxx图像’)

plt.plot([1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 1, 0, 0, -1, 0, 1, 1, -1])

plt.xticks([1, 2, 3, 4, 5, 6, 7, 8, 9],

[‘02-01’, ‘02-02’, ‘02-03’, ‘02-04’,

‘02-05’, ‘02-06’, ‘02-07’, ‘02-08’,

‘02-09’], rotation=45)

plt.yticks([0, 1, -1], [‘低’, ‘高’, ‘中’])

plt.xlabel(‘日期’)

plt.ylabel(‘A指标’)

plt.show()

在这里插入图片描述


7.增加图例 和 网格 plt.legend() & plt.grid()

===========================================================================================================

增加图例可以通过plt.plot()方法的label参数添加,也可以通过plt.legend()添加。

增加网格通过plt.grid()方法添加。

plt.legend()

第一个参数是一个可迭代对象,其元素为表示图例的字符串,其传入时的顺序与上边代码中线条绘制的顺序一一对应。

第二个参数是loc参数,表示图例显示的位置。

第三个参数为字体大小fontsize。

plt.grid(b=None,which=‘major’, axis=‘both’, **kwargs)

参数b:

布尔数据类型,设定是否显示grid。默认为None,不显示。如需显示,则将B设定为True。

参数which:

设定 分割标示线(tick) 的类型,取值为"major", “minor"或者"both”。

默认为"major",表示以原本坐标轴分割标示线为准;

若取值为"minor",则表示 进一步细分 坐标轴分割标示线,但是 分割标准要提前设定好。如果只是设定值为"minor",则图形不会显示grid。

“both"表示大小区间坐标轴分割线都有。

参数axis:

制定绘制grid的坐标轴,取值为"both”(default), “x”, 或者"y"。both表示X轴和Y轴的grid都绘制。 默认都绘制。

import matplotlib.pyplot as plt

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]

plt.rcParams[‘axes.unicode_minus’] = False

plt.plot([5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31], label=‘股票A收盘价’)

plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25], label=‘股票B收盘价’)

plt.xticks(range(9), [

‘2021-02-01’, ‘2021-02-02’, ‘2021-02-03’, ‘2021-02-04’,

‘2021-02-05’, ‘2021-02-06’, ‘2021-02-07’, ‘2021-02-08’,

‘2021-02-09’], rotation=45)

plt.title(‘某股票收盘价时序图’)

plt.xlabel(‘日期’)

plt.ylabel(‘价格’)

plt.grid(True, axis=‘y’)

plt.legend()

plt.show()

在这里插入图片描述


8. 设置样式(颜色,线条,标记)

========================================================================================

8.1 线条颜色 color


修改图形的颜色通过设定plot()的color参数来实现,color参数也可以简写为c。

颜色的取值有多种方式指定,最常用的是直接设定颜色的名称或颜色名称的简写,也可以通过RGB数组(比如(1,1,0)等其他方式设定)。

常用的颜色简写有

| 颜色 | 简写 | 英文 |

| — | — | — |

| 蓝色 | b | blue |

| 红色 | r | red |

| 绿色 | g | green |

| 黄色 | y | yellow |

| 黑色 | k | black |

| 白色 | w | white |

| 洋红色(也称品红色) | m | magenta |

| 蓝绿色(即青色) | c | cyan |

此外,常用颜色还可以选择的有brown,purple,pink,orange,olive,gold,gray等。


8.2 线条样式 linestyle


plot()函数中的linestyle参数用于设定曲线的类型。为了书写方便,有时会用ls代替linestyle, 该参数的主要取值如表所示:

线条类型可能的取值有

| 类型 | 名称取值 | 符号取值 |

| — | — | — |

| 实线 | ‘solid’ | ‘-’ |

| 虚线(也称双画线) | ‘dashed’ | ‘—’ (两个短杠) |

| 线点 | ‘dashdot’ | ‘-.’ |

| 点线 | ‘dotted’ | ‘:’ |

| 不画线 | ‘None’ | ‘’ |

| 虚线(另一种) | | ‘:’ |


8.3 标记样式 maker


除了线条样式外,还可以设置数据点的形状。数据点形状通过plot()方法的maker参数来设定。maker参数取值有很多,如表所示:

点的形状marker的部分值表

| 形状含义 | 符号取值(marker) |

| — | — |

| 点标记 | . |

| 像素标记 | , |

| 实心圆标记 | o |

| 向下三角形标记 | v |

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注Python获取(资料价值较高,非无偿)
img

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

7.gif#pic_center)

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值