Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图

简介: 这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。

1.将不同的图绘制在一起

import cv2
import numpy as np

def mul_pics(img1,img2,img3,img4,img5,img6,img7,img8):
    """为了结合多张图绘制成一张图 利用 np.hstack、np.vstack实现一幅图像中显示多幅图片"""
    results = (img1,img2,img3,img4)
    results1 = (img5,img6,img7,img8)
    # np.hstack()将两个数组按列放到一起
    line1 = np.hstack(results[:2])
    line2 = np.hstack(results[2:4])
    line3 = np.hstack(results1[:2])
    line4 = np.hstack(results1[2:4])
    combined = np.vstack([line1, line2])  # 将多个数组按行放到一起
    combined1 = np.vstack([line3, line4])  # 将多个数组按行放到一起
    cv2.namedWindow('Result', cv2.WINDOW_NORMAL)
    cv2.namedWindow('Result1', cv2.WINDOW_NORMAL)
    cv2.imshow('Result', combined)
    cv2.imshow('Result1', combined1)
    cv2.imwrite('F:\epycharm\HSB_match\pic\Result_a1_a4.jpg',combined)
    cv2.imwrite('F:\epycharm\HSB_match\pic\Result_a4_a8.jpg',combined1)
    cv2.waitKey(0)

# img1 = cv2.imread('F:\epycharm\HSB_match\pic\A1.png',cv2.IMREAD_COLOR)
# img2 = cv2.imread('F:\epycharm\HSB_match\pic\A2.png',cv2.IMREAD_COLOR)
# img3 = cv2.imread('F:\epycharm\HSB_match\pic\A3.png',cv2.IMREAD_COLOR)
# img4 = cv2.imread('F:\epycharm\HSB_match\pic\A4.png',cv2.IMREAD_COLOR)
# img5 = cv2.imread('F:\epycharm\HSB_match\pic\A5.png',cv2.IMREAD_COLOR)
# img6 = cv2.imread('F:\epycharm\HSB_match\pic\A6.png',cv2.IMREAD_COLOR)
# img7 = cv2.imread('F:\epycharm\HSB_match\pic\A7.png',cv2.IMREAD_COLOR)
# img8 = cv2.imread('F:\epycharm\HSB_match\pic\A8.png',cv2.IMREAD_COLOR)
# mul_pics(img1,img2,img3,img4,img5,img6,img7,img8)

2.将不同txt文档中的数据绘制多条折线图

在这里插入图片描述

import matplotlib.pyplot as plt

file = open('F:\epycharm\HSB_match\excel_file\决策树.txt')  #决策
file1 = open('F:\epycharm\HSB_match\excel_file\随机森林20.txt')  #随机-20
file2 = open('F:\epycharm\HSB_match\excel_file\随机森林25.txt')  #随机-25
file3 = open('F:\epycharm\HSB_match\excel_file\随机森林30.txt')  #随机-30

data = file.readlines() #读取文档数据
data1 = file1.readlines() #读取文档数据
data2 = file2.readlines() #读取文档数据
data3 = file3.readlines() #读取文档数据

para_1 = []  #新建列表,决策
para_2 = []  #新建列表,随机-25
para_3 = []  #新建列表,随机-20
para_4 = []  #新建列表,随机-30
for num in data:
    # split用于将每一行数据用逗号分割成多个对象
    #取分割后的第0列,转换成float格式后添加到para_1列表中
    para_1.append(float(num.split(',')[0]))
for num in data1:
    # split用于将每一行数据用逗号分割成多个对象
    # 取分割后的第0列,转换成float格式后添加到para_1列表中
    para_2.append(float(num.split(',')[0]))
for num in data2:
    # split用于将每一行数据用逗号分割成多个对象
    #取分割后的第0列,转换成float格式后添加到para_1列表中
    para_3.append(float(num.split(',')[0]))
for num in data3:
    # split用于将每一行数据用逗号分割成多个对象
    #取分割后的第0列,转换成float格式后添加到para_1列表中
    para_4.append(float(num.split(',')[0]))

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
para_1.sort()
# for i in range(len(para_1)):
#     f = open('F:\epycharm\HSB_match\excel_file\data2.txt', 'a')
#     f.write(str(i))
#     f.write('\n')
#
para_2.sort()
para_3.sort()
print(min(para_1))
print(max(para_1))
print('............')
print(min(para_2))
print(max(para_2))
print('............')
print(min(para_3))
print(max(para_3))
print('............')
para_4.sort()

# for i in range(len(para_2)):
#     f = open('F:\epycharm\HSB_match\excel_file\data3.txt', 'a')
#     f.write(str(i))
#     f.write('\n')
plt.figure()
plt.xlabel('steps', fontsize=10)  # x轴表示
plt.ylabel('R2_score', fontsize=10)  # y轴表示
plt.title('决策树R2分数对比图')
plt.plot(para_1,markerfacecolor='r',label='决策树')
plt.plot(para_2,markerfacecolor='b',label='随机森林-20')
plt.plot(para_3,markerfacecolor='b',label='随机森林-25')
# plt.plot(para_4,markerfacecolor='b',label='随机森林-30')
plt.legend()
plt.show()

如果对于一行有两个数据

def loadData0(flieName1, flieName2):
    inFile1 = open(flieName1, 'r')  # 以只读方式打开某fileName文件
    inFile2 = open(flieName2, 'r')
    # 定义两个空list,用来存放文件中的数据
    x = []
    y = []

    for index, line in enumerate(inFile1):
        x.append(float(line))
    for index, line in enumerate(inFile2):
        y.append(float(line))

    return x, y  # 注意,若返回的为元组(x, y),则画图的时候python不能区分大小
目录
相关文章
|
22天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
27 1
|
23天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
23天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
61 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
22天前
|
索引 Python
SciPy 空间数据1
SciPy 通过 `scipy.spatial` 模块处理空间数据,如判断点是否在边界内、计算最近点等。三角测量是通过测量角度来确定目标距离的方法。多边形的三角测量可将其分解为多个三角形,用于计算面积。Delaunay 三角剖分是一种常用方法,可以对一系列点进行三角剖分。示例代码展示了如何使用 `Delaunay()` 函数创建三角形并绘制。
29 0
|
10天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
SQL 安全 关系型数据库
python 从txt导数据到mysql
!/usr/bin/python encoding:utf-8 import MySQLdb db = MySQLdb.connect("127.0.0.
905 0
|
16天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
16天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
16天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!