matplotlib中的pyplot实用详解

news2024/11/29 20:37:08

matplotlib中的pyplot实用详解

  • 示例1:使用axes确定子图的位置
    • 相关函数详解
      • 1、plt.subplot()
      • 2、plt.subplots_adjust() 与 plt.axes()来控制子图的位置

示例1:使用axes确定子图的位置

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

# 固定随机种子
np.random.seed(0)

# 2行1列的子图1
plt.subplot(211)
plt.imshow(np.random.random((10, 10)))
# 2行1列的子图2
plt.subplot(212)
plt.imshow(np.random.random((10, 10)))

plt.subplots_adjust(left=0, bottom=0, right=1, top=1) #调整子图的位置
# [left, bottom, width, height]确定子图位置
cax = plt.axes([0.8, 0, 0.06, 1])
plt.colorbar(cax=cax)

plt.show()

相关函数详解

1、plt.subplot()

官网参考链接:matplotlib-pyplot-subplot
输入的参数有以下4种情况:

subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)

        三个整数(nrows、ncols、index)。子图将占据nrows行和ncols列网格上的索引位置。索引从左上角的1开始,向右增加。index也可以是指定子时隙的(第一个,最后一个)索引(以1为基础,包括最后一个索引)的两元组,例如,fig.add_subplot(3,1,(1,2))构成了一个跨越图上部2/3的子时隙。

加粗样式

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.transforms as mtransforms

# 固定随机种子
np.random.seed(0)

# 确定画布的大小
fig = plt.figure(figsize=(10,20))


# plt.subplot(421)等价于plt(4,2,1),即3行两列中的第一个子图
ax1 = plt.subplot(4, 2, 1, title="first subplot (4,2,1)")
plt.imshow(np.random.random((10, 10)))

# 这个子图没有边框
ax2 = plt.subplot(422, frame_on=False, title="no frame subplot")
plt.imshow(np.random.random((10, 10)))

# 极坐标子图
ax3 = plt.subplot(423, projection='polar', title="polar subplot")
xs = np.arange(7)
ys = xs**2
trans_offset = mtransforms.offset_copy(ax3.transData, fig=fig, y=5, units='dots')
'''
x, y : float, default: 0.0 -> x,y方向上偏移的距离.
'''
for x, y in zip(xs, ys):
    plt.polar(x, y, 'ro')
    plt.text(x, y, '%d, %d' % (int(x), int(y)),
            transform=trans_offset,
            horizontalalignment='center',
            verticalalignment='bottom')

# 添加红色背景,因为和ax2共享x轴的比例
plt.subplot(424, sharex=ax2, facecolor='red', title="red facecolor subplot")
plt.imshow(np.random.random((10, 10)))

# (5,6)代表这个子图可以使用原本5,6这两个子图的空间,并于ax2共享比例,可以看到,比例是由最大的那个决定的
plt.subplot(4,2,(5, 6), sharex=ax2, title="corss (5,6) subplot")
plt.imshow(np.random.random((10, 28)))

# 刻度线
plt.subplot(4,2,7, title="about ticks change subplot 1")
plt.minorticks_on() #开启微小刻度线
plt.tick_params(which='major',width=4) #让主刻度线变粗


# 刻度线
plt.subplot(4,2,8, title="about ticks change subplot 2")
plt.minorticks_off()
plt.tick_params(top=True,bottom=False,left=False,right=False)
plt.tick_params(labeltop=True,labelleft=False,labelright=False,labelbottom=False)

plt.show()

2、plt.subplots_adjust() 与 plt.axes()来控制子图的位置

        plt.subplots()能够自动确定子图的位置,但是不够灵活,而通过plt.subplots_adjust() 与 plt.axes()就可以实现子图任意位置的摆放。
        假设我现在有如下长条状的图片imgs:
