matplotlib画多个子图

匿名 (未验证) 提交于 2019-12-03 00:22:01

想要用matplotlib画多个子图有多种方法,但是如果子图太多,画面就会很混乱,这里给出一种方法,能够使画面在保留必要信息的前提下,尽量简洁,如下图所示。


思路是这样的,在一个fig上先画一张只有坐标轴的空图ax_big:

fig, ax_big = plt.subplots( figsize=(30, 15))

对ax_big 的坐标轴进行偏移、隐藏、以及label设置。

随后再add多个子图,并进行子图的坐标轴设置:

ax = fig.add_subplot(3, 4, i)

这样,最后显示的时候,会把 ax_big 和多个 ax 重叠显示。

代码:

#!/usr/bin/env python3 # -*- coding: utf-8 -*  import numpy as np import matplotlib.pyplot as plt from pylab import mpl  def draw_picture_11(path_picture):      # mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体     mpl.rcParams['axes.unicode_minus'] = False      # 解决保存图像是负号'-'显示为方块的问题     # fig= plt.figure('222', figsize=(15, 15))      # 这是画一张空figure,上面什么都没有     fig, ax_big = plt.subplots( figsize=(30, 15))   # 这是figure上有一张名叫 ax_big 的空图,上面是有坐标系的     axis = plt.gca()                                # gca 'get current axes' 获取图像的坐标轴对象     axis.spines['right'].set_color('none')                  # 隐藏右和上坐标轴     axis.spines['top'].set_color('none')     axis.spines['bottom'].set_position(('outward', 30))     # 偏移左和下坐标轴     axis.spines['left'].set_position(('outward', 30))     ax_big.set_xticks([])                                   # 隐藏坐标轴刻度     ax_big.set_yticks([])     ax_big.set_xlabel('time (s)', fontsize=13, fontstyle='italic')      # 设置字号,斜体     ax_big.set_ylabel('longitudinal sensor output', fontsize=13, fontstyle='italic')      for i in range(1,13):               # add_subplot() 不能从0开始         x = np.linspace(0, 10, 100)         y = np.sin(x)         # draw and save the figure         ax = fig.add_subplot(3, 4, i)         ax.plot(x, y)         # ax.set_xticks([0, 5, 10], True)         ax.set_xticks([0, 5, 10])       # 设置子图的坐标轴刻度         ax.set_yticks([-2, 0, 2])      fig.savefig(path_picture + '6666', dpi=300)     plt.show()  if __name__ == '__main__':     path_picture = r'G:\TEST\abaqus_text\paper_simulation\picture_file\\'     draw_picture_11(path_picture)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!