Pyqt5 pandas matplotlib network自用操作
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自用操作相关推荐
- python 数据分析工具之 numpy pandas matplotlib
作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...
- 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 ...
- Numpy,Pandas,Matplotlib
一 . numpy -- 数据分析:就是把一些看似杂乱无章的数据信息提炼出来,总结出所研究的内在规律 -- 数据分析三剑客:Numpy,Pandas,Matplotlib -- Numpy(Numer ...
- Matplotlib 常用可视化操作
Matplotlib 常用可视化操作 文章目录 Matplotlib 常用可视化操作 0. matplotlib 介绍 1. 简单辅助线 2. 坐标轴设置 用figure() 函数创建图表 设置x轴 ...
- Numpy+Pandas+Matplotlib学习
参考的教程是哔哩哔哩孙兴华UP主的视频,边学边做 BV1ji4y157uB 代码及所用的数据已上传至Github learn_numpy_pandas_matplotlib 文章目录 Numpy Pa ...
- Python numpy+pandas+matplotlib学习笔记
Python numpy+pandas+matplotlib 本文是根据b站路飞学城Python数据分析全套教程的学习视频整理归纳的学习文档,主要目的是方便自己进行查阅,详细的还得去b站看原视频.另外 ...
- python能实现excel什么功能_Python pandas对excel的操作实现示例
最近经常看到各平台里都有Python的广告,都是对excel的操作,这里明哥收集整理了一下pandas对excel的操作方法和使用过程.本篇介绍 pandas 的 DataFrame 对列 (Colu ...
- python pandas 读取excel 去重某一列_Python中Pandas读取修改excel操作攻略(代码示例)...
本篇文章给大家带来的内容是关于Python中Pandas读取修改excel操作攻略(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 环境:python 3.6.8 以某米赛 ...
- pyqt5与matplotlib结合画图 ,绘制动态图形
pyqt5与matplotlib结合画图,绘制动态图,使图一直刷新. 常规的绘图加一个定时器就能完成. 如给一个数组x=[3,4,5],每隔一秒,数组就会添加一个数,同时每隔一秒就会画一次x的图,实现 ...
最新文章
- Linux驱动框架之framebuffer驱动框架
- node+express+MongoDB实现小商城服务端
- ios找不到信任证书_ios信任苹果企业级应用
- 【机器学习算法-python实现】矩阵去噪以及归一化
- linux服务器监控zabbix,Linux监控之--使用ZABBIX监控web服务器
- php 接口有几种,【后端开辟】php接口有哪些范例?
- api 开源文档编写_如何为您的开源项目编写有效的文档
- python操作excel模板_Python Excel模板读写,维护公式和格式
- 计算机游戏有哪几种,这些游戏你玩过几个? 你认为最经典的电脑游戏有哪些?
- PAT A1096 质因子分解
- CF-1208D-线段树和树状数组双解
- 【TWVRP】基于matlab遗传算法求解送货且带时间窗的车辆路径规划问题【含Matlab源码 1074期】
- JDBC下载及连接数据库处理
- 笔记 android 知乎,字节跳动团队发布Android Framework笔记,知乎上已获万赞
- 60个英文阅读网站强力推荐
- 冰点文库的替代品【Wenku Doc Downloader】用于下载各种文库的材料
- 中国“神威•太湖之光”蝉联世界超算冠军
- 容器化部署openvpn,访问策略配置
- python3的基本数据类型_python3基本数据类型
- Javascript的事件驱动