基于VS Code的python项目编程-----通过python编程实现对桥梁健康监测数据及关联分析的可视化


对于python学习,我们也有很长一段时间的基础学习了,从基础逐步加深学习,慢慢到使用各种较难的包,再到整体项目的学习,python学习是一个连续的过程,深入的过程;本次博客,林君学长将带大家了解如何通过python的基本库 TK、matplotlib的可视化工具库以及其他的辅助库,完成一个桥梁健康监测数据的关联度可视化的整体python项目,帮助大家理解python的可视化的强大

一、整体项目简介

1、python项目介绍

1)、该python项目主要包括四个界面、分别为:登录界面、功能选择界面、数据可视化界面以及数据的互相关功能界面,在项目中对应的文件如下所示:
在这里插入图片描述
其中,3个txt文件我们不需要管,在进行互相关关联度分析的可视化的时候,会自动生成这是哪个txt文档;分别表示如下:
D_T.txt:代表位移(挠度)—温度的互相关系数记录
D_Y.txt:代表位移(挠度)—应变的互相关系数记录
Y_T.txt:代表应变—温度的互相关系数记录

2、桥梁健康监测数据

1)、挠度对应数据表格展示如下(部分):
在这里插入图片描述
2)、应变对应数据表格展示如下(部分):
在这里插入图片描述
3)、温度对应数据表格展示如下(部分):
在这里插入图片描述
3)、以上三种数据的表格在一个xls文件中哦,只是对于三张表格而已
在这里插入图片描述

3、整体项目下载

1)、林君学长已经将该项目上传到csdn我的资源模块,小伙伴们可以去该模块自行下载参考,下载链接如下所示:
https://download.csdn.net/download/qq_42451251/12346085

二、登录界面设计(login.py)

登录的时候需要用户输入账号、密码等数据,在通过为空校验,用户合法性校验之后登陆否则进行注册才能继续登陆,进入系统主页。
登录功能的界面是使用Python编写的,采用Tkinter和massagebox的包中的tk.Tk()和massagebox.showinfo()完成登陆界面的显示和产生,通过相应entry输入采集函数得到输入内容再用if判断语句到数据库的user表中select表的用户信息进行验证所有输入项是否为空或是否错误完成用户合法性的验证,为空或错误则给出对应的提示,并让用户完成注册才能登陆,界面由两个标签提示为要输入的账号和密码;两个输入框对应输入的账号密码;三个按钮对应登陆、注册和退出按钮来组成。

1、导入相关库

import tkinter as tk
import tkinter.messagebox as messagebox
from tkinter import StringVar
import back

tkinter库用来进行窗口设计
tkinter.messagebox主要用来消息提示
StringVar主要用来字符串赋值
back是功能选择界面的python文件名,这里主要用来代用其中的功能页面展示函数

2、输入密码函数定义

def show():
    if e1.get() == '1'and e2.get() == '1':
        str1 = tk.messagebox.showinfo(title='提示',message = '恭喜密码正确')
        if str1 == 'ok':
            root.destroy()
            back.back()
    else :
        string_a = '密码或账号错误 ,请重新输入!'
        messagebox.showinfo(title='提示', message = string_a)

这里没有用到数据库,因此认为设定用户和用户密码;
当输入用户名为1、密码为1的时候提示密码正确并且页面跳转到功能选择页面,back为功能选择界面的文件名,通过调用其中的函数back(),实现切换到功能界面显示;
当用户名和密码输入错误的时候,显示密码或账号错误,请重新输入,达到现实中进行登录界面交互的功能

3、登录界面及功能设计

1)、登录界面设计,用于与用户的交互,登录用户等

root = tk.Tk()
root.title('登陆')
tk.Label(root, text="账号:",font=20).grid(row=0, column=0)
tk.Label(root, font=20,text="密码:").grid(row=1, column=0)
e1=tk.Entry(root, textvariable=StringVar())
e1.grid(row=0, column=1)
e2=tk.Entry(root, show="●",textvariable=StringVar())
e2.grid(row=1, column=1)
tk.Button(root, text="登 陆", font=12,width=10,command=show).grid(row=2, column=0)
tk.Button(root, text="注 册", font=12,width=10,).grid(row=2, column=1)
tk.Button(root, text="退 出", font=12,width=10, command=root.destroy).grid(row=2, column=2)
root.mainloop()

