Python+Matplotlib展示单射、双射、满射

news2024/10/3 20:19:20

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

def create_function_plot(ax, title, x, y, connections):
    ax.set_xlim(0, 5)
    ax.set_ylim(0, 5)
    ax.set_aspect('equal')
    ax.set_title(title)
    ax.set_xticks([])
    ax.set_yticks([])
    ax.text(2.5, -0.5, "X", ha='center')
    ax.text(-0.5, 2.5, "Y", va='center', rotation=90)
    
    for i, xi in enumerate(x):
        ax.plot(xi, 0, 'bo')
        ax.text(xi, -0.3, f'x{i+1}', ha='center')
    
    for i, yi in enumerate(y):
        ax.plot(0, yi, 'ro')
        ax.text(-0.3, yi, f'y{i+1}', va='center')
    
    for xi, yi in connections:
        ax.annotate("", xy=(0, yi), xytext=(xi, 0), 
                    arrowprops=dict(arrowstyle="->", color='g'))

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 5))

# 单射(Injection)
x_inj = [1, 2, 3, 4]
y_inj = [1, 2, 3, 4, 5]
connections_inj = [(1, 1), (2, 3), (3, 4), (4, 2)]
create_function_plot(ax1, "单射 (Injection)", x_inj, y_inj, connections_inj)

# 满射(Surjection)
x_surj = [1, 2, 3, 4, 5]
y_surj = [1, 2, 3, 4]
connections_surj = [(1, 1), (2, 2), (3, 3), (4, 4), (5, 2)]
create_function_plot(ax2, "满射 (Surjection)", x_surj, y_surj, connections_surj)

# 双射(Bijection)
x_bij = [1, 2, 3, 4]
y_bij = [1, 2, 3, 4]
connections_bij = [(1, 3), (2, 1), (3, 4), (4, 2)]
create_function_plot(ax3, "双射 (Bijection)", x_bij, y_bij, connections_bij)

plt.tight_layout()
plt.show()

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

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

相关文章

UE4 材质学习笔记01(什么是着色器/PBR基础)

1.什么是shader 着色器是控制屏幕上每个像素颜色的代码,这些代码通常在图形处理器上运行。 现如今游戏引擎使用先进的基于物理的渲染和照明。而且照明模型模型大多数是被锁定的。 因此我们创建着色器可以控制颜色,法线,粗糙度,…

十一假期不停歇-学习ROS第二天

一、自动修改环境变量 source install/setup.bash 这句指令可不重复添加环境变量,直接运行就可以。 从左右图即可即可看出有所不同的。以后写完功能包发现不存在那就source一下就好了。 实际上它运行的是 python3.10那里的功能包与节点 我们在创建完功能包会出…

python-矩阵转置/将列表分割成块/和超过N的最短子数组

一:矩阵转置 题目描述 输入一个 n 行 m 列的矩阵 A,输出它的转置 AT。输入 第一行包含两个整数 n 和 m,表示矩阵 A 的行数和列数。1≤n≤100,1≤m≤100。接下来 n 行,每行 m 个整数,表示矩阵 A 的元素。相邻…

别再为开题报告发愁了,ChatGPT可以助力你高效完成!

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 面对开题报告时,我们常常感到迷茫和压力。如何清晰地表达研究目的、梳理文献综述、明确研究问题与假设,以及构建合理的研究方法,这些环节都对开题报告…

OpenCV-图像拼接

文章目录 一、基本原理二、步骤三、代码实现1.定义函数2.读取图像3.图像配准(1).特征点检测(2).特征匹配 4.透视变换5.图像拼接 四、图像拼接的注意事项 图像拼接是一种将多张有重叠部分的图像合并成一张无缝的全景图或高分辨率图…

蓝桥杯【物联网】零基础到国奖之路:十七. 扩展模块之单路ADC和NE555

蓝桥杯【物联网】零基础到国奖之路:十七. 扩展模块之单路ADC和NE555 第一节 硬件解读第二节 CubeMx配置第三节 代码1,脉冲部分代码2,ADC部分代码![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/57531a4ee76d46daa227ae0a52993191.png) 第一节 …

基于工业物联网的能源监控系统:边缘数据处理的应用

论文标题:《Industrial IoT-Based Energy Monitoring System: Using Data Processing at Edge》 作者信息: Akseer Ali MiraniAnshul AwasthiNiall O’MahonyJoseph Walsh 他们均来自爱尔兰的芒斯特技术大学IMaR研究中心,以及位于利默里克的…

