系列文章目录

第一章 Python常见库matplotlib之画图文字的中文显示
第二章 Python常见库matplotlib之画图中各个模块的含义及修改方式
第三章 Python常见库matplotlib之多个子图绘图


文章目录

  • 系列文章目录
  • 前言
  • 一、多张子图的参数设置
    • 1. 子图(subplots)
    • 2. 子图y轴坐标说明(set_ylabel),子图x轴坐标说明(set_xlabel),设置子图标题(set_title)
    • 3. 图片总标题(suptitle)
    • 4. 刻度参数设置(tick_parms)
    • 5. 刻度标签的字体(get_xticklabels)(set_fontproperties)
  • 总结

前言

前两章介绍了单张图的绘图操作,这一章介绍下在一张图中画多个图的操作。我们把前一篇的程序稍微改动一下,上一篇中是将正弦函数和余弦函数画在一张图中,这一次我们将两个曲线分别画在不同的子图中。
完整程序如下所示:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm# 指定字体
font_path = 'SIMSUN.TTC'
font_prop = fm.FontProperties(fname=font_path, size=12)en_font_path = 'TIMES.TTF'
en_font_prop = fm.FontProperties(fname=en_font_path, size=12)x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))ax1.plot(x, y1, label=u'正弦曲线', color='blue')
ax1.set_ylabel('正弦值', fontproperties=font_prop)
ax1.set_xlabel('横轴', fontproperties=font_prop)
ax1.set_title('正弦函数', fontproperties=font_prop)plt.subplots_adjust(hspace=0.6) # 调整子图之间的距离ax2.plot(x, y2, label=u'余弦曲线', color='red')
ax2.set_ylabel('余弦值', fontproperties=font_prop)
ax2.set_xlabel('横轴', fontproperties=font_prop)
ax2.set_title('余弦函数', fontproperties=font_prop)plt.suptitle('函数', fontproperties=font_prop)ax1.tick_params(axis='both', which='major', labelsize=10, direction='in', bottom=True)
ax2.tick_params(axis='both', which='major', labelsize=10, direction='in')
# ax1.xaxis.set_tick_params(which='both', labelbottom=True)
# ax1.yaxis.set_tick_params(which='both', labelleft=True)
for tick in ax1.get_xticklabels():tick.set_fontproperties(en_font_prop)
for tick in ax1.get_yticklabels():tick.set_fontproperties(en_font_prop)
for tick in ax2.get_xticklabels():tick.set_fontproperties(en_font_prop)
for tick in ax2.get_yticklabels():tick.set_fontproperties(en_font_prop)ax1.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop=font_prop)
ax2.legend(loc='upper right', fontsize=12, edgecolor='black', fancybox=False, framealpha=1, prop=font_prop)plt.show()

上述的代码显示结果是:

下面我们开始对代码一段段分析。


一、多张子图的参数设置

1. 子图(subplots)

下面的代码就是先进行子图设置。

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 6))

第一个参数为2,表示子图行的排布方式,为2行
第二个参数为1,表示子图列的排布方式,为1列
figsize的参数为(10,6),表示最终图的总像素数为1000*600。也就是说第一个值为宽,第二个值为高,分别乘以100后,即为生成最终图的宽高。

除了上面描述的几种参数以外,还有下面的可选参数:

参数 含义
squeeze 是否压缩返回的子图网格数组,如果为 True,则当 nrows=1 且 ncols=1 时,返回的是单个 Axes 实例,而不是一个包含单个 Axes 实例的数组。
subplot_kw 传递给每个子图的关键字参数字典。
gridspec_kw 传递给 GridSpec 的关键字参数字典。
sharex 是否共享 x 轴的限制范围。可选值为 ‘none’、‘all’ 或 ‘row’。
sharey 是否共享 y 轴的限制范围。可选值为 ‘none’、‘all’ 或 ‘col’。

2. 子图y轴坐标说明(set_ylabel),子图x轴坐标说明(set_xlabel),设置子图标题(set_title)

与单一图像不同的是,有子图的情况下,我们对子图设置坐标名称和子图名称时调用的名字前面要加上set_

ax1.plot(x, y1, label=u'正弦曲线', color='blue')
ax1.set_ylabel('正弦值', fontproperties=font_prop)
ax1.set_xlabel('横轴', fontproperties=font_prop)
ax1.set_title('正弦函数', fontproperties=font_prop)

可以设置的参数在下面的对应列表中,上面程序中的'正弦值''横轴'就是下面的参数label。