2)、登录界面展示
在这里插入图片描述
登录成功如下:
在这里插入图片描述
登录失败如下:
在这里插入图片描述

4、登录界面的全部源码

import tkinter as tk
import tkinter.messagebox as messagebox
from tkinter import StringVar
import back
root = tk.Tk()
root.title('登陆')
tk.Label(root, text="账号:",font=20).grid(row=0, column=0)
tk.Label(root, font=20,text="密码:").grid(row=1, column=0)
e1=tk.Entry(root, textvariable=StringVar())
e1.grid(row=0, column=1)
e2=tk.Entry(root, show="●",textvariable=StringVar())
e2.grid(row=1, column=1)
def show():
    if e1.get() == '1'and e2.get() == '1':
        str1 = tk.messagebox.showinfo(title='提示',message = '恭喜密码正确')
        if str1 == 'ok':
            root.destroy()
            back.back()
    else :
        string_a = '密码或账号错误 ,请重新输入!'
        messagebox.showinfo(title='提示', message = string_a)
tk.Button(root, text="登 陆", font=12,width=10,command=show).grid(row=2, column=0)
tk.Button(root, text="注 册", font=12,width=10,).grid(row=2, column=1)
tk.Button(root, text="退 出", font=12,width=10, command=root.destroy).grid(row=2, column=2)
root.mainloop()

3)、以上的按钮中,只有登录绑定的功能事件的哦,绑定的时间就是消息提醒事件!

三、功能选择界面设计(back.py)

1、导入相关基本库

import tkinter as tk1
from PIL import Image,ImageTk
import visualization,related

tkinter:窗口界面设计
PIL:背景图的显示
visualization,related:分别为数据可视化、数据关联度分析可视化的python文件名,用来调用其中的界面!

2、功能选择界面的设计

当用户完成登陆后,进入到一个功能选择界面,有两个按钮;分别是数据可视化(周期估算),传感器的相关计算(相关系数)
对应也是完成两个不同功能:
1、将温度、位移和应变的不同传感器测点的一周内的数据,以每个时刻点对应的温度、位移和应力显示最后描成一个一周内的数据变化图像,可以更具图像得到数据的平稳性、变化趋势以及大致周期。
2、选择一个位移或应变测点后,用直方图的形式将位移与每个温度测点的数据、位移与每个应变测点的数据、应变与每个温度测点的数据的相关系数可视化,并且可以勾选是否需要以文字形式显示,会将对应的相关系数数据写入TXT文件中。
在点击按钮后就进入相应功能的可视化界面在完成后续操作,界面由一张Image图像为背景,以及窗口最下方的四个功能选择按钮组成,点击相应按钮进入相应功能界面。

1)功能选择界面设计python代码如下所示:

def back():
    root1 = tk1.Tk()
    root1.title('桥梁监测信息关联分析可视化系统')
    canvas = tk1.Canvas(root1,width = 800,height = 470,bg = 'black')  
    image = Image.open("back.jpg")  
    im = ImageTk.PhotoImage(image)  
    canvas.create_image(400,235,image = im)
    canvas.pack()
    tk1.Button(root1,text ='****************▂▃▅▆▇▇▇▇    数据可视化(周期估算)   ▇▇▇▇▆▅▃▂****************',font=12,height=2,command=visualization.back2).pack(fill='both')
    tk1.Button(root1,text ='****************▂▃▅▆▇▇▇▇ 传感器的相关计算(相关系数)▇▇▇▇▆▅▃▂****************',font=12,height=2,command=related.related).pack(fill='both')
    root1.mainloop()

以上两个按钮绑定事件分别对应visualization.py、related.py中的数据可视化函数和数据关联度可视化函数,通过绑定这两个事件,进行界面的切换!

2)、功能选择界面的界面展示:
在这里插入图片描述

3、功能选择界面的全部源码

import tkinter as tk1
from PIL import Image,ImageTk
import visualization,related
def back():
    root1 = tk1.Tk()
    root1.title('桥梁监测信息关联分析可视化系统')
    canvas = tk1.Canvas(root1,width = 800,height = 470,bg = 'black')  
    image = Image.open("back.jpg")  
    im = ImageTk.PhotoImage(image)  
    canvas.create_image(400,235,image = im)
    canvas.pack()
    tk1.Button(root1,text ='****************▂▃▅▆▇▇▇▇    数据可视化(周期估算)   ▇▇▇▇▆▅▃▂****************',font=12,height=2,command=visualization.back2).pack(fill='both')
    tk1.Button(root1,text ='****************▂▃▅▆▇▇▇▇ 传感器的相关计算(相关系数)▇▇▇▇▆▅▃▂****************',font=12,height=2,command=related.related).pack(fill='both')
    root1.mainloop()

