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