Matplotlib 库使用入门1

  • matplotlib 库的安装与配置
    • 1、安装
    • 2、配置
  • matplotlib 库的常用套路和绘图组件
    • 1、常用套路
    • 2、绘图组件

Matplotlib 是一个非常强大的 Python 绘图库,我们可以使用它将很多数据通过各种静态、动态、交互式图表的形式直观的呈现出来,比如:线图、散点图、条形图、饼图、3D 图形、图形动画等等,并且提供多样化的输出格式。Matplotlib 通常与 NumPy 和 Pandas 等库一起使用, 形成一个强大的科学计算环境,有助于我们通过 Python 学习数据科学、机器学习。
同 Pandas 一样,笔者从本篇开始通过若干篇短文对 matplotlib 经常会用到的函数、方法进行梳理总结。由于 matplotlib 库内容很多、细节很丰富,而我们使用该库方式又常常是根据实际需要临时查阅具体函数,包括具体参数,拿过来用就可以了,所以文章内容将不会很全面,仅提供常用的绘图方式方法。更全面详细的内容可参阅 matplotlib 官网,这里有丰富的案例、用户文档、教程。
本文先介绍 matplotlib 库的安装与配置,常用套路和绘图组件。

matplotlib 库的安装与配置

1、安装

Matplotlib 库的安装很简单,同其他许多 python 库的安装一样,用 pip install matplotlib 命令或者在 Pycharm 中进行连网下载安装即可。需要注意的是,matplotlib 的依赖库包括 numpy、cycler、Pillow、packaging、pyparsing、python-dateutil、fonttools、contourpy、kiwisolver,需要预先安装,不过只要连网后都会自动下载安装。

2、配置

Matplotlib 配置信息是从配置文件中读取的,在配置文件中可以为 matplotlib 几乎所有的属性指定永久有效的默认值。查看和修改配置方法如下,这里重点要设置一下中文的显示,避免画图出现乱码。

import matplotlib as mpmp.__version__    # 查看 matplotlib 的版本,笔者用的是 '3.6.2' 版本
mp.rcParams       # 通过字典查看所有已经加载的配置项
mp.rcParams['lines.color']              # 通过 rcParams 字典查看配置项,笔者这里返回'C0'
mp.rcParams['lines.color'] = 'r'        # 可通过 rcParams 字典修改配置项
help(mp.rc)                             # 通过 help 函数查看帮助文档
mp.rc('lines', linewidth=2, color='r')  # 与 rcParams['lines.linewidth'] = 2 和 rcParams['lines.color'] = 'r' 等价mp.get_configdir()      # 获取当前用户的配置文件目录,'C:\\Users\\DX3906\\.matplotlib'
mp.matplotlib_fname()   # 查看当前使用的配置文件的路径,'C:\\Python38\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'mp.rcParams['font.sans-serif'] = ['SimHei']   # 为了支持中文显示而设置
mp.rcParams['axes.unicode_minus'] = False     # 同上

配置文件的内容常见的有以下几种:

  • axes:设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示。
  • backend:设置目标输出 TkAgg 和 GTKAgg。
  • figure:控制dpi、边界颜色、图像大小和子区(subplot)设置。
  • font:字体(font family)、字体大小和样式设置。
  • grid:设置网格颜色和线型。
  • legend:设置图例以及其中的文本显示。
  • line:设置线条(颜色、线型、宽度等)和标记。
  • patch:填充2D图形图像,如:多边形和圆,控制线宽、颜色、抗锯齿等。
  • savefig:对保存的图形进行单独设置,如:渲染的文件背景为白色。
  • text:设置字体颜色、文本解析(纯文本和 latex 标记)等。
  • verbose:设置 matplotlib 执行期间的信息输出。
  • xticks 和 yticks:为x、y轴主刻度和次刻度设置颜色、大小、方向及标签大小。

matplotlib 库的常用套路和绘图组件

1、常用套路

Matplotlib 库的使用是有常用套路方法的,其步骤如下:

  1. 创建一个 Figure 实例对象 fig,即一块画布
  2. 使用 fig 实例创建一个或者多个 Axes 实例,或者创建一个或者多个 subplot 实例
  3. 使用 Axes 实例的方法来创建 primitive 绘图组件,如:Line2D、Text
  4. 显示图形图像