四、位移、应变、温度可视化界面及功能设计(visualization.py)

本系统中,当在功能选择界面点击数据可视化按钮后则进入数据可视化功能的界面。界面由四个标签项分别用来提示需要输入的测点的范围和需要显示的数据内容的对应输入框;三个输入框,即将在范围内格式规则正确的需要显示的测点标号输入到其中;三个按钮,当输入内容后点击按钮,若是输入的内容检测正确则会显示相应的可视化图像,否则则会弹出对话框提示重新输入;最重要的则是创建的figure,将它与Tkinter窗口相结合,就类似与一个画板将Matplotlib数据分析后的图像放在了窗口中组成。

1、导入需求的库

import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import tkinter.messagebox as messagebox
from tkinter import *
import xlrd
import numpy as np

matplotlib.figure、FigureCanvasTkAgg库用来作图到TK的窗口上面
tkinter.messagebox库用于消息提示
xlrd库用户导入xls表格数据
numpy库用来做列表的相关计算

2、可视化的界面设计

1)、可视化的界面函数设计如下所示:

def back2():
    data = xlrd.open_workbook(r'my.xls')
    sh1= data.sheet_by_name('温度')
    sh= data.sheet_by_name('挠度')
    sh2= data.sheet_by_name('应变')
    root2 = Tk()
    root2.title("数据可视化")
    root2.geometry("500x500")
    f = Figure(figsize=(2.52, 2.56), dpi=100)#figsize定义图像大小,dpi定义像素
    f_plot = f.add_subplot(111)#定义画布中的位置
    canvs = FigureCanvasTkAgg(f, root2)#f是定义的图像,root是tkinter中画布的定义位置
    canvs.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
    Label(root2,text="*位移点A-R,温度点A-M,应变点1-44*",font=50).pack()
    Label(root2,text="选择温度",font=20).pack()
    user_text=Entry(root2)
    user_text.pack()
    Button(root2, text='选择测试点', command=draw_T).pack()
    Label(root2,text="选择位移",font=20).pack()
    user_text1=Entry(root2)
    user_text1.pack()
    Button(root2,text='选择测试点',command=draw_D).pack()
    Label(root2,text="选择应变",font=20).pack()
    user_text2=Entry(root2)
    user_text2.pack()
    Button(root2, text='选择测试点',command=draw_Y).pack()
    root2.mainloop()

2)、界面设计展示:
在这里插入图片描述

3、温度数据可视化设计

在界面中的有三个不同输入框也即是Tkinter中的entry,然后可以选择温度的一项,在其label下方的输入框输入需要显示的温度传感器侧点,同时输入的点都是大写英文字母代表各个测点,当你输入的不是对应内容或者超出了温度点的范围时按下按钮会出现一个提示框然后需要重新输入正确后才会显示,温度测点的范围为A~M点,输入相应内容到输入框然后通过调用函数获取内容在按下其下方按钮后在图上显示相应内容的数据可视化图像。图像通过输入框的到的测点数据转化为对应的测点的一周内的数据以X轴作为时间,Y轴为该段时间内的温度数据,十分钟为一个时间节点对应一个温度数据来绘制图像,以此观察温度数据一周内的变化趋势、平稳情况和周期。

1)、温度数据可视化的python代码如下所示:

	def draw_T():  
        f_plot.clear()
        t =ord(user_text.get()) #用字母表示时
        if t>77:
            str1 = messagebox.showinfo(title='提示',message = '输入范围错误,请重新输入')
            if str1 == 'ok':
                return
        test_TEM = t-65
        if test_TEM<13:
            col_test_TEM = sh1.col_values(test_TEM)
            x=np.arange(0,1078,1)
            y=np.array(col_test_TEM[1:])                               
            f_plot.set(title='temprature_self',xlabel='time/10min',ylabel='temprature')
            f_plot.plot(x,y)                                                                
            canvs.draw() 

2)、温度可视化功能展示:
在这里插入图片描述
当超出范围的时候(A-M):
在这里插入图片描述

