↑ 关注 + 星标 ~ 有趣的不像个技术号

每晚九点,我们准时相约  

大家好,我是黄同学

我们之前已经讲述了matplotlib的绘图原理,陆续会更新绘图技巧、相关图形绘制。

《matplotlib绘图的核心原理》

《matplotlib绘图技巧详解(一)》

《matplotlib绘图技巧详解(二)》

1、绘图区域设置

绘图区域设置:为figure指定不同的axes区域。

我们可以在一张图上绘制多个图形,当然,我们也可以将不同的图形绘制到多个不同的区域当中。共有如下几3种方式来实现绘图区域的设置。

  • 通过figure对象调用add_subplot方法。

  • 通过plt的subplot方法。

  • 通过plt的subplots方法。

1)figure对象的add_subplot方法使用说明

  首先需要显示的创建一个figure对象,通过调用figure对象的add_subplot方法,来分配不同的子绘图区域。通俗的来说,就是相当于得到一个"画板对象",然后在这个画板上,分配出不同的子绘图区域,每个区域可以绘制不同的图形。

  add_subplot指定绘图布局,需要指定子绘图区域的行数、列数和当前要绘制的子区域。

  add_subplot方法会返回每个子绘图区域的对象,调用该对象即可实现在子区域的图形绘制。

  在绘制图形时,总是需要创建figure对象。如果没有显式创建,则plt会隐式创建一个figure对象。在绘制图形时,既可以使用plt来绘制,也可以使用子绘图对象来绘制。“如果使用plt对象绘制,则总是在最后创建的绘图区域上进行绘制。”

操作如下:

figure = plt.figure()
axes1 = figure.add_subplot(2, 1, 1, facecolor="#eeeeee")
axes2 = figure.add_subplot(2, 1, 2)plt.plot([1,2],[4,8])

结果如下:

① figure对象的add_subplot方法常用参数说明

  • add_subplot指定绘图布局:既可以使用三个参数分开传递,也可以使用一个参数整体传递。

  • 使用facecolor设置绘图区域的背景色。

  • plt.subplots_adjust方法可以用来调整子图与子图之间的距离。(left,right,top,bottom,wspace,hspace)

② add_subplot指定绘图布局与facecolor设置绘图区域的背景色

figure = plt.figure()axes1 = figure.add_subplot(2, 1, 1, facecolor="#eeeeee")
axes1.plot([1,2],[4,8])axes2 = figure.add_subplot("212")
axes2.plot([1,8],[4,2])

结果如下:

③ plt.subplots_adjust方法调整子图与子图之间的距离

figure = plt.figure()axes1 = figure.add_subplot("221",facecolor="#eeeeee")
axes1.plot([1,2],[4,8])axes2 = figure.add_subplot("222")
axes2.plot([1,8],[4,2])axes3 = figure.add_subplot("223")
axes3.plot([1,2],[4,8])axes4 = figure.add_subplot("224",facecolor="#eeeeee")
axes4.plot([1,8],[4,2])# hspace和wspace参数最有用,只讲述这个
plt.subplots_adjust(hspace=1,wspace=0.5)

结果如下:

3)plt的subplot方法的使用说明

  plt.subplot方法,由于plt可以隐式的创建一个figure对象,因此使用这个方法,来指定绘图布局,不需要显示的创建figure对象。因为plt.subplot方法直接可以返回子绘图区域的axes对象。

  实际上,这种创建子绘图区域的方式,底层也是通过第一种方式实现的。

  因此,使用这种方式和add_subplot的使用方式,一模一样。

① 演示如下

plt.subplot("121")
plt.plot([1, 2, 3], "g--d")plt.subplot(1, 2, 2)
plt.plot([2, 4, 1], "r-.o")plt.subplots_adjust(wspace=0.5)

结果如下:

4)plt的subplots方法的使用说明

  通过plt的subplots方法创建子绘图区域,该方法返回一个元组。如果是一个子绘图对象,那么返回的是一个axes坐标系对象。如果是多个子绘图对象,则返回一个ndarray数组。

  可以通过sharex与sharey来指定是否共享x轴与y轴。

操作如下:

figure,axes = plt.subplots(1,1)
display(type(figure))
display(type(axes))figure,axes = plt.subplots(2,2)
display(type(figure))
display(type(axes))

结果如下:

① 不使用sharex与sharey共享x轴与y轴

figure,axes = plt.subplots(2,2)
axes[0,0].plot([1,4])
axes[0,1].plot([6,2])
axes[1,0].plot([3,7])
axes[1,1].plot([8,4])

结果如下:

② 使用sharex与sharey共享x轴与y轴

figure,axes = plt.subplots(2,2,sharex=True,sharey=True)
axes[0,0].plot([1,4])
axes[0,1].plot([6,2])
axes[1,0].plot([3,7])
axes[1,1].plot([8,4])

结果如下:

2、figure(画布)大小设置

1)为什么要设置figure(画布)大小?

  figure(画布)的大小,对于我们进行图形绘制很重要。

  如果画布太小,当子绘图区域较多,可能会有些拥挤。因此我们要使用较大一点的画布,才能更好的摆放这些子图。

2)figure(画布)大小设置的2种方式

在调用plt.figure()显示创建figure对象时,通过figsize参数指定,单位为英寸。

在创建figure对象后,可以通过figure对象的set_size_inches方法设置。

① 在显示创建figure对象的同时,通过figsize参数指定画布大小

plt.figure(figsize=(8,3))
plt.plot([1,3,5,7],[4,9,6,8],"r-.o")

结果如下:

② 在显示创建figure对象后,通过set_size_inches()方法指定画布大小

figure = plt.figure()
figure.set_size_inches(7,6)
plt.plot([1,3,5,7],[4,9,6,8],"r-.o")

结果如下:

3)若隐式创建画布,怎么设置figure画布大小呢?

① 演示如下

figure = plt.gcf()
figure.set_size_inches(6,5)
plt.plot([1,3,5,7],[4,9,6,8],"g-o")

结果如下:

3、标签与刻度设置

1)使用说明

  我们可以通过plt对象的相关方法来设置或获取标签与刻度等信息。

  设置还是获取,取决于是否传递实际参数。当传递了参数,表示设置标签与刻度;当没有传递参数,表示获取标签与刻度。

2)标签与刻度设置的相关方法

  • plt.xlim 设置或获取x轴刻度范围。

  • plt.ylim 设置或获取y轴刻度范围。

  • plt.xticks 设置或获取x轴显示的刻度与标签。

  • plt.yticks 设置或获取y轴显示的刻度与标签。

  • plt.axis 可以同时设置或获取x与y轴的刻度范围,或者是取消刻度显示

  • equal:x与y具有同样的长度。

操作如下:

plt.plot([1, 3, 5], [2, 4, 6])
# 显示x轴刻度的范围
display(plt.xlim())
# 显示y轴刻度的范围
display(plt.ylim())
# 获取x轴的刻度与标签。
display(plt.xticks())
# 获取y轴的刻度与标签。
display(plt.yticks())

结果如下:

3)x轴和y轴刻度范围的设置:plt.xlim()、plt.ylim()

plt.plot([1,3,5,7],[4,9,6,8],"r.-")
plt.xlim([1,7])
plt.ylim(4,9)

结果如下:

4)x轴和y轴刻度与标签的设置:plt.xticks()、plt.yticks()

默认情况下,标签就是我们设置的刻度信息。我们可以自定义每个刻度的显示标签。

plt.plot([2, 4, 8], [4, 7, 5], "b-o")plt.xlim([-2, 12])
plt.xticks([2, 4, 8], ["偏低", "中等", "偏高"])

结果如下:

5)plt.axis()方法的使用

