作者:Huang supreme
来源:https://blog.csdn.net/weixin_41261833/article/details/104299701

1、核心原理讲解


使用matplotlib绘图的原理,主要就是理解figure(画布)、axes(坐标系)、axis(坐标轴)三者之间的关系。
张三的画板

matplotlib绘图

2、matplotlib库的安装与导入

1)安装

pip install matplotlib

2)导入相关库

现在你不需要关注下面代码具体是什么意思,有一个主观印象即可。我将会在以后的文章中,给大家一一介绍你不懂的哪些参数。

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt# 排除警告信息
import warnings
warnings.filterwarnings("ignore")# 打印版本信息
display(np.__version__)
display(pd.__version__)
display(mpl.__version__)# matplotlib画图常见参数设置
mpl.rcParams["font.family"] = "SimHei" # 设置字体
mpl.rcParams["axes.unicode_minus"]=False # 用来正常显示负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签# 嵌入式显示图形
%matplotlib inline

结果如下:

3、创建figure(画布)的两种方式

1)绘制一个最简单的折线图

import matplotlib as mpl
import matplotlib.pyplot as pltx = [1,3,5,7]
y = [4,9,6,8]
plt.plot(x,y)
plt.show()


结果分析:

在前面的叙述中,我们已经说过,想要使用matplotlib绘图,必须先要创建一个figure(画布)对象,然后还要有axes(坐标系)。但是观察上述代码,我们并没有创建figure对象,那么怎么又可以画图呢?

对于上述疑问,接下来我们就要讲述创建figure(画布)的两种方式。

2)创建figure(画布)的两种方式

  • 隐式创建
  • 显示创建

① 隐式创建figure对象

当第一次执行plt.xxx()这句绘图代码时,系统会去判断是否已经有了figure对象,如果没有,系统会自动创建一个figure对象,并且在这个figure之上,自动创建一个axes坐标系(注意:默认创建一个figure对象,一个axes坐标系)。

也就是说,如果我们不设置figure对象,那么一个figure对象上,只能有一个axes坐标系,即我们只能绘制一个图形。

② 隐式创建figure对象存在的问题

优势:如果只是绘制一个小图形,那么直接使用plt.xxx()的方式,会自动帮我们创建一个figure对象和一个axes坐标系,这个图形最终就是绘制在这个axes坐标系之上的。

劣势:如果我们想要在一个figure对象上,绘制多个图形,那么我们就必须拿到每个axes对象,然后调用每个位置上的axes对象,就可以在每个对应位置的坐标系上,进行绘图,如下图所示。注意:如果figure对象是被默认创建的,那么我们根本拿不到axes对象。因此,需要我们显示创建figure对象。

③ 显示创建figure对象:以后的文章会详细讲述布局设置

# 手动创建一个figure对象
figure = plt.figure()
# 获取每个位置的axes对象
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,2)

如图所示:

举例说明:

figure = plt.figure()
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,2)axes1.plot([1,3,5,7],[4,9,6,8])
axes2.plot([1,2,4,5],[8,4,6,2])
figure.show()

结果如下:

4、完整的绘图步骤

① 导库

import matplotlib as mpl
import matplotlib.pyplot as plt

② 创建figure画布对象

如果绘制一个简单的小图形,我们可以不设置figure对象,使用默认创建的figure对象,
当然我们也可以显示创建figure对象。

如果一张figure画布上,需要绘制多个图形。那么就必须显示的创建figure对象,然后
得到每个位置上的axes对象,进行对应位置上的图形绘制。

③ 根据figure对象进行布局设置

1*1
1*2
2*1
2*2
...

④ 获取对应位置的axes坐标系对象

figure = plt.figure()
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,1)

⑤ 调用axes对象,进行对应位置的图形绘制

这一步,是我们传入数据,进行绘图的一步。对于图形的一些细节设置,都可以在这一步进行。

⑥ 显示图形

    plt.show()或figure.show()如果在pycharm中绘图的话,必须要加这句代码,才能显示。如果在notebook中进行绘图,
可以不用加这句代码,而是自动显示。

5、绘图技巧(细节设置)

* figure 画布
* axes 坐标系,一个画布上可以有多个坐标系
* axis 坐标轴,一个坐标系中可以有多个坐标轴,一般都是二维平面坐标系,或者三维立体坐标系
* title 标题
* legend 图例
* grid 背景网格
* tick 刻度
* axis label 坐标轴名称
* tick label 刻度名称* major tick label 主刻度标签* minor tick label 副刻度标签
* line 线
* style 线条样式
* marker 点标记
* font 字体相关

通过对matplotlib绘图的原理,有所了解之后,我们需要学习的就是常见的matplotlib绘图技巧,常见的绘图技巧如上所示,这些绘图技巧都能够很好的帮助我们画出更美观、更直观的图形。下一节,我将会讲述matplotlib绘图技巧(千万不要错过)。


今天的推荐不知道大家喜欢吗?如果你喜欢,请在文章底部留言和点赞,以表示对我的支持,你们的留言点赞是我持续更新的动力哦,感谢大家!

1、点个赞,让更多的人看到这篇文章,顺便激励下我,嘻嘻。