4、位移数据可视化设计

当选择提示标签为位移一项的时候,即想要看位移数据的数据可视化图像时,则在其相应的标签下的输入框输入你想要看的测点的标号,同时必须格式规则正确并且在位移侧点A~R的范围内,否则会弹出对话框提示重新输入;输入正确后按下按钮则显示相应的数据可视化图像。图像通过输入框的到的测点数据转化为对应的测点的一周内的数据以X轴作为时间,Y轴为该段时间内的位移数据,十分钟为一个时间节点对应一个位移数据来绘制图像,以此观察位移数据一周内的变化趋势、平稳情况和周期。

1)、位移数据可视化设计的python代码

    def draw_D():
        f_plot.clear()
        d =ord(user_text1.get())#用字母表示时
        if d>82:
            str1 = messagebox.showinfo(title='提示',message = '输入范围错误,请重新输入')
            if str1 == 'ok':
                return
        test_VD = d-65
        if test_VD<18:
            col_test_VD = sh.col_values(test_VD)
            x=np.arange(0,1078,1)
            y=np.array(col_test_VD[1:])
            f_plot.set(title='ver_d_self',xlabel='time/10min',ylabel='ver_d')
            f_plot.plot(x,y)
            canvs.draw()

2)、位移数据可视化的功能展示:
在这里插入图片描述
当范围超出的时候出现提示(A-R):
在这里插入图片描述

5、应变数据可视化设计

当选择提示标签为应变一项的时候,即想要看应变数据的数据可视化图像时(应变数据即应变传感器所测的应力的数据),则在其相应的标签下的输入框输入你想要看的测点的标号,同时必须格式规则正确并且在应变测点1~44的范围内并且会检测是否输入的是数字因为应变测点有44个所以不能用字母表示,否则会弹出对话框提示重新输入;输入正确后按下按钮则显示相应的数据可视化图像。图像通过输入框的到的测点数据转化为对应的测点的一周内的数据以X轴作为时间,Y轴为该段时间内的应变数据,十分钟为一个时间节点对应一个应变数据来绘制图像,以此观察位移数据一周内的变化趋势、平稳情况和周期

1)、应变数据可视化的python代码如下:

    def draw_Y():
        f_plot.clear()
        #y = ord(var.get())  #用字母表示时
        if user_text2.get().isdigit():
            test_YB = int(user_text2.get())-1
        else :
            messagebox.showinfo(title='提示',message = '输入的测试点超出范围,请重新输入!')
        if test_YB<44 and test_YB>=0:
            col_test_YB = sh2.col_values(test_YB)
            x=np.arange(0,1078,1)
            y=np.array(col_test_YB[1:])
            f_plot.set(title='YB_self',xlabel='time/10min',ylabel='YingBian')
            f_plot.plot(x,y)
            canvs.draw()
        else:
            str1 = messagebox.showinfo(title='提示',message = '输入范围错误,请重新输入')
            if str1 == 'ok':
                return

2)、应变数据可视化功能展示:
在这里插入图片描述
当不在范围内的时候出现错误提示(1-44):
在这里插入图片描述

6、位移、应变、温度可视化的全部源码

1)、以上源码基本林君都给出啦,避免小伙伴们直接摘抄、请在上面代码的基础上面自行布局,成功运行程序!
温馨提示:该工程的所有代码是没有问题的,但你们需要自行排版,排版不成功是不能直接运行的哈!

五、位移、应变、温度关联度(相关系数)可视化界面及功能设计(related.py)

本系统中,当在功能选择界面点击选择互相关(相关系数)按钮后则进入互相关(相关系数)功能的界面。界面由四个标签项分别用来提示需要输入的测点的范围和需要显示的数据内容的对应输入框;三个输入框,即将在范围内格式规则正确的需要显示的测点标号输入到其中;三个按钮,当输入内容后点击按钮,若是输入的内容检测正确则会显示相应的可视化图像,否则则会弹出对话框提示重新输入;三个勾选按钮项即是当用户选择改勾选项时,在按下按钮后会显示图像同时会把相应的数据间的相关系数写入到TXT文件中;最重要的则是创建的figure,将它与Tkinter窗口相结合,就类似与一个画板将Matplotlib数据分析后的图像放在了窗口中组成。

1、导入需求的基本库

