Skip to content

Commit 7eb3f5a

Browse files
authored
Add files via upload
Grafica en pyqt5 con Matplotlib donde se varia la amplitud y frecuencia de la señal a través de sliders
1 parent 9c99b28 commit 7eb3f5a

File tree

3 files changed

+229
-0
lines changed

3 files changed

+229
-0
lines changed

Grafica con Matplotlib PyQt5/GUI.py

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
# -*- coding: utf-8 -*-
2+
3+
# Form implementation generated from reading ui file 'GUI.ui'
4+
#
5+
# Created by: PyQt5 UI code generator 5.12.3
6+
#
7+
# WARNING! All changes made in this file will be lost!
8+
9+
10+
from PyQt5 import QtCore, QtGui, QtWidgets
11+
12+
13+
class Ui_MainWindow(object):
14+
def setupUi(self, MainWindow):
15+
MainWindow.setObjectName("MainWindow")
16+
MainWindow.resize(627, 345)
17+
self.centralwidget = QtWidgets.QWidget(MainWindow)
18+
self.centralwidget.setMinimumSize(QtCore.QSize(400, 200))
19+
self.centralwidget.setObjectName("centralwidget")
20+
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
21+
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
22+
self.verticalLayout.setSpacing(0)
23+
self.verticalLayout.setObjectName("verticalLayout")
24+
self.frame = QtWidgets.QFrame(self.centralwidget)
25+
self.frame.setStyleSheet("background-color: rgb(0, 0, 0);")
26+
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
27+
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
28+
self.frame.setObjectName("frame")
29+
self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame)
30+
self.horizontalLayout.setContentsMargins(2, 2, 2, 2)
31+
self.horizontalLayout.setSpacing(0)
32+
self.horizontalLayout.setObjectName("horizontalLayout")
33+
self.verticalLayout_grafica = QtWidgets.QVBoxLayout()
34+
self.verticalLayout_grafica.setObjectName("verticalLayout_grafica")
35+
self.horizontalLayout.addLayout(self.verticalLayout_grafica)
36+
self.frame_control = QtWidgets.QFrame(self.frame)
37+
self.frame_control.setMinimumSize(QtCore.QSize(0, 0))
38+
self.frame_control.setStyleSheet("background-color: rgb(0, 170, 127);")
39+
self.frame_control.setFrameShape(QtWidgets.QFrame.StyledPanel)
40+
self.frame_control.setFrameShadow(QtWidgets.QFrame.Raised)
41+
self.frame_control.setObjectName("frame_control")
42+
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.frame_control)
43+
self.verticalLayout_2.setObjectName("verticalLayout_2")
44+
self.label = QtWidgets.QLabel(self.frame_control)
45+
self.label.setStyleSheet("color: rgb(255, 255, 255);\n"
46+
"font: 87 10pt \"Arial Black\";")
47+
self.label.setAlignment(QtCore.Qt.AlignCenter)
48+
self.label.setObjectName("label")
49+
self.verticalLayout_2.addWidget(self.label)
50+
self.slider1 = QtWidgets.QSlider(self.frame_control)
51+
self.slider1.setMinimumSize(QtCore.QSize(0, 30))
52+
self.slider1.setStyleSheet("QSlider::groove:horizontal {\n"
53+
" border: 1px solid #00ff00;\n"
54+
" height: 4px; \n"
55+
" background: #00ff00;\n"
56+
" \n"
57+
"}\n"
58+
"\n"
59+
"QSlider::handle:horizontal {\n"
60+
" background: rgb(215, 0, 255);\n"
61+
" \n"
62+
" width: 28px;\n"
63+
" height:28px;\n"
64+
"\n"
65+
"left: 11px;\n"
66+
"right: 11px;\n"
67+
"\n"
68+
"\n"
69+
" margin: -12px; \n"
70+
" border-radius:14px;\n"
71+
"}\n"
72+
"\n"
73+
"\n"
74+
"QSlider::add-page:horizontal{\n"
75+
"background-color:white;\n"
76+
"border: 1px solid white;\n"
77+
"}\n"
78+
"")
79+
self.slider1.setMaximum(100)
80+
self.slider1.setSingleStep(1)
81+
self.slider1.setOrientation(QtCore.Qt.Horizontal)
82+
self.slider1.setObjectName("slider1")
83+
self.verticalLayout_2.addWidget(self.slider1)
84+
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
85+
self.verticalLayout_2.addItem(spacerItem)
86+
self.slider2 = QtWidgets.QSlider(self.frame_control)
87+
self.slider2.setMinimumSize(QtCore.QSize(0, 30))
88+
self.slider2.setStyleSheet("QSlider::groove:horizontal {\n"
89+
" border: 1px solid #00ff00;\n"
90+
" height: 4px; \n"
91+
" background: #00ff00;\n"
92+
" \n"
93+
"}\n"
94+
"\n"
95+
"QSlider::handle:horizontal {\n"
96+
" background: rgb(245, 10, 15);\n"
97+
" \n"
98+
"\n"
99+
" width: 28px;\n"
100+
" height:28px;\n"
101+
"\n"
102+
"left: 11px;\n"
103+
"right: 11px;\n"
104+
"\n"
105+
"\n"
106+
" margin: -12px; \n"
107+
" border-radius:14px;\n"
108+
"}\n"
109+
"\n"
110+
"\n"
111+
"QSlider::add-page:horizontal{\n"
112+
"background-color:white;\n"
113+
"border: 1px solid white;\n"
114+
"}\n"
115+
"")
116+
self.slider2.setMaximum(100)
117+
self.slider2.setSingleStep(1)
118+
self.slider2.setOrientation(QtCore.Qt.Horizontal)
119+
self.slider2.setObjectName("slider2")
120+
self.verticalLayout_2.addWidget(self.slider2)
121+
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
122+
self.verticalLayout_2.addItem(spacerItem1)
123+
self.pushButton = QtWidgets.QPushButton(self.frame_control)
124+
self.pushButton.setStyleSheet("background-color: rgb(255, 85, 0);")
125+
self.pushButton.setObjectName("pushButton")
126+
self.verticalLayout_2.addWidget(self.pushButton)
127+
self.horizontalLayout.addWidget(self.frame_control)
128+
self.horizontalLayout.setStretch(0, 3)
129+
self.horizontalLayout.setStretch(1, 2)
130+
self.verticalLayout.addWidget(self.frame)
131+
MainWindow.setCentralWidget(self.centralwidget)
132+
133+
self.retranslateUi(MainWindow)
134+
self.pushButton.clicked.connect(MainWindow.close)
135+
QtCore.QMetaObject.connectSlotsByName(MainWindow)
136+
137+
def retranslateUi(self, MainWindow):
138+
_translate = QtCore.QCoreApplication.translate
139+
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
140+
self.label.setText(_translate("MainWindow", "VARIAR AMPLITUD Y FRECUENCIA"))
141+
self.pushButton.setText(_translate("MainWindow", "SALIR"))
142+
143+
144+
if __name__ == "__main__":
145+
import sys
146+
app = QtWidgets.QApplication(sys.argv)
147+
MainWindow = QtWidgets.QMainWindow()
148+
ui = Ui_MainWindow()
149+
ui.setupUi(MainWindow)
150+
MainWindow.show()
151+
sys.exit(app.exec_())
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# PyQt5 con Matplotlib
2+
# @autor: Magno Efren
3+
# Youtube: https://www.youtube.com/c/MagnoEfren
4+
5+
import sys
6+
import numpy as np
7+
from GUI import*
8+
from PyQt5 import QtCore
9+
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
10+
import matplotlib.pyplot as plt
11+
12+
class MiApp(QtWidgets.QMainWindow):
13+
def __init__(self):
14+
super().__init__()
15+
self.ui = Ui_MainWindow()
16+
self.ui.setupUi(self)
17+
18+
self.grafica = Canvas_grafica()
19+
self.ui.verticalLayout_grafica.addWidget(self.grafica)
20+
21+
self.ui.slider1.valueChanged.connect(self.slider_uno)
22+
self.ui.slider2.valueChanged.connect(self.slider_dos)
23+
24+
def slider_uno(self, event):
25+
self.grafica.datos1(event)
26+
27+
def slider_dos(self, event):
28+
self.grafica.datos2(event)
29+
30+
31+
class Canvas_grafica(FigureCanvas):
32+
def __init__(self, parent=None):
33+
self.fig , self.ax = plt.subplots(facecolor='gray')
34+
super().__init__(self.fig)
35+
self.ax.grid()
36+
self.ax.margins(x=0)
37+
38+
39+
40+
self.nivel1 = 10
41+
self.nivel2 = 1
42+
self.grafica_datos()
43+
44+
def datos1(self, valor1):
45+
self.nivel1 = valor1*0.1
46+
47+
def datos2(self, valor2):
48+
self.nivel2 = valor2*0.05
49+
50+
def grafica_datos(self):
51+
plt.title("Grafica en PyQt5 con Matplotlib")
52+
#plt.xlim(-4, 32)
53+
#plt.ylim(-12, 12)
54+
55+
x = np.arange(-np.pi, 10*np.pi, 0.01)
56+
line, = self.ax.plot(x, self.nivel1*np.sin(self.nivel2*x), color='r',linewidth=2)
57+
self.draw()
58+
line.set_ydata(np.sin(x)+24)
59+
60+
#print(self.nivel1, self.nivel2)
61+
QtCore.QTimer.singleShot(10, self.grafica_datos)
62+
63+
64+
if __name__ == "__main__":
65+
app = QtWidgets.QApplication(sys.argv)
66+
mi_app = MiApp()
67+
mi_app.show()
68+
sys.exit(app.exec_())
69+
70+
#self.ax = plt.axes()
71+
#self.ax=plt.gca()
72+
#plt.axis('off')
73+
#self.fig.subplots_adjust(top=1.1 ,bottom=-0.1, left=-0.1, right=1.1)
74+
#self.ax.get_xaxis().set_visible(False)
75+
#self.ax.spines['right'].set_visible(False)
76+
#self.ax.spines['top'].set_visible(False)
77+
#self.ax.spines['bottom'].set_visible(False)
78+
#self.ax.spines['left'].set_visible(False)
Loading

0 commit comments

Comments
 (0)