python/PyUartAssistant/BigData_Plot.py

57 lines
2.0 KiB
Python
Raw Normal View History

from PyQt5.QtWidgets import QDialog, QVBoxLayout, QGridLayout, QApplication,QMainWindow
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5 import NavigationToolbar2QT
from PyQt5.QtCore import Qt
class MyFigureCanvas(FigureCanvas):
def __init__(self, parent=None):
self.figure = Figure()
super(MyFigureCanvas, self).__init__(self.figure)
self.setParent(parent)
class ChartDialog(QDialog):
def __init__(self, data=None, title="Line Chart", xlabel="X", ylabel="Y", parent=None):
super(ChartDialog, self).__init__(parent)
self.setWindowFlags(Qt.Window)
self.data = data if data is not None else (range(2, 26, 2), [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15])
self.title = title
self.xlabel = xlabel
self.ylabel = ylabel
self.initUI()
def initUI(self):
self.setWindowTitle(self.title) # 确保标题被设置
layout = QGridLayout()
self.figureCanvas = MyFigureCanvas(self)
self.draw_figure()
self.navigationToolbar = NavigationToolbar2QT(self.figureCanvas, self)
layout.addWidget(self.navigationToolbar, 0, 0, 1, 1)
layout.addWidget(self.figureCanvas, 1, 0, 1, 1)
self.setLayout(layout)
#self.setGeometry(300, 300, 600, 400)
def draw_figure(self):
self.figureCanvas.figure.clear() # 清除整个 Figure
self.axes = self.figureCanvas.figure.add_subplot(111) # 添加新的 Axes
self.axes.set_title(self.title)
self.axes.set_xlabel(self.xlabel)
self.axes.set_ylabel(self.ylabel)
x, y = self.data
self.axes.plot(x, y, color='red')
self.figureCanvas.figure.canvas.draw_idle() # 更新画布上的绘图
def tans_data(self,data):
self.data = data
def main():
app = QApplication([])
dialog = ChartDialog()
dialog.show()
app.exec_()
if __name__ == "__main__":
main()