import matplotlib
import subprocess
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from tkinter import *
import xlrd
import tkinter.messagebox as messagebox
import pandas as pd
import numpy as np

matplotlib.figure、FigureCanvasTkAgg库用来作图到TK的窗口上面
tkinter.messagebox库用于消息提示
xlrd库用户导入xls表格数据
numpy库用来做列表的相关计算
subprocess用于打开保存的txt文档
pandas用于表格的数据处理

2、关联度可视化整体界面设计

1)、关联度可视化的整体界面设计的python代码如下:

def related():
    data = xlrd.open_workbook(r'my.xls')
    sh1= data.sheet_by_name('温度')
    sh= data.sheet_by_name('挠度')
    sh2= data.sheet_by_name('应变')
    root2 = Tk()
    root2.title("数据可视化")
    root2.geometry("600x600")
    f = Figure(figsize=(2.52, 2.56), dpi=100)#figsize定义图像大小,dpi定义像素
    f_plot1 = f.add_subplot(111)#定义画布中的位置
    canvs1 = FigureCanvasTkAgg(f, root2)#f是定义的图像,root是tkinter中画布的定义位置
    canvs1.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
    Label(root2,text="*位移点A-R,温度点A-M,应变点1-44*",font=50).pack()
    Label(root2,text="选择温度",font=20).pack()
    user_text=Entry(root2)
    user_text.pack()
    # 复选框
    chVarDis =IntVar(root2)   # 用来获取复选框是否被勾选,通过chVarDis.get()来获取其的状态,其状态值为int类型 勾选为1  未勾选为0
    check1 = Checkbutton(root2, text="在TXT中显示具体相关系数", variable=chVarDis)    # text为该复选框后面显示的名称, variable将该复选框的状态赋值给一个变量,当state='disabled'时,该复选框为灰色,不能点的状态
    check1.deselect()     # 该复选框是否勾选,select为勾选, deselect为不勾选
    check1.pack()
    #check1.grid(column=0, row=4, sticky=W)       # sticky=tk.W  当该列中其他行或该行中的其他列的某一个功能拉长这列的宽度或高度时,设定该值可以保证本行保持左对齐,N:北/上对齐  S:南/下对齐  W:西/左对齐  E:东/右对齐
    Button(root2, text='选择测试点', command=draw_D_T).pack()
    Label(root2,text="选择位移",font=20).pack()
    user_text1=Entry(root2)
    user_text1.pack()
    chvarUn =IntVar(root2)
    check2 =Checkbutton(root2, text="在TXT中显示具体相关系数", variable=chvarUn)
    check2.deselect()
    check2.pack()
    #check2.grid(column=1, row=4, sticky=W)
    Button(root2,text='选择测试点',command=draw_D_Y).pack()
    Label(root2,text="选择应变",font=20).pack()
    user_text2=Entry(root2)
    user_text2.pack()
    chvarEn =IntVar(root2)
    #check3.grid(column=2, row=4, sticky=W)
    check3 =Checkbutton(root2, text="在TXT中显示具体相关系数", variable=chvarEn)
    check3.deselect() 
    check3.pack()
    Button(root2, text='选择测试点',command=draw_Y_T).pack()
    root2.mainloop()

2)、关联度可视化界面展示:
在这里插入图片描述

3、位移-温度关联度可视化、功能设计

在界面中的有三个不同输入框也即是Tkinter中的entry,然后可以选择位移&温度的一项,在其label下方的输入框输入需要显示的位移传感器侧点,以其为基础来与其他所有温度测点相作用来分析,同时输入的点都是大写英文字母代表各个测点,当你输入的不是对应内容或者超出了位移点的范围时按下按钮会出现一个提示框然后需要重新输入正确后才会显示,位移测点的范围为A~R点,输入相应内容到输入框然后通过调用函数获取内容在按下其下方按钮后在图上显示相应内容的相关系数图像。图像通过输入框的到的测点数据转化为对应的位移测点,以其为基础来计算其与其他所有温度测点的数据的相关系数,然后以某个位移测点与其他每个温度测点为X轴,Y轴为每一组对应的相关系数数据来描绘直方图,同时当在界面上勾选了在TXT文本中显示数据时,会在对应的TXT文件中显示出相关的相关系数数据的文本,以此观察不同数据间的相关系数来推测其相关性。