秋招校招北森笔试测评北森笔测评常见图推题目解答

北森笔试测评常见题目解析第二弹: P1:每一行均出现圆,米,口加上内部的菱形和小圆形,行测上称之为遍历。 P2:题干也给提示了,肯定不选9,考虑封闭部分,选11. P3&#xf…

面试速通宝典——7

150. 数据库连接池的作用 数据库连接池的作用包括以下几个方面: 资源重用:连接池允许多个客户端共享有限的数据库连接,减少频繁创建和销毁连接的开销,从而提高资源的利用率。 统一的连接管理:连接池集中管理数据库连…

访问webapps下边的内容不能访问解决办法

1、看是否是带有中文路径,中文路径访问不了 2、是否在访问的时候没有带8080端口 如图,带有8080就可以访问了 原因: 当你尝试通过 http://localhost:8080/hello/hello.html 访问网页时,端口号 “8080” 指定了该请求将发送到本地主…

STM32-MPU6050+DAM库源码(江协笔记)

目录 1、MPU6050简介 2、MPU6050参数 3、MPU6050硬件电路 4、MPU6050结构 5、MPU6000和MPU6050的区别 6、MPU6050应用场景 7、MPU6050电气参数 8、MPU6050时钟源选择 9、MPU6050中断源 10、MPU6050的I2C读写操作 11、DMP库移植 1、MPU6050简介 10轴传感器&#xff1…

使用CSS实现酷炫加载

使用CSS实现酷炫加载 效果展示 整体页面布局 <div class"container"></div>使用JavaScript添加loading加载动画的元素 document.addEventListener("DOMContentLoaded", () > {let container document.querySelector(".container&q…

Unity初识+面板介绍

Unity版本使用 小版本号高&#xff0c;出现bug可能性更小&#xff1b;一台电脑可以安装多个版本的Unity&#xff0c;但是需要安装在不同路径&#xff1b;安装Unity时不能有中文路径&#xff1b;Unity项目路径也不要有中文。 Scene面板 相当于拍电影的片场&#xff0c;Unity程…

前缀和+思维,CF 1984C2 - Magnitude (Hard Version)

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1984C2 - Magnitude (Hard Version) 二、解题报告 1、思路分析 C1 是只要…

Docker巩固十七问

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 1. 如何批量清理临时镜像文件&#xff1f; 所谓的“临时镜像”或“虚悬镜像”&#xff08;dangling images&#xff09;是指那些…

动态规划算法专题(二):路径问题

1. 不同路径 . - 力扣&#xff08;LeetCode&#xff09; 1.1 算法原理 状态表示dp[i][j]&#xff1a;走到(i,j)位置&#xff0c;一共有多少种方法&#xff08;以(i,j)位置为结尾&#xff09;状态转移方程&#xff1a;dp[i][j]dp[i-1][j]dp[i][j-1];初始化&#xff1a;dp[0][1…

SSM超市进销存管理系统源码

主要功能说明&#xff1a; 管理员角色包含以下功能&#xff1a;管理员登录、进货管理、商品信息、类别管理、库存管理、销售管理、 客户信息管理、供应商管理、员工管理、修改管理员个人信息等功能。 员工角色包含以下功能&#xff1a;员工登录、进货信息查看、退货信息管理…

大华智慧园区综合管理平台系统存在多处漏洞

漏洞描述 大华智慧园区综合管理平台是一个集智能化、信息化、网络化、安全化为一体的智慧园区管理平台&#xff0c;旨在为园区提供一站式解决方案&#xff0c;包括安防、能源管理、环境监测、人员管理、停车管理等多个方面。 FOFA app"dahua-智慧园区综合管理平台"…

【Linux庖丁解牛】—Linux基本指令(中)!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a; Linux庖丁解牛 &#x1f516;克心守己&#xff0c;律己则安 目录 1、rmdir与rm指令 2、man指令 3、cp指令 4、mv指令 5、cat与tac指令 6、重定向 7、more指令 8、…

【AIGC】ChatGPT账号的常见封号原因与解封方法

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;ChatGPT封号背景与常见原因ChatGPT封号行动背景ChatGPT常见的封号原因 &#x1f4af;OpenAl封号规则总结&#x1f4af;使用ChatGPT时防止封禁需要特别注意的细节和建议&a…