python绘图滚动条_python绘图滚动条_Matplotlib上的滚动条显示页面

显示matplotlib图的窗口没有添加滚动条的选项。它将自动将其大小调整为图形大小。相反,如果调整大小,图形也将调整大小。

一种选择是建立一个具有此功能的自定义窗口。为此,可以使用PyQt。下面给出一个示例,该示例plt.show()以图形作为参数来调用,而不是调用自定义类。图形的大小应fig事先设置为图形,并且该自定义类不会更改它。而是将图形放入带有滚动条的画布中,以便图形保留其原始大小,并可以在Qt窗口中滚动。您不必处理类内的详细信息,而只需处理脚本末尾的调用即可。

本示例适用于PyQt4,请参见下文中的PyQt5示例。

import matplotlib.pyplot as plt

from PyQt4 import QtGui

from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas

from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar

class ScrollableWindow(QtGui.QMainWindow):

def __init__(self, fig):

self.qapp = QtGui.QApplication([])

QtGui.QMainWindow.__init__(self)

self.widget = QtGui.QWidget()

self.setCentralWidget(self.widget)

self.widget.setLayout(QtGui.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 = QtGui.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_())

# create a figure and some subplots

fig, axes = plt.subplots(ncols=4, nrows=5, figsize=(16,16))

for ax in axes.flatten():

ax.plot([2,3,5,1])

# pass the figure to the custom window

a = ScrollableWindow(fig)

在此处输入图片说明

这是PyQt5的版本。

import matplotlib

# Make sure that we are using QT5

matplotlib.use('Qt5Agg')

import matplotlib.pyplot as plt

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_())

# create a figure and some subplots

fig, axes = plt.subplots(ncols=4, nrows=5, figsize=(16,16))

for ax in axes.flatten():

ax.plot([2,3,5,1])

# pass the figure to the custom window

a = ScrollableWindow(fig)

虽然此答案显示了一种滚动完整图形的方法

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值