Python论文多图绘制+代码+代码解读+绘图经验分享(3)

目录

    • 功能说明
      • 【说明一些代码模块的从属关系的图】
      • 【代码注释】
        • 代码功能描述
        • 代码内容
        • 代码的输出,总结

功能说明

在做一些仿真实验时,得到的实验系列结果图会有很多。我们需要讲这一系列的图拼接起来,今天我们就来一起学习如何将一系列的图放在一个图中。从文件读取到图形绘制。

【说明一些代码模块的从属关系的图】

代码逻辑

读取仿真结果文件
拼接图形
保存图像

【代码注释】

代码功能描述
  1. 能够从仿真实验的结果文件夹中读取和图相关的文件。我的仿真文件在以.out结尾的文件夹下,是一系列以n.png结尾的图形文件。首先读取这些图形文件。
  2. 读取之后,能够将所有的图形粘贴在一幅大图里。
代码内容
  1. 确认代码能够运行
import os
from PIL import Image# 仿真结果文件夹路径。如果是其他储存路径在这里改
simulation_dir = "your_file_location"  # 替换为仿真结果文件夹的路径# 列出所有的'.png'文件,如果是其他类型的文件在这里改
image_files = [f for f in os.listdir(simulation_dir) if f.endswith('.png')]# 排序文件以保证顺序(如果需要的话)
image_files.sort()# 读取图像并获取单个图像的尺寸
images = [Image.open(os.path.join(simulation_dir, file)) for file in image_files]
widths, heights = zip(*(i.size for i in images))# 设置图像间的空隙大小(以像素为单位),这样保存图时中间的间隙能使图形排布更好看,不紧凑
gap = 10  # 间隙为10像素# 计算总的宽度和最大的高度(如果希望横向拼接)
# 现在总宽度还需要加上间隙的总宽度(图像数量减一乘以间隙宽度)
total_width = sum(widths) + (len(images) - 1) * gap
max_height = max(heights)# 创建新的图像,其中宽度是所有图像宽度之和加上所有间隙的宽度,高度是最高的图像高度
result_image = Image.new('RGB', (total_width, max_height), color=(255, 255, 255))  # 使用白色背景# 拼接图像
x_offset = 0
for im in images:result_image.paste(im, (x_offset, 0))x_offset += im.size[0] + gap  # 在下一个图像粘贴前增加间隙# 保存大图
result_image.save('combined_image.png')
  1. 得到结果后,确认中间部分代码逻辑无误后。打包代码为方程黑盒,以便之后反复使用。
    在function下写好注释,解释好这段代码的功能是什么。需要什么输入输出。
import os
import re
from PIL import Imagedef atoi(text):return int(text) if text.isdigit() else text# 自然排序而非字符的字典顺序
def natural_keys(text):return [atoi(c) for c in re.split(r'(\d+)', text)]def combine_images(simulation_dir, output_image_path, gap=10):"""Combine images from a simulation directory into a single image with gaps.Parameters:- simulation_dir: Path to the directory containing the simulation images.- output_image_path: Path where the combined image will be saved.- gap: The gap size in pixels between images. Default is 10 pixels."""# 列出所有的'.png'文件image_files = [f for f in os.listdir(simulation_dir) if f.endswith('.png')]# 排序文件以保证顺序(如果需要的话)#image_files.sort()# 使用自然排序算法对文件进行排序image_files.sort(key=natural_keys)# 读取图像并获取单个图像的尺寸images = [Image.open(os.path.join(simulation_dir, file)) for file in image_files]widths, heights = zip(*(i.size for i in images))# 计算总的宽度和最大的高度(如果希望横向拼接)# 现在总宽度还需要加上间隙的总宽度(图像数量减一乘以间隙宽度)total_width = sum(widths) + (len(images) - 1) * gapmax_height = max(heights)# 创建新的图像,其中宽度是所有图像宽度之和加上所有间隙的宽度,高度是最高的图像高度result_image = Image.new('RGB', (total_width, max_height), color=(255, 255, 255))  # 使用白色背景# 拼接图像x_offset = 0for im in images:result_image.paste(im, (x_offset, 0))x_offset += im.size[0] + gap  # 在下一个图像粘贴前增加间隙# 保存大图result_image.save(output_image_path)print(f"Image successfully saved to {output_image_path}")# 使用函数示例
combine_images(simulation_dir="path_input",  # 替换为仿真结果文件夹的路径output_image_path="path_output",  # 替换希望保存合成图像的路径gap=20  # 可以调整间隙大小,让仿真图与图之间不会过于紧密
)
代码的输出,总结

以上代码是可以被反复使用的,打包好的图像处理代码。

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

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

相关文章

定时器的实现

一、定时器是什么 ? 定时器是组织大量定时任务的模块。定时器是项目底层基础的一个模块,很多业务场景中都需要解决一个问题:延时处理某些任务。 二、定时器的应用 心跳检测 keepalive。应用层发送心跳包 。 倒计时。其他需要延时处理的功能。 三、定时…

大型连锁企业异地组网稳定性提升指南

随着时代的发展,连锁企业在网络方面面临着越来越多的挑战。这些企业在不同的地理位置设有分支机构和门店,可能是同城也可能是异地,因此需要确保各个地点之间的网络连接稳定可靠。然而,由于不同地区网络基础设施、延迟和带宽等方面…

sort和sorted的区别使用

llist(map(int,input().split())) bsorted(l,reverseFalse)#reverseTrue是降序,False是降序 print(b) #sorted()函数是将一个排好序的列表赋给另一变量 a.sort(reverseFalse)#用法和sorted一样 #只不过sort函数直接将列表进行排序不能赋给其他…

代码随想录:栈与队列4-6

