使用matplotlib绘制垂直线
我想用Matpotlib画一条垂直线,我使用的是使用matplotlib绘制垂直线,matplotlib,Matplotlib,我想用Matpotlib画一条垂直线,我使用的是axvline,但它不起作用 import sys import matplotlib matplotlib.use('Qt4Agg') from ui_courbe import * from PyQt4 import QtGui from matplotlib import pyplot as plt class Window(QtGui.QMainWindow, Ui_MainWindow): def __init__(sel
axvline
,但它不起作用
import sys
import matplotlib
matplotlib.use('Qt4Agg')
from ui_courbe import *
from PyQt4 import QtGui
from matplotlib import pyplot as plt
class Window(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.setupUi(self)
self.boutonDessiner.clicked.connect(self.generatePlot)
def generatePlot(self):
# generate the plot
ax = self.graphicsView.canvas.fig.add_subplot(111)
ax.plot([1,3,5,7],[2,5,1,-2])
plt.axvline(x=4)
self.graphicsView.canvas.draw()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
我可以看到我的绘图,但没有垂直线。为什么?您的示例并不完整,但我认为您需要替换:
plt.axvline(x=4)
与:
将线添加到未显示的轴。使用plt.
是您可能希望在GUI中避免使用的pyplot接口。因此,所有绘图都必须在轴上进行,如ax.
- 不同之处在于,您可以将多个位置作为列表传递给
,而只允许一个位置。x
- 单个位置:
x=37
- 多个位置:
x=[37,38,39]
- 单个位置:
- 如果您正在使用类似于
的图形绘制,则分别将fig,ax=plt.subplot()
或plt.vline
替换为plt.axvline
ax.vline
将numpy导入为np
将matplotlib.pyplot作为plt导入
xs=np.linspace(1,21200)
plt.vlines(x=[37,38,39],ymin=0,ymax=len(xs),colors='purple',ls='--',lw=2,label='vline_multiple')
plt.vlines(x=40,ymin=0,ymax=len(xs),colors='green',ls=':',lw=2,label='vline_single')
打印轴(x=36,颜色为'b',标签为'avline')
plt.legend()
plt.show()
这是否回答了您的问题?
ax.axvline(x=4)