代码示例如下:

import matplotlib.pyplot as plt       # Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API,模块能够快速地生成图像
import numpy as np
import mathx = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
fig = plt.figure()                    # 创建画布 Figure 实例对象
ax = fig.add_axes([0.2,0.1,0.8,0.8])  # 创建 Axes 实例,将绘图域添加到画布,参数 4 个数字分别对应图形的左侧、底部、宽度、高度,必须介于0到1之间
ax.plot(x,y)                          # 使用 Axes 实例的方法来绘图
ax.set_title("sine wave")             # 设置标题
ax.set_xlabel('angle')                # 设置x轴标签
ax.set_ylabel('sine')                 # 设置y轴标签
plt.show()                            # 显示图形

上述代码绘制的图像如下:

2、绘图组件

在 matplotlib 库中,matplotlib.artist.Artist 类代表了绘图组件,属于高层次的绘图控制,知道如何利用渲染器在绘图区上绘图,我们在绝大部分时候都是与它打交道。该类包括了两种绘图组件:primitive 基础组件,代表了在绘图区域上绘制的 Line2D(如上面例子中的正弦波)、Rectangle、Text(如上面例子中的标题、标签) 以及 AxesImage 等等;container 容器组件,代表了放置primitive 的那些绘图组件,比如 Axis(坐标轴)、Axes(绘图域) 以及 Figure(画布)。具体如图所示:


每个在图形中出现的元素都是绘图组件(Artist)。其属性有:

  • .alpha属性:透明度。值为0-1之间的浮点数
  • .animated属性:一个布尔值,表示是否用于加速动画绘制
  • .axes属性:返回这个Artist所属的axes,可能为None
  • .clip_box属性:用于剪切Artist的bounding box
  • .clip_on属性:是否开启clip
  • .clip_path属性:Artist沿着该path执行clip
  • .contains属性:一个picking function用于测试Artist是否包含 pick point
  • .figure属性:该Artist所属的Figure,可能为None
  • .gid属性:该Artist的id字符串
  • .label:一个text label
  • .transform:转换矩阵
  • .url属性:一个url string,代表本Artist
  • .visible:布尔值,控制Artist是否绘制
  • .zorder:决定了Artist的绘制顺序,越小就越底层越优先绘制。

可以使用 matplotlib.artist.getp(fig) 来一次获取 fig 的所有属性,使用matplotlib.pyplot.getp(fig,"alpha")来获取属性(一次只能返回一个属性),如果指定属性名,则返回对象的该属性值;如果不指定属性名,则返回对象的所有的属性和值。可以用 matplotlib.pyplot.setp(fig, alpha=0.5, zorder=2) 来设置属性(一次可以设置多个)。

以上。