plt.axis 可以同时设置或获取x与y轴的刻度范围,或者是取消刻度显示。

  • 无参数:返回一个元组。(xmin, xmax, ymin, ymax)

  • (xmin, xmax, ymin, ymax) 同时设置x与y轴的刻度范围。

  • off 取消坐标轴显示。

  • tight:坐标轴紧凑显示。

  • equal:x与y具有同样的长度。

① 获取x与y轴的刻度范围

plt.plot([2, 4, 8], [4, 7, 5], "b-o")
plt.axis()

结果如下:

② 设置x与y轴的刻度范围

plt.plot([2, 4, 8], [4, 7, 5], "b-o")
plt.axis((2,8,4,7))

结果如下:

③ 去掉坐标轴:plt.axis(“off”)

plt.plot([2, 4, 8], [4, 7, 5], “b-o”)
plt.axis(“off”)

结果如下:

④ 设置x轴和y轴每个单位长度大小一致:plt.axis(“equal”)

plt.plot([2, 4, 8], [4, 7, 5], "b-o")
plt.axis("off")

结果如下:

4、坐标轴标题、标签与图标题设置

1)坐标轴标题、标签与图标题设置的相关说明

关于本章知识的讲解,我们从两方面进行说明。

当一张figure画布上,只有一个图的时候,通过如下方式设置:

  • plt.xlabel 设置x轴的标签说明。

  • plt.ylabel 设置y轴的标签说明。

  • plt.xticks 设置x轴的刻度标签。

  • plt.yticks 设置y轴的刻度标签。

  • plt.title 设置标题。

当一张figure画布上,有多个图形的时候,通过如下方式设置,除了通过plt对象外,我们还可以通过子绘图对象来设置与获取标签与刻度。

  • ax.set_xlim 设置x轴刻度范围。

  • ax.get_xlim 获取x轴刻度范围。

  • ax.set_xticks 设置x轴显示的刻度。

  • ax.get_xticks 获取x轴显示的刻度。

  • ax.set_xticklabels 设置x轴显示的刻度标签。默认显示的是就是刻度值。

  • ax.get_xticklabels 获取x轴显示的刻度标签。默认显示的是就是刻度值。

也可以设置标签说明与标题

  • ax.set_xlabel 设置x轴的标签说明。

  • ax.get_xlabel 获取x轴的标签说明。

  • ax.set_title 设置标题。

  • ax.get_title 获取标题。

说明:

  • “如果需要设置或者获取y轴,只需要将x换成y即可。”

2)一张figure画布上,只有一个图,怎么设置坐标轴标题、标签与图标题?

plt.plot([2, 4, 8], [4, 7, 5], "b-o")
plt.xticks([2,4,8],["低","中","高"])
plt.xlabel("x轴标签")
plt.ylabel("y轴标签")
plt.title("图标题")

结果如下:

3)一张figure画布上,有多个图形,怎么设置坐标轴标题、标签与图标题?

figure = plt.figure()
axes1 = figure.add_subplot(2,1,1)
axes1.plot([2,4,8],[4,7,5])
axes1.set_xticks([2,4,8])
axes1.set_xticklabels(["低","中","高"])
axes1.set_xlabel("年龄")
axes1.set_ylabel("数值大小")
axes1.set_title("波动值")axes2 = figure.add_subplot(2,1,2)
axes2.plot([2,4,8],[7,2,6])plt.subplots_adjust(hspace=0.5)

结果如下:

5、添加注解

1)什么是注解?

“注解”就是在图形上绘制文本等说明信息。

2)箭头和文本一次性设置:plt.annotate()

① 常用参数介绍

  • xy 箭头指向坐标

  • xytext:文本起点坐标。(箭头尾部坐标)

  • arrowprops:字典类型,可设置箭头的属性。

  • facecolor:箭头的颜色。

  • headwidth:箭头的宽度。

  • width:箭身的宽度。

  • headlength:箭头的长度。

  • shrink:收缩大小。

常见参数用法如图:

② 举例如下

