PyQt5

开发流程

1.在Qt Designer进行界面设计出界面ui文件

2.将ui文件转换成py文件

pyuic5 -o ui.py ui.ui

3.导入py文件

from uart_ui import Ui_MainWindow

4.创建一个窗口类方便管理不同页面

主窗口
class SerialTool(QMainWindow,Ui_MainWindow):
绘图窗口
class Huitu(QMainWindow,Ui_MainWindow):

5.在类中初始化其ui文件

def __init__(self):super().__init__()self.setupUi(self)

常用的操作

1.选择对象

在Qt designer中设置对象名

self.对象名

2.QTextBrowser块输出

QTextBrowser添加文本内容

self.对象名.append("字符串")

QTextBrowser清空文本内容

self.对象名.clear()

QTextBrowser设置文本字体

self.textBrowser.setFontPointSize(18)

:只能添加字符串,可用str()转换

3.QLineEdit行输入

获取QLineEdit文本内容

text=self.对象名.text()

预先设置QLineEdit内容

self.对象名.setText()

设置QLineEdit提示文本

self.对象名.setPlaceholderText('对记录数或特征数区间采样值')

4.QComboBox下拉选择

获取QComboBox文本内容

text=self.对象名.currentText()

5.QPushButton按钮

点击QPushButton执行函数

self.按钮对象名.clicked.connect(self.运行函数名)

点击QPushButton获取选择文件

获取文件fileName1, filetype = QFileDialog.getOpenFileName(self, "选取文件", "./","(*.csv)") # 设置文件扩展名过滤,注意用双分号间隔
文件路径展示到LinEdit
self.lineEdit.setText(fileName1)

点击QPushButton弹出新界面
在主函数中实例化界面A和B

if __name__ == '__main__':app = QApplication(sys.argv)wina=SerialTool()winb = HuiTU()wina.show()sys.exit(app.exec_())

A类中QPushButton链接action函数

self.QPushButton.clicked.connect(self.action)

A类中action函数,当B隐藏则显示B,否则就不展示

def action(self):if winb.isHidden():winb.A()winb.B()winb.show2()
else:winb.hide()

B类中show2()

def show2(self):self.show()

6.QGraphicsView嵌入PyQt5绘图

定义一个绘图Figure类

class MyFigure(FigureCanvasQTAgg):def __init__(self, width=100, height=100, dpi=100):# 1、创建一个绘制窗口Figure对象self.fig = Figure(figsize=(width, height), dpi=dpi)# 2、在父类中激活Figure窗口,同时继承父类属性super(MyFigure, self).__init__(self.fig)

在对应的函数实例化绘图类

F1 = MyFigure(width=15, height=12, dpi=58)
F1.axes1 = F1.fig.add_subplot(111)  # 表示将窗口分成1*1的布局
F1.axes1.plot(ratings1['时间'], ratings1['温度'], label='温度')
F1.axes1.plot(ratings1['时间'], ratings1['湿度'], label='湿度')
F1.axes1.legend(prop={'size': 20})
F1.axes1.set_xlabel("时间",fontsize = 20, fontweight ='bold')
F1.axes1.set_ylabel("温度℃/湿度%",fontsize = 20, fontweight ='bold')
F1.axes1.set_title("下位机A采样温度和湿度随时间变化图",fontsize = 25, fontweight ='bold')
F1.axes1.tick_params(labelsize=17,rotation=45)#将坐标旋转45度
scene = QGraphicsScene()  # 创建一个场景
scene.addWidget(F1)  # 将图形元素添加到场景中
self.QGraphicsView对象名.setScene(scene)  # 将创建添加到图形视图显示窗口

7.样式属性操作

设置Window标题和logo

self.setWindowIcon(QIcon("logo.ico"))
self.setWindowTitle("下位机A和下位机B数据绘图")

设置Qlabel图片

src = QPixmap("logo.ico")
self.Qlabel对象名.setPixmap(src)

设置Qlabel字体大小

self.Qlabel对象名.setFont(QFont("Times New Roman",12,QFont.Bold))

设置QTextBrowser输出样式

self.QTextBrowser对象名.append("<font color='orange'>"+"ABMPC计算CPU时间"+"<font>")#颜色
self.QTextBrowser对象名.append("<font size=4>"+"\n\n到节点"+i+"的最短路径为"+"<font>")#单条字体大小
self.QTextBrowser对象名.setFontPointSize(18)#整个输出框字体大小

8.实现绘图展示另一种方法