【博学谷学习记录】超强总结,用心分享 | 人工智能常用数据可视化库 matplotlib 入门(1)相关推荐

  1. [博学谷学习记录]超强总结,用心分享|第07节 常用的API-----笔记篇

    目录 1.API 1.1 API概述-帮助文档的使用 1.2 键盘录入字符串 2. String类 2.1 String概述 2.2 String类的构造方法 2.4 创建字符串对象的区别对比 2.5 ...

  2. {博学谷学习记录} 超强总结,用心分享|狂野架构师-前置互联网架构演变过程

    本章以系统架构,数据架构,两种维度来进行讲解 目录 1 系统架构 1,1 单体架构 1.2 中台战略 2 数据库架构 2,1 单体架构 2.2 主从读写 2.3 分库分表 3 总结 1 系统架构 1, ...

  3. [博学谷学习记录]超强总结,用心分享|架构 Nacos入门

    提示:学习笔记 欢迎指点 文章目录 前言 一.Nacos安装 二.Nacos服务注册与发现 1.服务提供者Provider 2.服务消费者Consumer 三.Nacos作为配置中心 前言 Nacos ...

  4. [博学谷学习记录]超强总结,用心分享|架构 敏捷 - 开发管理之道

    提示:学习笔记 欢迎指点 文章目录 1.敏捷开发思想之道 2.面向对象开发之道 3.敏捷学习之道 1.敏捷开发思想之道 一名敏捷开发者,敏捷思想的掌握自然首当其冲.在敏捷开发实施的过程中,我们虽然不是 ...

  5. [博学谷学习记录]超强总结,用心分享|第16节 集合续-----笔记篇

    目录 1.HashSet集合 1.1HashSet集合概述和特点[应用] 1.2HashSet集合的基本应用[应用] 1.3哈希值[理解] 1.4哈希表结构[理解] 1.5HashSet集合存储学生对 ...

  6. [博学谷学习记录] 超强总结,用心分享|陌陌综合案例

    注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flin ...

  7. [博学谷学习记录]超强总结,用心分享|Hive的压缩格式

    压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate 否 Gzip gzip DEFAULT .gz 否 bzip2 bzip2 bzip2 .bz2 是 ...

  8. [博学谷学习记录]超强总结,用心分享|软件测试之计算机基础(一)

    本周开始学习软件测试,而我也即将开始在平台记录我的学习之路.我会把我的个人心得及掌握的知识发布在此平台,俗话说最好的输入就是输出,希望在输出的同时能有更多的收获,也希望与大家多多交流. 为了更好的学习 ...

  9. [博学谷学习记录]超强总结,用心分享|人工智能机械学习基础知识线性回归总结分享

    1.线性回归的核心是参数学习,线性回归和回归方程(函数)有关 2.线性回归是目标值预期是输入变量的线性组合 3.欠拟合的产生原因是学习到数据的特征过少 4.多元线性回归中的"线性" ...

  10. [博学谷学习记录] 超强总结,用心分享|JavaEE就业课-尊享无忧+Java基础语法|面向对象(1wk)

    学习笔记目录 目录 学习笔记目录 前言 一.变量 1. 关键字:被java赋予特殊含义的字符 2. 常量:不会发生改变的量(数据)​编辑 3. 变量:内存中的存储空间. 4. 类型转换 5. 算术运算 ...

最新文章

  1. C/C++编程笔记:数据结构二叉树的查找(前序、中序、后序、层序遍历)
  2. python统计行号_用Python实现两个文件的不同行的编号
  3. 【实例解析】某水泥企业应用商业智能提升管理效率
  4. python方法测试怀孕_在Python中测试私有方法(例外)
  5. Java jna 中控考勤机_中控考勤机开发 jacob 实现监听
  6. Projector 远程访问 pycharm IDE
  7. 测试用例之因果图分析法
  8. 【ACM】算法竞赛及OJ题面常用英文单词整理(更新ing)
  9. 解压软件Bandizip
  10. THREE将左键改为平移右键改为旋转
  11. Python编程:从入门到实践-第七章:用户输入和while循环(语法)
  12. 【opencv-python角度测量】
  13. LeetCode 1.Minimum Path Sum 2.Unique Paths I and II
  14. [转载]大数据量,海量数据 处理方法总结 作者phylips@bmy
  15. C/C++实现聊天室(详解版)
  16. 计蒜客python答案Top50
  17. 针对直播痛点的关键技术解析——首帧秒开、清晰度、流畅度
  18. shell那点事儿——运维工程师必会shell知识
  19. 在Windows和Linux系统上,用C语言实现命令行下输入密码回显星号和完全隐藏密码
  20. 麒麟处理器是基于arm的吗_为何华为海思麒麟处理器、高通、联发科等都要用到ARM的构架?...

热门文章

  1. Cb Vc 经典大讨论(很长的一篇文章!)?
  2. [易飞]一张领料单单身仓库quot;飞了quot;引起的思考
  3. shopify 与国内第三方建站服务平台的比较(店匠、shopline、shopyy、ueeshop)
  4. 林轩田机器学习基石5笔记:训练和测试的不同
  5. Web前端零基础入门HTML5+CSS3学习笔记补充
  6. 在中国搞定粉丝秘笈:如何创造粉丝经济
  7. mac下关闭Chrome的自动更新
  8. 推荐个电脑桌面便签软件工具:好用便签,简单、免费、无广告、电脑手机同步、支持团队共享,用来做桌面便签笔记、备忘录、待办日程任务清单很多。
  9. 【第十一篇】字体设置css变形(transfom)4种
  10. Qt与Matlab混合编程中mwArray数组使用详解