x = np.linspace(-10, 10, 100)
plt.plot(x, -x ** 2, “r-”)
plt.title(“抛物线图”)
plt.annotate(“这是极大值点”, xy=(0,0), xytext=(-5,-40),
arrowprops=dict(facecolor=“g”,width=1,headwidth=5))

3)箭头和文本分开设置

  • plt.text语法格式如下:

  • plt.text(x,y,文本值)

  • plt.arrow语法格式

  • plt.arrow(x,y,dx,dy,width=,head_width=,head_length)

① 常用参数如下

### plt.text添加普通文本
plt.text:显示文本(基于坐标)
plt.figtext:显示文本(基于图片)
* x,y:文本点的坐标。
* 文本值:给这个点添加文本注释。### plt.arrow添加箭头
* x,y:箭头的起点坐标。
* dx,dy:基于起点坐标的偏移量。
* width:箭头尾部的宽度。
* head_width:箭头的宽度。
* head_length:箭头的长度。
* alpha:表示箭头的透明度。范围是0-1。

关于dx、dy的用法演示:

② 举例如下:

x = np.linspace(-10, 10, 100)
plt.plot(x, -x ** 2, "r-")
plt.title("抛物线图")
plt.text(-3.5, -50, "这是极值点")
plt.arrow(-2.5,-45,2.5,42,width=0.001,head_width=1,head_length=2,color="b")

结果如下:

4)给图形上的坐标点添加数据标签

① 例一

x = np.linspace(0,10,100)
y = -x**2
plt.xlim(0,100)
plt.ylim(0,100)
plt.title("抛物线")
plt.plot(x,y)
for xy in zip(x,y):plt.annotate("(%s,%s)" % xy, xy=xy)

结果如下:

② 例二

x = np.arange(1,13)
y = np.array([1234,871,2222,3123,5612,2222,4123,3214,999,6000,5423,3123])
plt.plot(x,y,"ro-",label="每月工资")
plt.title("张三1-12月工资")
plt.xlabel("月份")
plt.ylabel("工资")
plt.legend(loc="best")
for xy in zip(x,y):plt.annotate("{}".format(xy[1]),xy=xy,ha="center",va="bottom")plt.savefig("张三工资",dpi=300,facecolor="g")

结果如下:

③ 例三“添加注释的第2种方式

x = np.arange(1,13)
y = np.array([1234,871,2222,3123,5612,2222,4123,3214,999,6000,5423,3123])
plt.plot(x,y,"ro-",label="每月工资")
plt.title("张三1-12月工资")
plt.xlabel("月份")
plt.ylabel("工资")
plt.legend(loc="best")
for x,y in zip(x,y):plt.text(x,y,y,ha="center",va="bottom",fontsize=10)

结果如下:

matplotlib绘图技巧详解部分到此结束,

后续更新matplotlib相关图形绘制~

后台回复关键词「进群」,即刻加入读者交流群~

在看”和“转发”是对文章最好的支持 