2、关注我的原创微信公众号「杰哥的IT之旅」专注于IT技术干货文章,以及不定期的分享学习资料,实用工具,面试经验等,当然了还有内推机会哦,期待你的关注!

matplotlib绘图的核心原理讲解(超详细)相关推荐

  1. 用python画画的原理_matplotlib绘图的核心原理讲解

    作者:朱小五 来自:凹凸数据(ID:alltodata) matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包. 相信大家都用过它来数据可视化,之前我还分享过25 ...

  2. 条件随机场(CRF)极简原理与超详细代码解析

    条件随机场(CRF)极简原理与超详细代码解析 1. 原理 1.1 从名称说起 1.2 优化的目标 1.3 如何计算 2. 代码 2.1 基本结构 2.2 模型初始化 2.3 BERT提取的特征如何输入 ...

  3. 手把手讲解超详细python入门游戏项目‘打外星飞船’(二)

    手把手讲解超详细python入门游戏项目'打外星飞船'(二) 上次我们在(一)中创建了游戏的背景,现在我们这里将要实现用键盘控制飞船的移动.射击子弹,但是在此之前我们还有一个非常重要的部分–重构. 重 ...

  4. 手把手讲解超详细python入门游戏项目‘打外星飞船’(四)

    手把手讲解超详细python入门游戏项目'打外星飞船'(四) 在经过创立屏幕.飞船移动和设置子弹,我们这里开始设置外形人的创建和移动.我们这里主要的任务是:创建一众外星人让它们充满屏幕,让他们向下和两 ...

  5. 手把手讲解超详细python入门游戏项目‘打外星飞船’(五)

    手把手讲解超详细python入门游戏项目'打外星飞船'(五) 这是最后一个项目了,前面我们讲了整个游戏页面的控制.飞船.子弹.外星人的创建,这里我们讨论一下子弹射杀外星人和整个游戏的结束,我们这里的文 ...

  6. 手把手讲解超详细python入门游戏项目‘打外星飞船’(三)

    手把手讲解超详细python入门游戏项目'打外星飞船'(三) 第三部分我们讲解一下飞船需要射出子弹,那么子弹的部分是怎么操作呢?接下来我直接把项目的四个文件展示出来,以注释的形式在旁边讲解.因为有很多 ...

  7. 手把手讲解超详细python入门游戏项目‘打外星飞船’(一)

    手讲解超详细python入门游戏项目'打外星飞船'手把(一) 由于内容比较多,这里会分为五篇文章来讲解,从页面的创建.飞船控制.射击.外星人创建.射杀外星人五片来展开. 做一个窗口和设置响应用户 im ...

  8. 【数据可视化】Matplotlib 入门到精通学习笔记(超详细)

    数据可视化是什么 如果将文本数据与图表数据相比较,人类的思维模式更适合于理解后者,原因在于图表数据更加直观且形象化,它对于人类视觉的冲击更强,这种使用图表来表示数据的方法被叫做数据可视化. 当使用图表 ...

  9. JAXB常用注解讲解(超详细)

    简介: JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例 ...

最新文章

  1. PIG 中COGROUP中的空值验证
  2. uboot---linux
  3. matlab计算函数区域面积,matlab 中函数regionprops 求解区域面积的原理
  4. php 解析 saml协议,解出SAMLRequest的代码示例
  5. python分箱分类代码_Python实现变量分箱及应用
  6. KDD 2019论文解读:异构信息网络上的对抗生成学习
  7. oracle成本模块培训,Oracle App 培训笔记(5) -- 成本管理模块表结构整理 续
  8. 修改Myecclipse servlet/jsp的默认模板
  9. hdu 1520(树形dp)
  10. PascalVOC Dataset下载链接
  11. 从遥感影像到土地利用转移矩阵
  12. CDN应用进阶 | 大文件下载及视频点播的CDN加速实践
  13. selenium-登录腾讯防水墙案例
  14. 【错误率、精度、查准率、查全率和F1度量】详细介绍
  15. 计算机的网关地址是什么,什么是网关 网关地址是什么
  16. 收盘价对数收益率matlab,R语言怎么把股票日收盘价转换成对数收益率
  17. python实现问卷网的自动填写详解
  18. 芯片设计进阶之路——Reset深入理解
  19. 为什么在POS非常火爆的时候代还系统还能抢下市场呢?
  20. 一帮一 (15 分)

热门文章

  1. 手机照片积压过万,如何用便捷的方式去整理和再度呈现?
  2. 当当和亚马逊进驻天猫,那京东还会远吗?
  3. oracle sql 格式化日期,怎么在 SQL Server中 将日期格式化
  4. numpy.pad使用详解
  5. 【Grasshopper进阶】反射?什么反射?用反射屏蔽掉C#Script电池的运行时长
  6. 浅谈逻辑与 逻辑或|| 运算
  7. 基于javaWeb培训机构教务管理系统
  8. 这些是在线上最好的免费人工智能教育资源
  9. 使用AccessibilityService带你自动安装软件以及自动添加微信好友
  10. 全新型号 华为FusionServer Pro 5288 V6机架服务器发布