在这里插入图片描述
        然后通过plt.subplots_adjust() 与 plt.axes()我可以让多张这样的图片根据我喜欢的位置进行排列。其用法如下:
        plt.subplots_adjust():
        Parameters:
        left: float, optional
        子图左边缘的位置,作为图形宽度的一部分。
        right:float, optional
        子图右边缘的位置,作为图形宽度的一部分。
        bottom:float, optional
        子图底边缘的位置,作为图形宽度的一部分。
        top:float, optional
        子图顶边缘的位置,作为图形宽度的一部分。
        wspace:float, optional
        子图之间的填充宽度,作为平均轴宽度的一部分。
        hspace:float, optional
        子图之间的填充高度,作为平均轴宽度的一部分。

        plt.axes()
        最主要的Parameters:
        rect: [left, bottom, width, height] -> 分别代表子图的左下点位置,以及子图的宽、高。
在这里插入图片描述

# 添加一个覆盖整个窗口的子图,背景色为灰色
plt.axes(facecolor='grey')
# 取消标签
plt.tick_params(top=False,bottom=False,left=False,right=False)
plt.tick_params(labeltop=False,labelleft=False,labelright=False,labelbottom=False)

plt.subplots_adjust(left=0, bottom=0, right=1, top=1)
plt.axes([0, 0.9, 1, 0.15])
imshow(imgs)

plt.axes([0, 0.75, 1, 0.15])
imshow(imgs)

plt.axes([0, 0.6, 1, 0.15])
imshow(imgs)

plt.axes([0, 0.45, 1, 0.15])
imshow(imgs)

plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Typescript 学习笔记(二)高级类型二

交叉类型 交叉类型(&):功能类似于接口继承(extends),用于组合多个类型为一个类型(常用于对象类型) interface Person2 {name: string} interface Contact {phone: number} typ…

有一个是对的,就是坚持去做难的事情。

不要总是想着去找那些让自己赚到的工作,你自己心里清楚,自己有几斤几两,配什么样的公司。不要贪,不然最后原本该得到的都没有得到。你找差点的工作心里也踏实对不对,不会说比较慌,每天都过不安稳。不要幻想…

软件设计师--其他高频考点总结

视频2022软件设计师-提炼高频考点-个人学习过程的总结,仅供参考!_哔哩哔哩_bilibili 目录 1,网络攻击 2,网络安全 3,防火墙 4,耦合 --模块之间相对独立性的度量 5,内聚--模块间内部元素彼此紧密的程度…

Python与爬虫有什么关系?

爬虫一般是指网络资源的获取,因为python的脚本特征,Python易于配置,对字符的处理也非常灵活,加上python有丰富的网络抓取模块,所以两者经常联系在一起。 接下来我们可以详情了解python到底有什么作用。 首先Python翻译…

B树和B+树的区别

【篇首语】: 渐渐地,面试时被问起数据结构,MySQL调优,索引的原理等。首先感谢《王道计算机考研》的一些课程,让我学到了很多。 其实在这个问题之前,应该先了解扇区、磁道、磁盘存储数据的方式等相关概念&a…

荧光标记染料:diSulfo-Cy3 azide,2055138-89-9,二磺酸-Cy3-叠氮

【中文名称】二磺酸-Cy3-叠氮 【英文名称】 diSulfo-Cy3 azide 【结 构 式】 【CAS】2055138-89-9 【分子式】C33H41KN6O7S2 【分子量】736.94 【纯度标准】95% 【包装规格】1mg,5mg,10mg 【是否接受定制】可进行定制 【外观颜色】 红色固体&#xff0…

Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用

Spring注解NonNull作用 Spring注解Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用 一、概述 在看Spring源码的时候,经常会发现有 NonNull 或 Nullable 注解的标记,一般是在方法上,或在 参数中,本着好奇的心里&…

【JavaWeb】第三章 JavaScript基础

