将yaxis固定到位

时间:2018-01-26 11:57:45

标签: python user-interface matplotlib pyqt scrollbar

这是我编写/改编的一些代码,它产生下面的输出:

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

import sys

from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure

import matplotlib.pyplot as plt
import numpy as np


class LineBuilder:
    def __init__(self, ax):
        self.ax = ax
        self.on = 1
        self.lastline, = self.ax.plot([0],[0])
        self.cid = ax.figure.canvas.mpl_connect('pick_event', self)

    def __call__(self, event):
        self.on *=-1
        thisline = event.artist
        xdata = thisline.get_xdata()
        ydata = thisline.get_ydata()
        ind = event.ind
        print(xdata[ind])
        print('modified',xdata[ind][0])
        self.lastline.remove()
        self.lastline=self.ax.axvline(x=xdata[ind][0])
        self.ax.figure.canvas.draw()

class View(QGraphicsView):

    def __init__(self):
        super(View, self).__init__()

        self.initScene(5)

    def initScene(self,h):     

        self.scene = QGraphicsScene()
        self.figure = plt.figure()
        self.canvas = FigureCanvas(self.figure)
        self.figure.subplots_adjust(left=0.03,right=1,bottom=.1,top=1,wspace=0, hspace=0)

        ax = self.figure.add_subplot(111)
        ax.set_xlim([0,1000])
        data = np.random.rand(1000)
        ax.plot(data, '-') 

        self.canvas.draw()
        self.setScene(self.scene)
        self.scene.addWidget(self.canvas)

class MainWindow(QMainWindow):

    def __init__(self):
        super(MainWindow,self).__init__()

        self.setGeometry(150, 150, 700, 550) 

        self.view = View()
        self.view.setGeometry(0,0,self.width()*2,500)
        self.view.canvas.setGeometry(0,0,self.width()*2,500)        

        self.setCentralWidget(self.view)

app = QApplication(sys.argv)

window = MainWindow()
window.show()

app.exec_()

enter image description here

我可以使用底部的滚动条来查看整个图像。但是,滚动时,我很快就会看不到y轴标签。是否可以将它们固定到位,以便滚动条仅更改可见的x轴部分(同时yaxis刻度和标签保持固定)?

1 个答案:

答案 0 :(得分:1)

而不是在QGraphicsView中搜索完整的图形,而不是在窗口中添加$ gcloud container images list NAME gcr.io/stemnapp/alpine-nodejs $ gcloud container images delete gcr.io/stemnapp/alpine-nodejs ERROR: (gcloud.container.images.delete) [gcr.io/stemnapp/alpine-nodejs:latest] is not a valid name. 并将其连接到一个函数,该函数更新图中轴的xlim。

QScrollBar