参数 含义
label 标签的文本内容。
fontsize(size) 标签的字体大小。
fontweight 标签的字体粗细,通常为 ‘bold’ 或 ‘normal’,是否有变化还要看字体文件本身是否支持
color 标签的字体颜色,可以是颜色名称、十六进制码或 RGB 元组。
rotation 标签的旋转角度,通常为 0(水平)或 90(垂直)。
va 标签的垂直对齐方式,可选值包括 ‘top’、‘center’ 或 ‘bottom’。
ha 标签的水平对齐方式,可选值包括 ‘center’、‘left’ 或 ‘right’

3. 图片总标题(suptitle)

设置图的总名称需要调用suptitle函数实现。suptitle是super title的缩写,其实就是总标题

plt.suptitle('函数', fontproperties=font_prop)

suptitle可以设置参数如下表所示,本例中‘函数’就是参数中的t

参数 含义
t 超级标题的文本内容。
x 超级标题的 x 坐标,通常为 0.5,即位于子图网格的中央。这个值是一个百分比,左边为0,右边为1。0.5就是处于图像正中间。
y 超级标题的 y 坐标,默认值为 0.98,即位于子图网格的顶部。这个值是一个百分比,顶部为1,底部为0。0.98就是这个图像高度的98%的位置。
fontsize(size) 超级标题的字体大小。
fontweight 超级标题的字体粗细,通常为 ‘bold’ 或 ‘normal’。
color 超级标题的字体颜色,可以是颜色名称、十六进制码或 RGB 元组。
ha 超级标题的水平对齐方式,可选值包括 ‘center’、‘left’ 或 ‘right’。
va 超级标题的垂直对齐方式,可选值包括 ‘top’、‘center’ 或 ‘bottom’

4. 刻度参数设置(tick_parms)

ax1.tick_params(axis='both', which='major', labelsize=10, direction='in', bottom=True)
ax2.tick_params(axis='both', which='major', labelsize=10, direction='in')

常见的使用到的参数如下表所示

参数 含义
axis 指定要设置哪个坐标轴的刻度线和标签属性,可选值为 ‘x’、‘y’ 或 ‘both’
which 指定要设置哪些刻度线和标签属性,可选值为 ‘major’(主刻度线和标签)、‘minor’(次刻度线和标签)或 ‘both’(主刻度线和标签以及次刻度线和标签)
direction 指定刻度线的方向,可选值为 ‘in’(向内)、‘out’(向外)或 ‘inout’(内外均有)
length 指定刻度线的长度(单位为点)
width 指定刻度线的宽度(单位为点)
color 指定刻度线和标签的颜色
pad 指定刻度标签与刻度线之间的间距(单位为点)
labelsize 指定刻度标签的字号大小(单位为点)
labelcolor 指定刻度标签的颜色
bottom、top、left、right 分别指定四个边框上的刻度线和标签属性,这些值都是布尔属性,默认bottom和left是True,top和right是False

把上面的tick_params中的参数修改下,添加下表中的一些参数,如下面所示

ax1.tick_params(axis='both', which='major', labelsize=10, direction='in', width=5, pad=10, top=True, left=False, right=True, labelcolor='green')

显示出的图就变了,我是随便加了些,内容反而显的杂乱了,其目的主要是为了测试。

5. 刻度标签的字体(get_xticklabels)(set_fontproperties)

关于刻度标签的很多参数,在tick_params中其实就可以设置了,比如说color,pad,labelsize,labelcolor。但唯独这个字体的格式的设置比较特殊,需要按下面的代码进行修改

for tick in ax1.get_xticklabels():tick.set_fontproperties(en_font_prop)
for tick in ax1.get_yticklabels():tick.set_fontproperties(en_font_prop)
for tick in ax2.get_xticklabels():tick.set_fontproperties(en_font_prop)
for tick in ax2.get_yticklabels():tick.set_fontproperties(en_font_prop)

上面的代码实现的是对子图1和子图2的x轴刻度标签和y轴刻度标签的修改,总共要做四次,修改成新罗马体。
get_xticklabels 是 Matplotlib 中用于获取 x 轴刻度标签的方法。这个方法没有参数可以设置,它返回的是一个包含 Text 对象的列表,每个 Text 对象代表一个 x 轴刻度标签,可以通过调用 Text 对象的方法不仅可以用来设置刻度标签的字体,还可以设置刻度标签的属性,例如字体大小、颜色、旋转角度等,等于是通过for循环遍历来一个个设置刻度标签。

以下是一些常用的 Text 对象方法及其含义:

