我试图在 Matplotlib 的同一轴上绘制一条线和数据点。当我尝试先绘制线时,数据点会被清除,当我尝试先绘制数据点时也是如此。这是最小的代码:
from PyQt4 import QtGui
import sys
import ui_sof_test #Gui File
from matplotlib.ticker import AutoMinorLocator
class Gui(QtGui.QMainWindow, ui_sof_test.Ui_MainWindow):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
self.call_test()
def call_test(self):
x = [1,2,3,4,5,6,7,8,9,10]
y = [1000,2000,3000,4000,5000,6000,7000,8000,9000,10000]
self.plot_test(x,y)
def plot_test(self, x, y):
ax1 = self.mplwidget.axes
fig = self.mplwidget.figure #Add a figure
ax1.plot(x, y, 'k', linestyle = "solid", linewidth = 1)
ax1.plot(x, y, "ro")
#Log scale
ax1.set_xscale('log')
ax1.set_yscale('log')
#format tick labels
ax1.axis([1, 20, 100, 100000])
#set Limits
#Gridlines
#Plot y axis minor tick marks
minorLocatory = AutoMinorLocator()
ax1.yaxis.set_minor_locator(minorLocatory)
ax1.tick_params(which='both', width= 0.5)
ax1.tick_params(which='major', length=7)
ax1.tick_params(which='minor', length=4, color='k')
ax1.minorticks_on()
#Make Border of Chart White
fig.set_facecolor('white')
#Plot Grid
ax1.grid(b=True, which='both', color='k', linestyle='-')
#Draw Chart
fig.canvas.update()
fig.canvas.draw()
def main():
app = QtGui.QApplication(sys.argv) # A new instance of QApplication
form = Gui() # We set the form to be our ExampleApp (design)
form.show() # Show the form
app.exec_() # and execute the. app
if __name__ == '__main__': # if we're running file directly and not importing it
main() # run the main function
`
这是从 PYQT4 UI 文件创建的 python 代码。只需将其保存为 ui_sof_test.py:
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1441, 705)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.tabWidget = QtGui.QTabWidget(self.centralwidget)
self.tabWidget.setGeometry(QtCore.QRect(0, 0, 1111, 671))
self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
self.tab = QtGui.QWidget()
self.tab.setObjectName(_fromUtf8("tab"))
self.mplwidget = MatplotlibWidget(self.tab)
self.mplwidget.setGeometry(QtCore.QRect(10, 20, 761, 461))
self.mplwidget.setObjectName(_fromUtf8("mplwidget"))
self.tabWidget.addTab(self.tab, _fromUtf8(""))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1441, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "Motor Tester", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Test", None))
from matplotlibwidget import MatplotlibWidget