通过绘制好的图片保存后在Qlabel显示

plt.savefig("Graph.png", format="PNG")
src = QPixmap("Graph.png")
self.Qlabel名.setPixmap(src)

9.导入样式表

app = QApplication(sys.argv)
#1.
from qdarkstyle import LightPalette
app.setStyleSheet(qdarkstyle.load_stylesheet(qt_api='pyqt5', palette=LightPalette()))
#2.
from qt_material import apply_stylesheet
apply_stylesheet(app, theme='dark_amber.xml')

matplotlib绘图

以2022年数维杯B题红蓝对抗为例

点线图

先plot画线在scatter画点

import matplotlib.pyplot as plt
nodedata = pd.read_csv("Node.csv")
linkdata = pd.read_csv("link.csv")
dataB = pd.read_csv("BlueNode.csv")
dataA = pd.read_csv("RedNode.csv")
reddata = nodedata.loc[nodedata["camp"] == "red", :]
bluedata = nodedata.loc[nodedata["camp"] == "blue", :]
#603条边
for i in range(603):plt.plot([nodedata.loc[nodedata["id"] == linkdata.loc[i, "from"], "x"],nodedata.loc[nodedata["id"] == linkdata.loc[i, "to"], "x"],],[nodedata.loc[nodedata["id"] == linkdata.loc[i, "from"], "y"],nodedata.loc[nodedata["id"] == linkdata.loc[i, "to"], "y"],],color="black",linewidth="0.1",)
#436个点
NodeBlue = plt.scatter(bluedata.loc[:, "x"], bluedata.loc[:, "y"], s=5, color="blue")
NodeRed = plt.scatter(reddata.loc[:, "x"], reddata.loc[:, "y"], s=5, color="red")
plt.title("The Node Of Red and Blue")
plt.legend((NodeBlue, NodeRed), ("BlueNode", "RedNode"))

画圆

from matplotlib.patches import Circle
import matplotlib.pyplot as plt
Chongtucircle = Circle((85, 15), fill=False,radius=4, edgecolor="red",label='a circle',linestyle='--',linewidth=0.7)
plt.gca().add_patch(Chongtucircle)

画曲线图

import matplotlib.pyplot as plt
plt.plot(x1, y1, label='BMPC')
plt.plot(x2, y2, label='CMPC')
plt.plot(x3, y3, label='OLR')
plt.plot(x4, y4, label='ACMPC')
plt.plot(x5, y5, label='ABMPC')
plt.legend(prop={'size': 10})
plt.set_xlabel("特征数")
plt.set_ylabel("CPU时间(s)")
plt.set_title("固定记录数为"+str(minjilu1)+"时,CPU时间随特征数的变化比较图")

networkx绘图

import networkx as nx
import matplotlib.pyplot as plt
'''1.csvA,B,C,D,E
A,inf,6,inf,3,inf
B,6,inf,4,7,6
C,inf,4,inf,inf,7
D,3,7,inf,inf,inf
E,inf,6,7,inf,inf'''
plt.clf()
Node = pd.read_csv(1.csv)
data_array = np.array(Node)
node = Node.index.tolist()G = nx.Graph()G.add_nodes_from(node)for i in node:for j in node:if i != j and Node.loc[i, j] != 0 and Node.loc[i,j]!=float('inf'):G.add_edge(i, j, weight=Node.loc[i, j])
pos = nx.shell_layout(G)
weights = nx.get_edge_attributes(G, "weight")
nx.draw_networkx(G, pos, with_labels=True)
nx.draw_networkx_edge_labels(G, pos, edge_labels=weights)
#防止中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.title("通过邻接矩阵绘制出无向图")
plt.show()

pandas

读取csv文件

import pandas as pd
nodedata = pd.read_csv("Node.csv")

列查询

#查询所有x,y的值
nodedata.loc[:, "x"]
nodedata.loc[:, "y"]

条件查询

nodedata.loc[nodedata["camp"] == "red", :]#查询camp值为red的所有列

输出列表到csv

import numpy as np, pandas as pd
test=[[1,2],[3,4]]
array = np.array(test)
df = pd.DataFrame(array)
df.to_csv("distance.csv")

创建新列

import numpy as np, pandas as pd
data['best']=[1,2,3,4,5]

条件查询

nodedata.loc[nodedata["camp"] == "red", :]#查询camp值为red的所有列

输出列表到csv

