pyqt5:如何一起放大x轴和y轴上的图形?

时间:2017-09-11 06:04:14

标签: pyqt5 matplotlib-basemap

我想通过pyqt5绘制一个图形,如下图所示,我想在一个图中看到所有数据并放大以查看一些图形;我希望当Izoom在这个图的一部分时,x轴和y轴一起适合细节;

import sys
from PyQt5 import QtWidgets 
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar
import matplotlib.pyplot as plt 
import matplotlib.finance as mpf

class Window(QtWidgets.QDialog):
  def __init__(self,Data,parent=None):
    super().__init__(parent) 
    self.candleData=Data[0]
    self.plots=len(Data)
    if self.plots>1:
        self.lineData=Data[1]

    self.figure = plt.figure(figsize=(30,18))
    self.axes = self.figure.add_subplot(111)
    self.axes.hold(True)
    self.canvas = FigureCanvas(self.figure)

    self.toolbar = NavigationToolbar(self.canvas, self)
    self.toolbar.hide()

    self.button2 = QtWidgets.QPushButton('Zoom')
    self.button2.clicked.connect(self.zoom)

    self.button3 = QtWidgets.QPushButton('Pan')
    self.button3.clicked.connect(self.pan)

    self.button4 = QtWidgets.QPushButton('Home')
    self.button4.clicked.connect(self.home)


    layout = QtWidgets.QVBoxLayout()
    layout.addWidget(self.toolbar)
    layout.addWidget(self.canvas)

    btnlayout = QtWidgets.QHBoxLayout()
    btnlayout.addWidget(self.button2)
    btnlayout.addWidget(self.button3)
    btnlayout.addWidget(self.button4)
    qw = QtWidgets.QWidget(self)
    qw.setLayout(btnlayout)
    layout.addWidget(qw)        
    self.setLayout(layout)

def home(self):
    self.toolbar.home()
def zoom(self):
    self.toolbar.zoom()
def pan(self):
    self.toolbar.pan()         
def plot(self):
    [obj.insert(0,i) for i,obj in enumerate(self.candleData)]
    mpf.candlestick_ohlc(self.axes,self.candleData,width=0.8,colorup='r',colordown='g')
    self.axes.grid()
    print(self.plots)
    if self.plots>1:
        for i in range(len(self.lineData)):
            self.axes.plot(self.lineData[i][0],self.lineData[i][1],color=self.lineData[i][2])
    self.canvas.draw()

现在我绘制一个数字并放大一些小部分作为打击:

截图:

enter image description here

但我应该使用" pan"看到所有这一切;我放大后会看到所有这些都自动了吗?

0 个答案:

没有答案