Я пытаюсь построить линию, используя холст и matplotlib.
У меня уже есть рисунок и все остальное. Но когда я пытаюсь использовать команду для построения графика (self.axes.plot ()), она не работает.
Кто-нибудь знает, что происходит ?? Возможно, мне не хватает какой-то детали, но я не могу ее найти !!
import sys
from PyQt5.QtWidgets import *
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib import pyplot as plt
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Plotting")
self.setGeometry(50, 50, 700, 700)
self.UI()
self.show()
def UI(self):
# Cria o canvas para exibição dos entes da estrutura ------------------
self.dpi = 70
self.fig = Figure((5.0, 5.0), dpi=self.dpi, frameon=False, tight_layout=True)
self.canvas = FigureCanvas(self.fig)
self.axes = self.fig.add_subplot(111)
# Cria grid de plotagem (axes) ----------------------------------------
self.load_axes()
layout = QGridLayout()
layout.addWidget(self.canvas, 0, 0)
self.setLayout(layout)
self.plotar()
def plotar(self):
self.axes.clear()
self.load_axes()
self.axes.plot([0, 0], [1, 1], linestyle = '-', color = 'black', linewidth=5.5, zorder = 0)
# Define a área de plotagem -------------------------------------------
self.axes.relim()
# Plota todas as linhas no canvas -------------------------------------
self.fig.canvas.draw()
def load_axes(self):
self.axes.axis('equal')
self.axes.set_xmargin(.4)
self.axes.set_ymargin(.4)
self.axes.autoscale_view(tight=True)
self.axes.xaxis.set_major_locator(plt.MultipleLocator(5.0))
self.axes.xaxis.set_minor_locator(plt.MultipleLocator(1.0))
self.axes.yaxis.set_major_locator(plt.MultipleLocator(5.0))
self.axes.yaxis.set_minor_locator(plt.MultipleLocator(1.0))
self.axes.grid(which='major', axis='x', linewidth=0.75, linestyle='-', color='gainsboro')
self.axes.grid(which='minor', axis='x', linewidth=0.50, linestyle='-', color='gainsboro')
self.axes.grid(which='major', axis='y', linewidth=0.75, linestyle='-', color='gainsboro')
self.axes.grid(which='minor', axis='y', linewidth=0.50, linestyle='-', color='gainsboro')
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__=='__main__':
main()