import numpy as np, pandas as pd
test=[[1,2],[3,4]]
array = np.array(test)
df = pd.DataFrame(array)
df.to_csv("distance.csv")

创建新列

import numpy as np, pandas as pd
data['best']=[1,2,3,4,5]

Pyqt5 pandas matplotlib network自用操作相关推荐

  1. python 数据分析工具之 numpy pandas matplotlib

    作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...

  2. python显示图像某列的颜色值_Python Pandas Matplotlib图由单列中定义的类型值着色

    我有以下格式的数据: import pandas as ps table={'time':[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5],\ 'data':[1,1,2,2,2,1,2 ...

  3. Numpy,Pandas,Matplotlib

    一 . numpy -- 数据分析:就是把一些看似杂乱无章的数据信息提炼出来,总结出所研究的内在规律 -- 数据分析三剑客:Numpy,Pandas,Matplotlib -- Numpy(Numer ...

  4. Matplotlib 常用可视化操作

    Matplotlib 常用可视化操作 文章目录 Matplotlib 常用可视化操作 0. matplotlib 介绍 1. 简单辅助线 2. 坐标轴设置 用figure() 函数创建图表 设置x轴 ...

  5. Numpy+Pandas+Matplotlib学习

    参考的教程是哔哩哔哩孙兴华UP主的视频,边学边做 BV1ji4y157uB 代码及所用的数据已上传至Github learn_numpy_pandas_matplotlib 文章目录 Numpy Pa ...

  6. Python numpy+pandas+matplotlib学习笔记

    Python numpy+pandas+matplotlib 本文是根据b站路飞学城Python数据分析全套教程的学习视频整理归纳的学习文档,主要目的是方便自己进行查阅,详细的还得去b站看原视频.另外 ...

  7. python能实现excel什么功能_Python pandas对excel的操作实现示例

    最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...

  8. python pandas 读取excel 去重某一列_Python中Pandas读取修改excel操作攻略(代码示例)...

    本篇文章给大家带来的内容是关于Python中Pandas读取修改excel操作攻略(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 环境:python 3.6.8 以某米赛 ...

  9. pyqt5与matplotlib结合画图 ,绘制动态图形

    pyqt5与matplotlib结合画图,绘制动态图,使图一直刷新. 常规的绘图加一个定时器就能完成. 如给一个数组x=[3,4,5],每隔一秒,数组就会添加一个数,同时每隔一秒就会画一次x的图,实现 ...

最新文章

  1. Linux驱动框架之framebuffer驱动框架
  2. node+express+MongoDB实现小商城服务端
  3. ios找不到信任证书_ios信任苹果企业级应用
  4. 【机器学习算法-python实现】矩阵去噪以及归一化
  5. linux服务器监控zabbix,Linux监控之--使用ZABBIX监控web服务器
  6. php 接口有几种,【后端开辟】php接口有哪些范例?
  7. api 开源文档编写_如何为您的开源项目编写有效的文档
  8. python操作excel模板_Python Excel模板读写,维护公式和格式
  9. 计算机游戏有哪几种,这些游戏你玩过几个? 你认为最经典的电脑游戏有哪些?
  10. PAT A1096 质因子分解
  11. CF-1208D-线段树和树状数组双解
  12. 【TWVRP】基于matlab遗传算法求解送货且带时间窗的车辆路径规划问题【含Matlab源码 1074期】
  13. JDBC下载及连接数据库处理
  14. 笔记 android 知乎,字节跳动团队发布Android Framework笔记,知乎上已获万赞
  15. 60个英文阅读网站强力推荐
  16. 冰点文库的替代品【Wenku Doc Downloader】用于下载各种文库的材料
  17. 中国“神威•太湖之光”蝉联世界超算冠军
  18. 容器化部署openvpn,访问策略配置
  19. python3的基本数据类型_python3基本数据类型
  20. Javascript的事件驱动

热门文章

  1. 做好淘宝客单页面的几个技巧和方法
  2. javascript基础知识完整笔记--------权威指南基础篇
  3. 隧道股份“盾构云平台”试运行,年内将在上海全市范围推广
  4. 这篇Docker的网络通信与数据共享文章看不懂你来打我吧
  5. SLIC与目前最优超像素算法的比较
  6. 【CYH-01】小奔的国庆练习赛:赛后标程
  7. WLAN基本知识之无线基本概念
  8. eMMC(KLM8G2FE3B)
  9. python第5课:递归函数
  10. 2021年腾讯云备战双11:企业专属1.1折代金券(888元)