我需要将底部滚动条添加到matplotlib图表(PyQt5)

时间:2019-05-08 17:45:24

标签: python matplotlib pyqt5

我喜欢pyqt5中的处理方式。我以this example为基础。

目前尚不清楚如何延长时间表。如果我展开窗口,则图形将保持与以前相同的大小。 我还注意到,增加图表时的滚动仅滚动所选的细分,并且我需要从图表的开始滚动到结束。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# Make sure that we are using QT5
matplotlib.use('Qt5Agg')
from PyQt5 import QtWidgets
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar


class ScrollableWindow(QtWidgets.QMainWindow):
    def __init__(self, fig):
        self.qapp = QtWidgets.QApplication([])

        QtWidgets.QMainWindow.__init__(self)
        self.widget = QtWidgets.QWidget()
        self.setCentralWidget(self.widget)
        self.widget.setLayout(QtWidgets.QVBoxLayout())
        self.widget.layout().setContentsMargins(0,0,0,0)
        self.widget.layout().setSpacing(0)

        self.fig = fig
        self.canvas = FigureCanvas(self.fig)
        self.canvas.draw()
        self.scroll = QtWidgets.QScrollArea(self.widget)
        self.scroll.setWidget(self.canvas)

        self.nav = NavigationToolbar(self.canvas, self.widget)
        self.widget.layout().addWidget(self.nav)
        self.widget.layout().addWidget(self.scroll)

        self.show()
        exit(self.qapp.exec_())

x = pd.read_csv('file.txt',
                    index_col='DATE',
                    parse_dates=True,
                    infer_datetime_format=True)
z = x.iloc[:, 3].values
N = len(z)
ind = np.arange(N)

fig, ax = plt.subplots()
ax.plot(ind, z)

a = ScrollableWindow(fig)  

这是图表在开始时的样子 enter image description here

所以,如果您扩展窗口 enter image description here

我更改了“ figsize”图,ax = plt.subplots(figsize =(100,7)) 也就是说,无论缩放如何,滚动都应该对所有数据起作用。 在可见窗口中,图形的最大值和最小值应为窗口边框。 我也想删除垂直滚动条。

0 个答案:

没有答案