20.有效的括号 题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一…

打卡--MySQL8.0 四 (索引及执行计划)

一、索引的创建与使用 1、索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 (1)从 功能逻辑 上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。 (…

【测试开发学习历程】python迭代、可迭代对象、迭代器、生成器

1 迭代Iteration 迭代Iteration:所谓迭代就是重复运行一段代码语句块的能力,就好比在一个容器中进行一层一层遍历数据,在应用过程中for循环最为突出。迭代就是从某个容器对象中逐个地读取元素,直到容器中没有元素为止。迭代迭代&…

maven: 标签总结

文章目录 一、scope二、type 一、scope 控制依赖项不同阶段的可见性和使用范围。 <!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version…

【动态规划-线性dp】【蓝桥杯备考训练】:乌龟棋、最长上升子序列、最长公共子序列、松散子序列、最大上升子序列和【已更新完成】

目录 1、乌龟棋 2、最长上升子序列 3、最长公共子序列 4、松散子序列 5、最大上升子序列和 1、乌龟棋 小明过生日的时候&#xff0c;爸爸送给他一副乌龟棋当作礼物。 乌龟棋的棋盘只有一行&#xff0c;该行有 N 个格子&#xff0c;每个格子上一个分数&#xff08;非负整数&am…

【R基础】一组数据计算均值、方差与标准差方法及意义

【R基础】一组数据计算均值、方差与标准差方法及意义 均值、方差与标准差是用来描述数据分布情况 均值&#xff1a;用来衡量一组数据整体情况。 数据离散程度度量标准&#xff1a; 方差&#xff08;均方&#xff0c;s^2&#xff0c;总体参数&#xff0c;离均差平方和&#…

AI大模型原理科普(深度好文)

目录 认识AI大模型家族 AI是什么&#xff1f; 机器学习是什么&#xff1f; 机器学习有哪些分支&#xff1f; 什么是强化学习&#xff1f; 深度学习属于哪一类学习&#xff1f; 生成式AI和深度学习是什么关系&#xff1f; 大语言模型是什么&#xff1f; 所有大语言模型…

【Java】HashMap 源码阅读

HashMap 源码阅读 HashMap 简介 HashMap 主要用来存放键值对&#xff0c;实现了基于哈希表的 Map 接口&#xff0c;非线程安全。 HashMap 可以存放 null 的 key 和 null 值&#xff0c;但 null 作为 key 只能有一个&#xff0c;null 作为 value 可以有多个。 HashMap 有两个…

靡语IT:Bootstrap 简介

1.1 Bootstrap 简介&#xff1a;什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap是前端开发中比较受欢迎的框架&#xff0c;简洁且灵活。它基于HTML、CSS和JavaScript&#xff0c;HTML定义页面元素&#xff0c;CSS定义页面布局&…

BFS广度优先搜索

import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您…

业务逻辑漏洞(靶场) fiddler

目录 fiddler简介&#xff1a; 业务逻辑漏洞&#xff1a; fiddler下载 靶场&#xff1a; 实验一 ​编辑实验二&#xff08;ps 更改实验url会变&#xff0c;fiddler没抓到东西看看代理改没改&#xff09; 实验三 实验四 fiddler简介&#xff1a; 一款网络抓包工具&#…

内部类、泛型、常用API

内部类 内部类是类中的五大成分之一&#xff08;成员变量、方法、构造器、代码块、内部类&#xff09; 如果一个类定义在另一个类的内部&#xff0c;这个类就是内部类。 场景&#xff1a;当一个类的内部&#xff0c;包含了一个完整的事物&#xff0c;且这个事物没有必要单独设…

20240403-算法复习打卡day43||● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

1049. 最后一块石头的重量 II class Solution { public:int lastStoneWeightII(vector<int>& stones) {vector<int> dp(15001, 0);int sum 0;for (int i 0; i < stones.size(); i) sum stones[i];int target sum / 2;for (int i 0; i < stones.siz…

智慧城市中的物联网革命——青创智通

工业物联网解决方案-工业IOT-青创智通 得益于物联网 (IoT)的变革力量&#xff0c;智慧城市的概念正在迅速成为现实。物联网正在从根本上改变城市的运作方式&#xff0c;为城市居民带来更高的效率、可持续性和生活质量。在本文中&#xff0c;我们将探讨物联网在智慧城市中的作用…

49 样式迁移【李沐动手学深度学习v2课程笔记】

1. 样式迁移&#xff08;Style Transfer) 计算机视觉的应用之一&#xff0c;将样式图片中的样式&#xff08;比如油画风格等&#xff09;迁移到内容图片&#xff08;比如实拍的图片&#xff09;上&#xff0c;得到合成图片 可以理解成为一个滤镜&#xff0c;但相对于滤镜来讲…

SAP ABAP CDS-02 ABAP CDS语法

ABAP CDS中的CDS DDL和CDS DCL的语法包括一般SQL DDL和DCL的元素&#xff0c;还可以定义注释和CDS关联。其语法和语义基本符合CDS的一般概念。 ABAP CDS - 一般语法规则&#xff08;General Syntax Rules&#xff09; 在ABAP CDS中定义CDS对象的CDS DDL和CDS DCL的一般语法规…

基于SSM框架JAVA仓库管理系统源代码Mysql数据库(可当毕设,实训项目,设计大赛)

仓库管理系统实现的功能包括店铺管理&#xff0c;员工管理&#xff0c;部门管理&#xff0c;商品管理&#xff0c;权限管理&#xff0c;入库管理&#xff0c;出库管理&#xff0c;盘点管理&#xff0c;统计管理等功能。该项目采用了Mysql数据库&#xff0c;Java语言&#xff0c…