python绘制子图技巧之plt.subplot、plt.subplots及坐标轴修改

目录
  • 前言
  • plt.subplot
  • plt.subplots
  • 坐标轴修改
  • 总结

前言

偶然发现python(matplotlib)中绘制子图有两种方法,一种是plt.subplot,另一种是plt.subplots,这篇博客说一下这两种方法的区别,用法,以及常用的一些函数。

plt.figure的作用是定义一个大的图纸,可以设置图纸的大小、分辨率等,例如

fig = plt.figure(figsize=(16,16),dpi=300)  # 初始化一张画布

plt.plot() 是直接在当前活跃的的axes上面作图,注意是当前活跃的

知道这两点基础知识后,再来看subplot和subplots

plt.subplot

fig = plt.figure(figsize=(12, 4), dpi=200)
for i in range(len(img)):
    plt.subplot(1, len(img),i+1)
    plt.imshow(img[i])
plt.show()

plt.subplot作用是指定子图的位置,比如说现在总共有1行10列,当前子图位于哪里;

使用这个函数时需要先定义一个大的图纸,因为subplot函数无法更改图纸的大小和分辨率等信息;所以必须通过fig = plt.figure(figsize=(12, 4), dpi=200)来定义图纸相关设置;

同时,后续对于这个函数便捷的操作就是直接用plt,获取当前活跃的图层

plt.subplots

fig, ax = plt.subplots(1, len(img), figsize=(15, 10))
for i in range(len(img)):
    ax[i].imshow(img[i])
plt.show()

使用plt.subplots函数时,可以直接在该函数内部设置子图纸信息

该函数返回两个变量,一个是Figure实例fig,另一个 AxesSubplot实例ax 。fig代表整个图像,ax代表坐标轴和画的子图,通过下标获取需要的子区域。

后续我们需要对子图操作时,直接ax[i].imshow(img[i])就行

与subplot的区别在于:(1)不需要通过plt来操作图层,每一个图层都有指定的axes;(2)一个写在for循环外面,一个写在里面;归根于原因还是suplots绘制多少图已经指定了,所以ax提前已经准备好了,而subplot函数调用一次就绘制一次,没有指定

subplot和subplots都可以实现画子图功能,只不过subplots帮我们把画板规划好了,返回一个坐标数组对象,而subplot每次只能返回一个坐标对象,subplots还可以直接指定画板的大小。

坐标轴修改

我们通常需要修改坐标轴大小、刻度等信息,不论是子图还是一张大图;下面来看一下subplots和subplot在修改坐标方面的差异

plt在修改坐标时直接写plt.xlabel();plt.ylabel();plt.xlim();plt.ylim()等等就行,但是axes和plt不一样,axes需要加上set,例如:axes.set_xlabel();axes.set_xlim() 这一点需要格外注意

对于修改子图的坐标轴信息,很明显是subplots更方便,因为他有独立的axes,更方便让每一个子图的坐标轴不同,例如

fig, ax = plt.subplots(1, len(img), figsize=(15, 10))
for i in range(len(img)):
    ax[i].imshow(img[i])
    ax[i].set_xlabel("test csdn")
#如果要单独修改坐标轴
ax[5].set_xlabel("test csdn")
plt.show()

如果是subplot修改的话,参考代码如下:

fig = plt.figure(figsize=(12, 4), dpi=200)
for i in range(len(img)):
    plt.subplot(1, len(img),i+1)
    plt.imshow(img[i])
    plt.xlabel("csdn test")
plt.show()

当然,subplot也可以有返回值,但是这个返回值是一个一个的,并不是和subplots一样是一群都给你

fig = plt.figure(figsize=(12, 4), dpi=200)
for i in range(len(img)):
    ax=plt.subplot(1, len(img),i+1)
    #或者这样
    # ax = plt.gca()  获取当前活跃的子图层
    plt.imshow(img[i])
    ax.set_xlabel("csdn test")  #其实这样还是没法单个子图修改
plt.show()

xlabel、ylabel: 设置横轴、纵轴标签及大小

 例如plt.xlabel("csdn test", fontsize=20)