matplotlib绘图技巧详解(三)相关推荐

  1. matplotlib绘图入门详解

    matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用 ...

  2. matplotlib 绘图入门详解

    matplotlib是受MATLAB的启发构建的.MATLAB是数据绘图领域广泛使用的语言和工具.MATLAB语言是面向过程的.利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用 ...

  3. Python可视化库Matplotlib绘图入门详解

    Matplotlib是Python的绘图库,其中的pyplot包封装了很多画图的函数. Matplotlib.pyplot 包含一系列类似 MATLAB 中绘图函数的相关函数.每个 Matplotli ...

  4. python画学校_未明学院:Python可视化库Matplotlib绘图入门详解

    Matplotlib是Python的绘图库,其中的pyplot包封装了很多画图的函数. Matplotlib.pyplot 包含一系列类似 MATLAB 中绘图函数的相关函数.每个 Matplotli ...

  5. pyecharts的绘图原理详解

    其实学习任何一门编程语言,最重要的就是学习它的原理.在前面我们已经介绍了matplotlib.seaborn.plotly的绘图原理,今天给大家介绍的是,我认为交互效果最好的一个python绘图库,学 ...

  6. python turtle库setpos_Python内置海龟(turtle)库绘图命令详解(二)

    继续谈利用海龟库(turtle库)做图.在这篇文章(Python内置海龟(turtle)库绘图命令详解(一))中已经介绍了turtle的一些基本画图命令,包括画布的设计.画笔属性与状态的设置以及画笔的 ...

  7. Sniff网络基础原理和软件实现技巧详解

    Sniff网络基础原理和软件实现技巧详解 前言 SNIFF真是一个古老的话题,关于在网络上采用SNIFF来获取敏感信息已经不是什么新鲜事,也不乏很多成功的案例,那么,SNIFF究竟是什么呢? SNIF ...

  8. R统计绘图-PCA详解1(princomp/principal/prcomp/rda等)

    此文为<精通机器学习:基于R>的学习笔记,书中第九章详细介绍了无监督学习-主成分分析(PCA)的分析过程和结果解读. PCA可以对相关变量进行归类,从而降低数据维度,提高对数据的理解.分析 ...

  9. 首席新媒体运营黎想教程:最全电商运营方案,50个技巧详解

    做电商该怎么运营是个问题,一开始就做好定位.选品.定价.测款.老客-然后再去大力推广.那么一个合格的电商运营到底应该是什么样子的?这其实很难有定论,如果把店铺运营销量做的好,那么这个人肯定是比一般人好 ...

  10. Matplotlib subplot2grid()函数详解

    Matplotlib subplot2grid()函数详解 matplotlib.pyplot 模块提供了 subplot2grid() ,该函数能够在画布的特定位置创建 axes 对象(即绘图区域) ...

最新文章

  1. Windows10+Virtual box+ubuntu17.10
  2. 创界uVision下的ADuC845的工程文件
  3. [html] iframe可以使用父页面中的资源吗(如:css、js等)?
  4. java shiro security_安全框架Shiro和SpringSecurity的比较
  5. 显示连接失败_技术丨外接显示器障碍的诊断方法
  6. 蒜黄香菇炒肉 【原创】
  7. 计算机前端学哪些好学,Web前端能干什么工作,好学吗
  8. 从零基础入门Tensorflow2.0 ----五、24TF1.0dataset使用
  9. 任泽平:中国自动驾驶发展报告2020(上)
  10. 如何使用 tinypng 进行批量压缩
  11. 计算机科学与技术导论 网站,计算机科学与技术导论
  12. mixly自定义第三方库
  13. Leetcode刷题-707:设计链表
  14. php推送手机,PHP_解析php做推送服务端实现ios消息推送,准备工作1.获取手机注册应用 - phpStudy...
  15. android FDE功能介绍
  16. 结合python使用ffmpeg将批量ts文件合成mp4。
  17. 硬盘挂载-硬盘挂载后为只读模式
  18. 软考高级系统架构设计师论文系列三:论改进Web服务器性能的有关技术
  19. 嵌入式系统开发,不用Linux的理由 !
  20. MySQL索引(一)—— 索引介绍

热门文章

  1. 如何在ppt中打开html,如何在ppt中直接打开网页
  2. PS常用快捷键及模板使用
  3. 手游加速器:[求助]安卓端 手游变速器,类似光环助手的实现方式是怎样的?...
  4. HBuilderX连接安卓模拟器
  5. PMBOK第6版 项目管理过程组与知识领域(15至尊图)
  6. python存储数据的方式_python – 数据存储在* .npy中的方式是什么?
  7. 怎么换证件照底色?分享两款好用的免费制作证件照的软件
  8. 作为一个测试人,软件测试流程包括哪些内容,你都知道吗?
  9. 15 使用计算机应遵守行业道德规范,初中信息技术会考试题 -
  10. Interview Tips with Consulting Firms