1)、位移-温度可视化功能python代码如下:

    def draw_D_T():
        f_plot1.clear()
        d1 = ord(user_text.get())
        if d1>82:
            str1 = messagebox.showinfo(title='提示',message = '输入范围错误,请重新输入')
            if str1 == 'ok':
                return
        test_VD1 = d1-65
        if test_VD1<18:
            col_test_VD1 = sh.col_values(test_VD1)
            s_test=pd.Series(col_test_VD1[1:])
            corr_nm1 = []
            open('D_T.txt', 'w').close()
            for j in range(1,12):
                col3 = sh1.col_values(j) 
                s3=pd.Series(col3[1:])
                corr_test=s_test.corr(s3) 
                if corr_test<0:
                    corr_nm1.append(-corr_test)
                else :
                    corr_nm1.append(corr_test)
                if chVarDis.get()==1:
                    result2txt=str('位移'+str(user_text.get())  +'测点&温度'+str(j) +'测点的相关系数:'+str(corr_nm1[j-1]))          # data是前面运行出的数据,先将其转为字符串才能写入
                    with open('D_T.txt','a',encoding='utf8') as file_handle:   # .txt可以不自己新建,代码会自动新建
                        file_handle.write(result2txt)     # 写入
                        file_handle.write('\n')         # 有时放在循环里面需要自动转行,不然会覆盖上一条数据
                    if j==11:
                        subprocess.Popen("notepad.exe D_T.txt")
            f_plot1.set(title='ver_d&temprature',xlabel='ver_d&temperature',ylabel='corr_num')
            f_plot1.bar(x= [1,2,3,4,5,6,7,8,9,10,11],height = corr_nm1,width = (0.5),)
            canvs1.draw()

2)、位移-温度可视化界面展示:
在这里插入图片描述
超出范围时候,也会和之前一样提示,这里便不在做展示
3)、当不勾选在txt中展示的时候:
在这里插入图片描述

4、位移-应变关联度可视化、功能设计

在界面中的有三个不同输入框也即是Tkinter中的entry,然后可以选择位移&应变的一项,在其label下方的输入框输入需要显示的位移传感器侧点,以其为基础来与其他所有应变测点相作用来分析,同时输入的点都是大写英文字母代表各个测点,当你输入的不是对应内容或者超出了位移点的范围时按下按钮会出现一个提示框然后需要重新输入正确后才会显示,位移测点的范围为A~R点,输入相应内容到输入框然后通过调用函数获取内容在按下其下方按钮后在图上显示相应内容的相关系数图像。图像通过输入框的到的测点数据转化为对应的位移测点,以其为基础来计算其与其他所有应变测点的数据的相关系数,然后以某个位移测点与其他每个应变测点为X轴,Y轴为每一组对应的相关系数数据来描绘直方图,同时当在界面上勾选了在TXT文本中显示数据时,会在对应的TXT文件中显示出相关的相关系数数据的文本,以此观察不同数据间的相关系数来推测其相关性。

1)、位移-应变关联度可视化、功能代码如下所示:

    def draw_D_Y():
        f_plot1.clear()
        d2 = ord(user_text1.get())
        if d2>77:
            str1 = messagebox.showinfo(title='提示',message = '输入范围错误,请重新输入')
            if str1 == 'ok':
                return
        test_VD2 = d2-65
        if test_VD2<18:
            col_test_VD2 = sh.col_values(test_VD2)
            s_test1=pd.Series(col_test_VD2[1:])
            corr_nm2 = []
            X=[]
            open('D_Y.txt', 'w').close()
            for i in range(0,44):
                X.insert(i,i)
                col_y = sh2.col_values(i) 
                s_y=pd.Series(col_y[1:])
                corr_test1=s_test1.corr(s_y) 
                if corr_test1<0:
                    corr_nm2.append(-corr_test1)
                else :
                    corr_nm2.append(corr_test1)
                if chvarUn.get()==1:
                    result2txt=str('位移'+str(user_text1.get())  +'测点&应变'+str(i+1) +'测点的相关系数:'+str(corr_nm2[i]))          # data是前面运行出的数据,先将其转为字符串才能写入
                    with open('D_Y.txt','a',encoding='utf8') as file_handle:   # .txt可以不自己新建,代码会自动新建
                        file_handle.write(result2txt)     # 写入
                        file_handle.write('\n')         # 有时放在循环里面需要自动转行,不然会覆盖上一条数据
                    if i==43:
                        subprocess.Popen("notepad.exe D_Y.txt")
            f_plot1.set(title='ver_d&YB',xlabel='ver_d&YB',ylabel='corr_num')
            f_plot1.bar(x=X,height=corr_nm2,width=0.5,)
            canvs1.draw()

