我正在开发一个应用程序 - 下面给出的代码。如果单击应用程序窗口左侧的按钮,它将在 Pyqt 小部件窗口上绘制两个系列。一条蓝色曲线和另一条白色曲线将出现在屏幕上。我需要为一条曲线应用线性刻度#,为另一条曲线应用对数刻度。我做不到。请在下面查看我的代码并提出建议。我的代码如下:
from PyQt5 import QtCore, QtGui, QtWidgets, Qt import pyqtgraph as pg from pyqtgraph import PlotWidget
类 Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1289, 815) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.Combo_Log8 = QtWidgets.QComboBox(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.固定) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.Combo_Log8.sizePolicy().hasHeightForWidth()) self.Combo_Log8.setSizePolicy(sizePolicy) self.Combo_Log8.setObjectName("Combo_Log8") self. gridLayout.addWidget(self.Combo_Log8, 1, 3, 1, 1) self.textEdit = QtWidgets.QTextEdit(self.centralwidget) self.textEdit.setObjectName("textEdit") self.gridLayout.addWidget(self.textEdit, 3, 4, 1, 1) self.lineEdit = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit.setObjectName("lineEdit ") self.gridLayout.addWidget(self.lineEdit, 1, 4, 1, 1) self.Combo_Log3 = QtWidgets.QComboBox(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.Combo_Log3.sizePolicy().hasHeightForWidth()) self.Combo_Log3.setSizePolicy(sizePolicy) self.Combo_Log3.setObjectName("Combo_Log3") self.gridLayout。 addWidget(self.Combo_Log3, 0, 1, 1, 1) self.Combo_Log7 = QtWidgets.QComboBox(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.Combo_Log7.sizePolicy().hasHeightForWidth()) self.Combo_Log7.setSizePolicy(sizePolicy) self.Combo_Log7.setObjectName("Combo_Log7 ") self.gridLayout.addWidget(self.Combo_Log7, 0, 3, 1, 1) self.Combo_Log6 = QtWidgets.QComboBox(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.Combo_Log6.sizePolicy().hasHeightForWidth()) self.Combo_Log6.setSizePolicy(sizePolicy) self.Combo_Log6.setObjectName("Combo_Log6") self.gridLayout。 addWidget(self.Combo_Log6, 1, 2, 1, 1) self.Combo_Log5 = QtWidgets.QComboBox(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.Combo_Log5.sizePolicy().hasHeightForWidth()) self. Combo_Log5.setSizePolicy(sizePolicy) self.Combo_Log5.setObjectName("Combo_Log5") self.gridLayout.addWidget(self.Combo_Log5, 0, 2, 1, 1) self.Combo_Log4 = QtWidgets.QComboBox(self.centralwidget) sizePolicy = QtWidgets。 QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.Combo_Log4.sizePolicy().hasHeightForWidth()) self.Combo_Log4.setSizePolicy(sizePolicy) self.Combo_Log4.setObjectName("Combo_Log4") self.gridLayout.addWidget(self.Combo_Log4, 1, 1,1, 1) self.Combo_Log2 = QtWidgets.QComboBox(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.Combo_Log2.sizePolicy().hasHeightForWidth()) self.Combo_Log2.setSizePolicy(sizePolicy) self.Combo_Log2.setObjectName("Combo_Log2") self.gridLayout.addWidget(self.Combo_Log2, 1, 0, 1, 1) self. lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget) self.lineEdit_2.setObjectName("lineEdit_2") self.gridLayout.addWidget(self.lineEdit_2, 2, 4, 1, 1) self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setObjectName("pushButton") self.gridLayout.addWidget(self.pushButton, 4, 4, 1, 1) self.Combo_Log1 = QtWidgets.QComboBox(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.Combo_Log1.sizePolicy().hasHeightForWidth()) self. Combo_Log1.setSizePolicy(sizePolicy) self.Combo_Log1.setObjectName("Combo_Log1") self.gridLayout.addWidget(self.Combo_Log1, 0, 0, 1, 1) self.label = QtWidgets.QLabel(self.centralwidget) self.label。 setObjectName("label") self.gridLayout.addWidget(self.label, 0, 4, 1, 1) self.scrollArea = QtWidgets.QScrollArea(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets. QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(150) sizePolicy.setVerticalStretch(150) sizePolicy.setHeightForWidth(self.scrollArea.sizePolicy()。hasHeightForWidth()) self.scrollArea.setSizePolicy(sizePolicy) self.scrollArea.setMinimumSize(QtCore.QSize(0, 0)) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets .QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 970, 1526)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_2.setObjectName ("gridLayout_2")第1526章)self.scrollAreaWidgetContents.setObjectName(“scrollAreaWidgetContents”)self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)self.gridLayout_2.setObjectName(“gridLayout_2”)第1526章)self.scrollAreaWidgetContents.setObjectName(“scrollAreaWidgetContents”)self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)self.gridLayout_2.setObjectName(“gridLayout_2”)
self.graphicsView=PlotWidget(self.scrollAreaWidgetContents) ####### New to activate the graph plot ########
self.graphicsView.setObjectName("graphicsView")
self.gridLayout_2.addWidget(self.graphicsView, 0, 0, 1, 1)
self.graphicsView_2 = QtWidgets.QGraphicsView(self.scrollAreaWidgetContents)
self.graphicsView_2.setObjectName("graphicsView_2")
self.gridLayout_2.addWidget(self.graphicsView_2, 0, 1, 1, 1)
self.graphicsView_3 = QtWidgets.QGraphicsView(self.scrollAreaWidgetContents)
self.graphicsView_3.setObjectName("graphicsView_3")
self.gridLayout_2.addWidget(self.graphicsView_3, 0, 2, 1, 1)
self.graphicsView_4 = QtWidgets.QGraphicsView(self.scrollAreaWidgetContents)
self.graphicsView_4.setMinimumSize(QtCore.QSize(0, 1500))
self.graphicsView_4.setObjectName("graphicsView_4")
self.gridLayout_2.addWidget(self.graphicsView_4, 0, 3, 1, 1)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.gridLayout.addWidget(self.scrollArea, 2, 0, 3, 4)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1289, 31))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
self.menuEdit = QtWidgets.QMenu(self.menubar)
self.menuEdit.setObjectName("menuEdit")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionImport_LAS = QtWidgets.QAction(MainWindow)
self.actionImport_LAS.setObjectName("actionImport_LAS")
self.actionExit = QtWidgets.QAction(MainWindow)
self.actionExit.setObjectName("actionExit")
self.actionResample = QtWidgets.QAction(MainWindow)
self.actionResample.setObjectName("actionResample")
self.menuFile.addAction(self.actionImport_LAS)
self.menuFile.addAction(self.actionExit)
self.menuEdit.addAction(self.actionResample)
self.menubar.addAction(self.menuFile.menuAction())
self.menubar.addAction(self.menuEdit.menuAction())
self.pushButton.clicked.connect(self.MyPlot)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
#########################################################
#########################################################
def MyPlot(self):
global MainPlot, AuxPlot
########### Y dataset ##################
SelectedDepth=[100,200,300,400,500,600]
########### X1 dataset ##################
SelectedData1_ToList = [12,23,43,45,56,76]
############ X2 dataset ################
SelectedData2_ToList = [3,2,4,5,6,1]
########### Plot both Log1 and 2 #############
MainPlot=self.graphicsView
AuxPlot =pg.ViewBox() #pg.ViewBox() #self.gView #pg.ViewBox()
######### try to clear ##########
global MyLog1
global MyLog2
try:
MainPlot.removeItem(MyLog1)
AuxPlot.removeItem(MyLog2)
except: pass #This means on error resume next
######### try to clear ends ##########
AuxPlot.setYLink(MainPlot)
MainPlot.scene().addItem(AuxPlot)
AuxPlot.setGeometry(MainPlot.getPlotItem().vb.sceneBoundingRect())
ax4 =pg.AxisItem('top')
ax4.linkToView(AuxPlot)
MainPlot.getAxis('top').linkToView(AuxPlot)
MainPlot.showAxis('top')
MainPlot.invertY(True)
AuxPlot.invertY(True)
MyLog1=pg.PlotCurveItem(SelectedData1_ToList,SelectedDepth, pen="w" )
MainPlot.addItem(MyLog1)
MainPlot.autoRange()
MyLog2=pg.PlotCurveItem(SelectedData2_ToList,SelectedDepth, pen="b")
AuxPlot.addItem(MyLog2)
AuxPlot.autoRange()
#########################################################
#########################################################
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.label.setText(_translate("MainWindow", "TextLabel"))
self.menuFile.setTitle(_translate("MainWindow", "File"))
self.menuEdit.setTitle(_translate("MainWindow", "Edit"))
self.actionImport_LAS.setText(_translate("MainWindow", "Import LAS"))
self.actionExit.setText(_translate("MainWindow", "Exit"))
self.actionResample.setText(_translate("MainWindow", "Resample"))
if name == " main ": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_ ())