使用 matplotlib 绘制垂直线
Plot a vertical line using 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__(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)
与:
ax.axvline(x=4)
您正在将线添加到您未显示的轴上。使用 plt.
是您可能希望避免用于 GUI 的 pyplot 界面。所以你所有的绘图都必须在像 ax.
这样的轴上进行
matplotlib.pyplot.vlines
- 不同之处在于,您可以将 多个位置 作为列表传递给
x
,而 matplotlib.pyplot.axvline
只允许一个位置。
- 单个位置:
x=37
- 多个位置:
x=[37, 38, 39]
- 如果您正在用
fig, ax = plt.subplots()
之类的东西绘制图形,则分别将 plt.vlines
或 plt.axvline
替换为 ax.vlines
或 ax.axvline
。
import numpy as np
import matplotlib.pyplot as plt
xs = np.linspace(1, 21, 200)
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')
plt.axvline(x=36, color='b', label='avline')
plt.legend()
plt.show()
我想用 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__(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)
与:
ax.axvline(x=4)
您正在将线添加到您未显示的轴上。使用 plt.
是您可能希望避免用于 GUI 的 pyplot 界面。所以你所有的绘图都必须在像 ax.
matplotlib.pyplot.vlines
- 不同之处在于,您可以将 多个位置 作为列表传递给
x
,而matplotlib.pyplot.axvline
只允许一个位置。- 单个位置:
x=37
- 多个位置:
x=[37, 38, 39]
- 单个位置:
- 如果您正在用
fig, ax = plt.subplots()
之类的东西绘制图形,则分别将plt.vlines
或plt.axvline
替换为ax.vlines
或ax.axvline
。
import numpy as np
import matplotlib.pyplot as plt
xs = np.linspace(1, 21, 200)
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')
plt.axvline(x=36, color='b', label='avline')
plt.legend()
plt.show()