2)、位移-应变关联度可视化展示:
在这里插入图片描述
当不勾选时:
在这里插入图片描述

5、应变-温度关联度可视化、功能设计

在界面中的有三个不同输入框也即是Tkinter中的entry,然后可以选择应变&温度的一项,在其label下方的输入框输入需要显示的应变传感器侧点,以其为基础来与其他所有温度测点相作用来分析,同时输入的点数字代表各个测点,当你输入的不是对应内容或者超出了应变点的范围时按下按钮会出现一个提示框然后需要重新输入正确后才会显示,应变测点1~44的范围内并且会检测是否输入的是数字因为应变测点有44个所以不能用字母表示,输入相应内容到输入框然后通过调用函数获取内容在按下其下方按钮后在图上显示相应内容的相关系数图像。图像通过输入框的到的测点数据转化为对应的应变测点,以其为基础来计算其与其他所有温度测点的数据的相关系数,然后以某个位移测点与其他每个应变测点为X轴,Y轴为每一组对应的相关系数数据来描绘直方图,同时当在界面上勾选了在TXT文本中显示数据时,会在对应的TXT文件中显示出相关的相关系数数据的文本,以此观察不同数据间的相关系数来推测其相关性

1)、应变-温度关联度可视化、功能的python代码如下:

    def draw_Y_T():
        f_plot1.clear()
        if user_text2.get().isdigit():
            test_YB1 = int(user_text2.get())-1
        else :
            messagebox.showinfo(title='提示',message = '输入的测试点超出范围,请重新输入!')
        if test_YB1 < 44 and test_YB1 >=0:
            col_test_YB1 = sh2.col_values(test_YB1)
            s_test2=pd.Series(col_test_YB1[1:])
            corr_nm3 = []
            X=[]
            open('Y_T.txt', 'w').close()
            for k in range(1,12):
                X.insert(k-1,k-1)
                col_yt = sh.col_values(k) 
                s_yt=pd.Series(col_yt[1:])
                corr_test2=s_test2.corr(s_yt) 
                if corr_test2<0:
                    corr_nm3.append(-corr_test2)
                else :
                    corr_nm3.append(corr_test2)
                if chvarEn.get()==1:
                    result2txt=str('应变'+str(user_text2.get())  +'测点&温度'+str(k) +'测点的相关系数:'+str(corr_nm3[k-1]))          # data是前面运行出的数据,先将其转为字符串才能写入
                    with open('Y_T.txt','a',encoding='utf8') as file_handle:   # .txt可以不自己新建,代码会自动新建
                        file_handle.write(result2txt)     # 写入
                        file_handle.write('\n')         # 有时放在循环里面需要自动转行,不然会覆盖上一条数据
                    if k==11:
                        subprocess.Popen("notepad.exe Y_T.txt")
            f_plot1.set(title='YB&temprature',                                    xlabel='YB&temperature',ylabel='corr_num')
            f_plot1.bar(x=X,height=corr_nm3,width=0.5,)             
            canvs1.draw()
        else:
            str1 = messagebox.showinfo(title='提示',message = '输入范围错误,请重新输入')
            if str1 == 'ok':
                return

2)、应变-温度关联度可视化、功能展示
在这里插入图片描述
当不勾选时:
在这里插入图片描述

6、位移、应变、温度关联度(相关系数)可视化的全部源码

1)、以上源码基本林君都给出啦,避免小伙伴们直接摘抄、请在上面的基础上面自行布局,成功运行程序!
温馨提示:该工程的所有代码是没有问题的,但你们需要自行排版,排版不成功是不能成功运行的哈!
以上就是本次博客的全部内容啦,希望小伙伴对本次博客的阅读,可以帮助到大家理解python对于数据可视化的窗口设计、理解TK和matlab函数库的python用法,同时掌握表格的综合处理能力!
遇到问题的小伙伴欢迎评论区中留言讨论哦,林君学长看到会为大家解答的,这个学长不太冷!

陈一月的又一天编程岁月^ _ ^

发布了84 篇原创文章 · 获赞 133 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42451251/article/details/105650155