文章目录1、JavaScript介绍2、JavaScript和HTML代码的结合方式2.1 第一种方式2.2 第二种方式3、JS的变量和数据类型4、JS关系运算符5、JS逻辑运算符6、数组7、JS函数的定义8、JS函数的隐形参数arguments9、JS中的自定义对象1、JavaScript介绍 JavaScript(JS&#x…

摸鱼时,我用几百张字符画做了个动画......

摸鱼时,我用几百张字符画做了个动画…,话不多说,先来看成果: 完整效果视频已上传至B站:摸鱼时我用Java IO流证明了爱坤! 事情是这样的… … 学校马上就要开展第20届程序设计大赛了,半年没有练…

Java对象深拷贝 终极方案 deep clone an object

Java对象深拷贝 终极方案定义 深拷贝深拷贝常见误区spring / apache commons 等工具类的 BeanUtils.copy 方法 ❌正确做法: 上中下3策 ✔json 序列化 (用jackson,别用其他的gson/fastjson/json-lib 等,不解释)objectMapper 工具类初始化1. 对…

CDC Schemes

CDC Schemes 下面是一些questa使用时常见的cdc schemes的解释 reconvergence reconvergence的原理如下图所示 如上图所示,sig1和sig2经sync cell同步过来后,又在组合逻辑上reconvergence了,最后送到rx domain的flip-flop上; Fan-in of a flip-flop includes at least t…

跨境物流美国专线的注意事项是哪些

目前国内运输需求最大的物流运输是美国专线,深圳、广州、杭州等地有很多美国专线货运公司。虽然每个人的选择都比较灵活,但是专线物流运输也有很多注意事项,否则会影响货物的运输。那么对于跨境物流美国专线的注意事项,你了解多少…

7. Spring Boot2.5 安全机制与 REST API 身份验证实战

文章目录Spring Boot2.5 安全机制与 RESTAPI 身份验证实战一、Java Spring Boot 2.5 安全机制Java Spring Boot 2.0 安全机制安全漏洞安全漏洞建议总结:Java Spring SecurityJava 安全框架 Shiro二、Java Spring Boot 2.5 安全实战Spring Security Demo2. WebSecuri…

【Python】pyinstaller打包百科全书

前言 记录pyinstaller打包中的常用命令和报错。 详细的还是去官网自己看吧,这里只记录打包中常用到的命令。 如果我这里帮助不到你, 官网在这里:https://github.com/pyinstaller/pyinstaller 这两篇文章基本覆盖100%的报错了, 参…

【微服务】分布式下服务调用产生的问题之服务容错

服务容错前言模拟高并发场景压测测试服务雪崩效应常见容错方案隔离超时限流熔断降级常见的容错组件HystrixResilience4JSentinel总结前言 上篇中,我们了解了Ribbon的概念,也实现了基于Ribbon的服务调用,但同样也引发了另一个问题&#xff0c…

什么?“裸辞”一个月拿到13家offer,网友:你是在找存在感吗···

相信大家都知道天下分久必合、合久必分的道理,所以,一旦行业发展成熟,必定会重新洗牌,就像朝代的更替一样,去其糟粕,取其精华!现在互联网发展就是遇到了这样的瓶颈期,出现了衰退&…

【Mac】VSCode 更新1.73版本后JSTS代码跳转异常

前言 今天有小伙伴MacOS更新了VS Code版本后,说工程内的代码跳转全部异常了,没法正确跳转。搞了两三个小时没搞出来,找到了我,让我帮忙瞧瞧。排查下来发现这问题有点意思,故此记录一下。 问题 排查姿势 1. 提示没有定…

【数据结构】单链表

文章目录单链表链表的概念及结构链表的分类链表的实现动态申请一个节点创建链表单链表打印单链表尾插单链表尾删单链表头插单链表头删单链表 链表的概念及结构 概念:链表是一种物理存储结构上连续、非顺序的存储结构,数据元素的逻辑顺序 是通过链表中的…

代码中统一异常如何处理,才能让代码更清晰

背景 软件开发过程中,不可避免的是需要处理各种异常,甚至有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块,不仅有大量的冗余代码,而且还影响代码的可读…

力扣刷题链表需要调试?一个简单的调试器帮你解决苦恼

本人在刷链表题时,由于是新手,所以老是过不去,需要调试,力扣会员开不起,在VS自己创建一个链表太麻烦 ,所以就有了今天这个 对于懒人的调节力扣链表便捷器 这个东西很简单,但是很有效 文章目录1.…