糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Python 数据分析与展示笔记3 -- Matplotlib 库基础

Python 数据分析与展示笔记3 -- Matplotlib 库基础

时间:2022-11-03 22:48:15

相关推荐

Python 数据分析与展示笔记3 -- Matplotlib 库基础

Python 数据分析与展示笔记3 – Matplotlib 库基础

Python 数据分析与展示系列笔记是笔者学习、实践Python 数据分析与展示的相关笔记

课程链接:Python 数据分析与展示

参考文档:

Numpy 官方文档(英文)

Numpy 官方文档(中文)

PIL 官方文档

Matplotlib 官方文档

一、Matplotlib 库

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。

1、安装与导入

# 安装pip install matplotlib# 导入,常用的是他的绘图子模块 pyplotimport matplotlib.pyplot as plt

2、测试

import matplotlib.pyplot as pltplt.plot([2, 1, 4, 5, 3])plt.show()

二、库基本绘图

Matplotlib 绘图默认有一个画布,所有的绘图设置及操作是对同一个画布进行的,多次plot()会产生覆盖

1、绘图函数:plot()

函数原型:

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

参数:

x:X轴数据,列表或数组,可选y:Y轴数据,列表或数组,如果没有给定x,则默认 x 轴的值为对应的 y 的下标format_string:控制曲线的格式字符串,可选**kwargs:多组的(x, y, format_string),绘制多条曲线,各条曲线的x不能省略

format_string:由颜色字符、风格字符和标记字符组成,可自由组合

示例:

import matplotlib.pyplot as pltimport numpy as npa = np.arange(10)plt.plot(a, a*1.5, 'go-', a, a*2.5, 'rx:', a, a*3.5, '*', a, a*4.5, 'b-.')plt.show()

2、坐标图格式控制

# 设置 x,y 轴范围plt.axis([x轴左点,x轴右点,y轴下点,y轴上点])# 网格设置,True为显示网格,默认不显示plt.grid(True)# 显示plt.show()# 保存,PNG格式plt.savefig('图片路径',dpi = 每英寸点数)

3、显示中文

全局设置:修改 rcParams 字典

import matplotlibmatplotlib.rcParams['font.family'] = 'SimHei'matplotlib.rcParams['font.size'] = 20

rcParams 属性中文字体

局部设置:每个需要绘制文字的函数中单独设置文字的相关属性

4、文本显示

plt.annotate(s, xy=arrow_crd, xytext=text_crd, arrowprops=dict)

s:注解的字符串xy:箭头坐标(x, y)xytext:文字坐标(x, y)arrowprops:箭头格式,字典

示例:

import matplotlib.pyplot as pltimport numpy as npa = np.arange(0.0, 5.0, 0.02)plt.plot(a, np.cos(2*np.pi*a))plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=20, color='red')plt.ylabel('纵轴:振幅', fontproperties='SimHei', fontsize=20)plt.title(r'正弦波$y=cos(2\pi x)$', fontproperties='SimHei', fontsize=20)plt.annotate(r'$\mu=100$', xy=(2, 1), xytext=(3, 1.5), fontsize=15,arrowprops=dict(facecolor='black', shrink=0.1, width=2))plt.axis([-1, 6, -2, 2])plt.grid(True)plt.show()

5、绘图区域:划分子图

简单的绘图区域划分:

一次只能选择一个子图,子图的编号从1开始可以重新划分区域,但是选择的子图不能与之前的有交集,否则会覆盖之前的plt.subplot(nrows, ncols, plot_number) nrows:分为几行ncols:分为几列plot_number:当前要绘制的子图号,从左到右从上到下编号

import matplotlib.pyplot as pltimport numpy as npa = np.arange(0.0, 5.0, 0.02)# 第一个子图plt.subplot(211)plt.plot(a, np.cos(a))# 第二个子图plt.subplot(223)plt.plot(a, np.sin(a))# 第三个子图plt.subplot(224)plt.plot(a, a/5)plt.show()

复杂的绘图区域划分:

划分绘图区域网格时,行列的编号都从0开始选择子图时,可以按多行多列区域选中plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1) GridSpec:网格的行列数,元组形式,(rows,cols)CurSpec:选中子图的起始网格坐标,元组形式,(row, col)colspan:子图的长,即列数rowspan:子图的高,即行数

import matplotlib.pyplot as pltimport numpy as npa = np.arange(0.0, 5.0, 0.02)# 第一个子图plt.subplot2grid((2, 3), (0, 0), colspan=3)plt.plot(a, np.cos(a))plt.title('a')# 第二个子图plt.subplot2grid((2, 3), (1, 0), colspan=2)plt.plot(a, np.sin(a))plt.title('b')# 第三个子图plt.subplot2grid((2, 3), (1, 2))plt.plot(a, a/5)plt.title('c')plt.show()

GridSpec 类:

用于复杂的绘图区域划分,子图选择更方便采用切片的方法选择子图

import matplotlib.pyplot as pltimport numpy as npimport matplotlib.gridspec as gsg = gs.GridSpec(2, 3)a = np.arange(0.0, 5.0, 0.02)# 第一个子图ax1 = plt.subplot(g[0, :-1])ax1.plot(a, np.cos(a))# 第二个子图ax2 = plt.subplot(g[0:2, 2])ax2.plot(a, np.sin(a))# 第三个子图ax3 = plt.subplot(g[1, 0])ax3.plot(a, a/5)plt.show()

三、面向对象绘图

Matplotlib绘图可以采用面向对象的方式,即可以创建(实例化)多个画布,分别对不同的画布进行操作,多一个画布可以多次 plot() 不会覆盖

1、创建新画布:plt.figure()

函数原型:

plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)[source]

参数:

num:整数或字符串,可选,默认值:无。画布的编号,如果未提供,将创建新图形,并且图形编号将自动递增。画布对象将此数字保存在 number 属性中。如果提供了num且存在该num的画布,返回对它的引用。如果此画布不存在,则创建并返回画布对象。如果num是一个字符串,则显示画布的窗口标题为 num。figsize:整数元组,可选,默认值:无。单位为英寸。如果未提供,则默认为 rcParams[“figure.figsize”]= [6.4, 4.8]dpi:整数,可选,默认值:无。画布的每英寸点数。如果未提供,则默认为 rcParams[“figure.dpi”]= 100facecolor:背景颜色。如果未提供,则默认为白色 rcParams[“figure.facecolor”]= ‘w’edgecolor:边框颜色。如果未提供,则默认为白色 rcParams[“figure.edgecolor”]= ‘w’。frameon:bool,optional,默认值:True,如果为False,则禁止绘制图框FigureClass:Figure的 子类,(可选)使用自定义Figure实例clear:bool,可选,默认值:False,如果为True并且该图已经存在,那么它将被清除

返回:

返回画布对象如果要创建许多画布,确保明确调用 plt.close() 释放未使用的画布,使pyplot可以正确清理内存rcParams定义的默认值,可以在 matplotlibrc 文件中修改

示例:

import numpy as npimport matplotlib.pyplot as plta = np.arange(0, 5.0, 0.02)# 创建画布fig1 = plt.figure(num='fig', figsize=(6, 4))plt.plot(a, np.cos(a), c="red", label="cos")plt.plot(a, np.sin(a), c="blue", label="sin")# 设置图例的位置plt.legend(loc="best")# 嵌入小图,位置为画布的比例left, bottom, width, height = 0.2, 0.2, 0.2, 0.1ax1 = fig1.add_axes([left, bottom, width, height])ax1.plot(a, a)plt.show()

GOOD LUCK!

如果觉得《Python 数据分析与展示笔记3 -- Matplotlib 库基础》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。