xlim、ylim: 设置x、y坐标轴的起始点(从哪到哪)

 例如plt.xlim(0,50) plt.ylim(0,60)

xticks、yticks: 设置坐标轴刻度的字体大小

 例如plt.xticks(labelsize=20)

title: 设置图片的标题

 例如 plt.title(“csdn test”)

总结

到此这篇关于python绘制子图技巧之plt.subplot、plt.subplots及坐标轴修改的文章就介绍到这了,更多相关python plt.subplot plt.subplots及坐标轴修改内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围

    一.用默认设置绘制折线图 import matplotlib.pyplot as plt x_values=list(range(11)) #x轴的数字是0到10这11个整数 y_values=[x**2 for x in x_values] #y轴的数字是x轴数字的平方 plt.plot(x_values,y_values,c='green') #用plot函数绘制折线图,线条颜色设置为绿色 plt.title('Squares',fontsize=24) #设置图表标题和标题字号 plt.t

  • python matplotlib坐标轴设置的方法

    在使用matplotlib模块时画坐标图时,往往需要对坐标轴设置很多参数,这些参数包括横纵坐标轴范围.坐标轴刻度大小.坐标轴名称等 在matplotlib中包含了很多函数,用来对这些参数进行设置. 我们可以对坐标轴进行设置,设置坐标轴的范围,设置坐标轴上的文字描述等. 基本用法 例如: import numpy as np import pandas as pd import matplotlib.pyplot as plt # 生成x轴上的数据:从-3到3,总共有50个点 x = np.lin

  • 学习python中matplotlib绘图设置坐标轴刻度、文本

    总结matplotlib绘图如何设置坐标轴刻度大小和刻度. 上代码: from pylab import * from matplotlib.ticker import MultipleLocator, FormatStrFormatter xmajorLocator = MultipleLocator(20) #将x主刻度标签设置为20的倍数 xmajorFormatter = FormatStrFormatter('%1.1f') #设置x轴标签文本的格式 xminorLocator = M

  • Python处理时间日期坐标轴过程详解

    1. 前言 当日期数据作为图表的坐标轴时通常需要特殊处理,应为日期字符串比较长,容易产生重叠现象 2. 设定主/次刻度 2.1 引用库 from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY 2.2 获取每月/周/日数据 获取每月一日数据 monthdays = MonthLocator() 获取每周一的日期数据 mondays = WeekdayLocator(MONDAY) #

  • Python matplotlib学习笔记之坐标轴范围

    Python学习笔记--坐标轴范围 参靠视频:<Python数据可视化分析 matplotlib教程>链接:https://www.bilibili.com/video/av6989413/?p=6 所用的库及环境: IDE:Pycharm Python环境:python3.7 Matplotlib: Matplotlib 1.11 Numpy: Numpy1.15. 坐标轴范围 概念 根据需求调整坐标轴的范围 坐标轴范围调整 第一种形式 通过plt.axis()可以查看图形的x轴的最小最大坐

  • 修改python plot折线图的坐标轴刻度方法

    修改python plot折线图的坐标轴刻度,这里修改为整数: 代码如下: from matplotlib import pyplot as plt import matplotlib.ticker as ticker import numpy as np def std_plot(): overall_std = [34.369, 21.366, 16.516, 11.151] max_std = [36.769, 21.794, 14.390, 4.684] plt.figure() plt

  • python绘制子图技巧之plt.subplot、plt.subplots及坐标轴修改

    目录 前言 plt.subplot plt.subplots 坐标轴修改 总结 前言 偶然发现python(matplotlib)中绘制子图有两种方法,一种是plt.subplot,另一种是plt.subplots,这篇博客说一下这两种方法的区别,用法,以及常用的一些函数. plt.figure的作用是定义一个大的图纸,可以设置图纸的大小.分辨率等,例如 fig = plt.figure(figsize=(16,16),dpi=300) # 初始化一张画布 plt.plot() 是直接在当前活跃

  • 基于Python绘制子图及子图刻度的变换等的问题

    1.涉及到图的对比会用到子图形式展示 先看看效果 2.绘制代码如下 accuracy_alexnet_clef = [78.05, 78.43, 78.65, 78.61, 78.69] accuracy_resnet_clef = [84.56, 84.84, 85.07, 85.01, 85.13] accuracy_alexnet_office10 = [87.30, 87.57, 87.78, 87.72, 87.50] accuracy_resnet_office10 = [96.31

  • Python 实现绘制子图及子图刻度的变换等问题

    1.涉及到图的对比会用到子图形式展示,先看看效果 2.绘制代码如下 accuracy_alexnet_clef = [78.05, 78.43, 78.65, 78.61, 78.69] accuracy_resnet_clef = [84.56, 84.84, 85.07, 85.01, 85.13] accuracy_alexnet_office10 = [87.30, 87.57, 87.78, 87.72, 87.50] accuracy_resnet_office10 = [96.31

  • python绘制多个子图的实例

    绘制八个子图 import matplotlib.pyplot as plt fig = plt.figure() shape=['.','o','v','>','<','8','s','*'] for j in range(8): x=[i for i in range(6)] y=[i**2 for i in range(6)] ax = fig.add_subplot(241+j) ax.scatter(x,y,c='r',marker=shape[j]) ax.set_title('第

  • 解决python中显示图片的plt.imshow plt.show()内存泄漏问题

    当要处理批量图片,且每张图片都要进行显示时,用plt.imshow() plt.show()会出现内存泄漏, 管理器中看到其中一个python进程的内存不断上涨,目前有找到解决方法 from matplotlib import pyplot as plt ... for...: ... plt.figure(figsize=IMAGE_SIZE) plt.imshow(image_np) plt.show() 补充知识:python在内存中读取base64图片 import base64 imp

  • 使用Python绘制图表大全总结

    在使用Python绘制图表前,我们需要先安装两个库文件numpy和matplotlib. Numpy是Python开源的数值计算扩展,可用来存储和处理大型矩阵,比Python自身数据结构要高效:matplotlib是一个Python的图像框架,使用其绘制出来的图形效果和MATLAB下绘制的图形类似. 下面我通过一些简单的代码介绍如何使用 Python绘图. 一.图形绘制 直方图 importmatplotlib.pyplotasplt importnumpyasnp mu=100 sigma=2

  • 利用python绘制数据曲线图的实现

    "在举国上下万众一心.众志成城做好新冠肺炎疫情防控工作的特殊时刻,我们不能亲临主战场,但我们能坚持在大战中坚定信心.不负韶华." 1.爬取新闻保存为json文件,并将绘图所需数据保存至数据库 数据库表结构: 代码部分: import pymysql import re import sys,urllib,json from urllib import request from datetime import datetime import pandas as pd Today=date

  • 用python绘制极坐标雷达图

    目录 综述 绘图代码和解析 绘制一张多主体雷达图 绘制多张单主体雷达图 总结 综述 python的matplotlib画图库的功能非常强大,可以画很多很多种图,我们日常生活中遇到的雷达图也不例外. 雷达图也被称为网络图,蜘蛛图,星图等,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指标,应用场景非常多,比如本篇博客中,用来展示球员的不同能力的区别. matplotlib库中的雷达图绘制是基于极坐标的,因此所有的数据和标签都要根据角度来计算出位置. 本篇博客将详细的解释绘制雷达图过程中的

  • python绘制三维图的详细新手教程

    目录 一.初始化 二.直线绘制(Line plots) 三.散点绘制(Scatter plots) 四.线框图(Wireframe plots) 五.表面图(Surface plots) 六.三角表面图(Tri-Surface plots) 七.等高线(Contour plots) 八.Bar plots(条形图) 九.子图绘制(subplot) 补充: 总结 本文仅仅梳理最基本的绘图方法. 一.初始化 假设已经安装了matplotlib工具包. 利用matplotlib.figure.Figu

  • python 含子图的gif生成时内存溢出的方法

    今天想用python做个demo,含两个子图的动态gif,代码如下: import matplotlib.pyplot as plt import imageio,os import matplotlib # plt.ion() fig=plt.figure(0) ax1=plt.subplot(121) ax2=plt.subplot(122) ax1.set_title('input') ax2.set_title('GT') for i in range(1000): img1=plt.i

随机推荐