对象方法 含义
set_text(text) 设置刻度标签的文本内容。
set_fontsize(size) 设置刻度标签的字号大小。
set_color(color) 设置刻度标签的颜色。
set_rotation(angle) 设置刻度标签的旋转角度(单位为度)。
set_ha(ha) 设置刻度标签的水平对齐方式,可选值为 ‘left’、‘center’ 或 ‘right’。
set_va(va) 设置刻度标签的垂直对齐方式,可选值为 ‘top’、‘center’ 或 ‘bottom’。

总结

本章节主要介绍了子图绘图中常见的几个参数的设置,与单一图所使用的函数是不同的,使用者需要注意。

Python常见库matplotlib之多个子图绘图相关推荐

  1. Python常见库matplotlib之画图文字的中文显示

    系列文章目录 第一章 Python常见库matplotlib之画图文字的中文显示 第二章 Python常见库matplotlib之画图中各个模块的含义及修改方式 第三章 Python常见库matplo ...

  2. 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图

    美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系.根据兴趣的不同,人格可分为研究型(I).艺术型(A).社会型(S).企业型(E).传统型(C).现实型(R)六个维 ...

  3. python绘制不带颜色曲线图_Python数据可视化库-Matplotlib——折线图,子图绘制

    # coding:utf-8 import pandas as pd import numpy as np from matplotlib import pylab as plt # 导入数据可视化库 ...

  4. Python第三方库matplotlib(2D绘图库)入门与进阶

    文章目录 @[toc] Matplotlib 一 简介: 二 相关文档: 三 入门与进阶案例 1- 简单图形绘制 2- figure的简单使用 3- 设置坐标轴 4- 设置legend图例 5- 添加 ...

  5. matplotlib如何绘制两点间连线_机器学习:Python常用库——Matplotlib库

    说起数据分析,你的眼前有没有浮现出直方图.散点图.曲线图-各种图表? Python作为一门编程语言,如何能作图呢? 办法当然是有的,而且我们已经接触过了.在上一章节中画散点图的时候就导入过,它就是Ma ...

  6. python常见库集合

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

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

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

  8. Python可视化库Matplotlib的使用

    一.导入数据 import pandas as pd unrate = pd.read_csv('unrate.csv') unrate['DATE'] = pd.to_datetime(unrate ...

  9. python第三方库matplotlib绘制简单折线图

    一.绘制简单折线图 代码如下: import numpy as np import matplotlib.pyplot as plt X = [0, 1, 2, 3, 4, 5] Y = [222, ...

最新文章

  1. 第六章 6.1 6.2 无限脉冲响应滤波器
  2. [专题目录]-CA/TA development导读目录
  3. java 实体比较_java比较实体类
  4. android刷新时的圆形动画_【Android】圆形揭露动画
  5. [Java网络编程基础]端口,协议
  6. java虚拟机内存模型与垃圾回收知识复习总结
  7. 演示:取证分析IPV6组播地址的构成原理
  8. BZOJ4892:[TJOI2017]dna(hash)
  9. 破解wifi时遇到rtl8187 - [phy1]SIOCSIFFLAGS: Name not unique on network
  10. html flv jquery 插件,基于js与flash实现的网站flv视频播放插件代码
  11. SNP全称是什么? SNP是什么公司? SNP是什么意思?
  12. linux中c语言kbhit函数用法,C语言判断用户是否输入-非阻塞函数kbhit
  13. 使用python库relate搭建LMS学习管理系统
  14. java.lang.RuntimeException: Parcel: unable to marshal value com.
  15. 对客户信息收集,收集用户行为的方法总结
  16. vscode开发wdk
  17. 交换机err-disabled状态解决方案
  18. 机器人时代来临,5G工业网关远程联动,打造一支“精锐部队”
  19. 心理统计学 笔记 (一) 基础参数符号
  20. 实时计算 Flink 版应用场景与产品介绍

热门文章

  1. 技术管理者的困惑——技术与管理应该如何平衡?
  2. 数据可视化路上——中国地图可视化
  3. Ubuntu平台下ROS系统查看RGB摄像头和深度摄像头的连接
  4. 笔记2:VC++ socket通信实例
  5. Win10家庭版远程桌面工具RDP Wrapper出现Not listening解决方案
  6. 什么是JDK、JRE
  7. PC傻瓜式安装黑苹果并打造成全能逆向工作站
  8. 【Paper】毕业论文免费查重网站平台汇总
  9. python编程入门书-最适合Python初学者的6本书籍推荐「必须收藏」
  10. Linux内核设计与实现(13)第十三章:虚拟文件系统