Python常见库matplotlib之多个子图绘图

这篇具有很好参考价值的文章主要介绍了Python常见库matplotlib之多个子图绘图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

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



前言

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

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()

上述的代码显示结果是:
matplotlib 多个图,# matplotlib库的使用,matplotlib,python,开发语言
下面我们开始对代码一段段分析。


一、多张子图的参数设置

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')

显示出的图就变了,我是随便加了些,内容反而显的杂乱了,其目的主要是为了测试。
matplotlib 多个图,# matplotlib库的使用,matplotlib,python,开发语言

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’。

总结

本章节主要介绍了子图绘图中常见的几个参数的设置,与单一图所使用的函数是不同的,使用者需要注意。文章来源地址https://www.toymoban.com/news/detail-741200.html

到了这里,关于Python常见库matplotlib之多个子图绘图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Visual Studio部署matplotlib绘图库的C++版本

      本文介绍在 Visual Studio 软件中配置、编译 C++ 环境下 matplotlibcpp 库的详细方法。    matplotlibcpp 库是一个 C++ 环境下的绘图工具,其通过调用 Python 接口,实现在 C++ 代码中通过 matplotlib 库的命令绘制各类图像。由于其需要调用 Python 接口,因此在配置 matplotlibcpp 库时有些

    2024年02月19日
    浏览(31)
  • Python matplotlib 设置多子图、子图间距、边距

    Python matplotlib 设置多子图 设置多子图纵向间距 设置多子图横向间距 设置外边距 1. 方式一。设置一个 2*2 的相同尺寸子图,统一添加。 可选参数:sharex=True,sharey=False 共享X轴,不共享Y轴。 可选参数:facecolor 背景填充色。 figsize 图片的大小。 2. 方式二。设置一个 2*2 子图,单

    2024年02月07日
    浏览(35)
  • Python matplotlib 设置多子图、子图间距、外边距

    Python matplotlib 设置多子图 设置多子图纵向间距 设置多子图横向间距 设置外边距 1. 方式一。设置一个 2*2 的相同尺寸子图,统一添加。 可选参数:sharex=True,sharey=False 共享X轴,不共享Y轴。 可选参数:facecolor 背景填充色。 figsize 图片的大小。 2. 方式二。设置一个 2*2 子图,单

    2024年01月16日
    浏览(35)
  • Python中Matplotlib库的使用(三)—— Matplotlib绘制图的常用类型

    plot(x,y) plot(x, y) 函数用于绘制折线图。折线图是一种用来展示连续数据之间关系的图表类型,适用于表示数据随着一个或多个变量的变化而变化的情况。 具体来说, plot(x, y) 函数接受两个参数: x :表示X轴上的数据点的值,通常是一个数组或列表,表示自变量的取值。 y :

    2024年02月03日
    浏览(73)
  • 【Python数据可视化】matplotlib之设置子图:绘制子图、子图共享x轴坐标、调整子图间距、设置图片大小

    文章传送门 Python 数据可视化 matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图 matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值 matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果 matplo

    2024年01月18日
    浏览(54)
  • 【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码

     目录 1 基本子图绘制示例 2 子图网格布局 3 调整子图的尺寸 4 多行多列的子图布局 5 子图之间的共享轴 6 绘制多个子图类型 7 实战: 绘制一个大图,里面包含6个不同类别的子图,不均匀布局。 绘制子图(subplots) 是在Matplotlib中创建多个子图的常见任务。通过子图,您可以

    2024年02月05日
    浏览(45)
  • python数据可视化玩转Matplotlib subplot子图操作,四个子图(一包四),三个子图,子图拉伸

    目录 一、创建子图 1.1 下图是绘制的子图: 1.2 代码释义: 二、绘制子图 2.1 代码引入 2.2 图形绘制 三、子图布局 3.1 子图布局说明 四、子图大小 4.1 子图大小调整 五、子图间距 5.1 子图代码调整 六、子图位置 6.1 代码引入 6.2 完整代码 6.3 完整代码 总结 大锤爱编程的博客_C

    2023年04月10日
    浏览(33)
  • 【Python】在同一图形中更加优雅地绘制多个子图

    数据可视化非常重要,有一句俗语叫做 一图顶千言 ,我相信好多小伙伴应该都听说过这句话;即使是有人第一次听到,我想应该也会觉得赞成,这足以说明数据可视化的重要性。我们在前一篇博客中,介绍了如何利用 subplot 来在一张子图里绘制多个子图,最近我又发现了一

    2024年02月11日
    浏览(31)
  • 使用Python中的matplotlib将多个图片显示到一张图内

    在我们写论文或是汇报时,经常需要整合所得到的可视化数据结果,插入我们的论文中。如下所示的情况,我们需要将四个相关的弹性模量预测结果在一张图里展示。 使用matplotlib库中的子图(subplot)功能可以轻松而高效地实现这一过程,避免繁琐地手动调节。 具体代码如下,

    2024年02月06日
    浏览(53)
  • 数据可视化(六)多个子图及seaborn使用

    1.多个子图绘制 2. 3.seaborn使用,首先安装。如果在pycharm中安装报错,先安装Scipy  

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包