python – Matplotlib上显示页面的滚动条
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Matplotlib上显示页面的滚动条,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2975字,纯文字阅读大概需要5分钟。
内容图文
![python – Matplotlib上显示页面的滚动条](/upload/InfoBanner/zyjiaocheng/750/327806af020f436b939e03c7d16038fd.jpg)
我想知道是否有一种方法可以在matplotlib上显示滚动条(水平或垂直),显示包含多个子槽(sublot2grid)的页面(plt.show).目前,我找到的唯一解决方案是使子图非常小,这根本不是很优雅.
解决方法:
显示matplotlib图的窗口没有添加滚动条的选项.它会自动调整大小到图形大小.相反,如果调整大小,数字也会调整大小.
一个选项是构建一个具有此功能的自定义窗口.为此,可以使用PyQt.下面给出一个示例,其中不是调用plt.show()而是调用自定义类,并将图形绘制为参数.图形大小应设置为图前面的图形,并且自定义类不会更改它.相反,它将图形放入带有滚动条的画布中,这样图形保留了原始大小,并且可以在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)
虽然这个答案显示了滚动整个图形的方法,但如果您对滚动轴的内容感兴趣,请查看this answer
内容总结
以上是互联网集市为您收集整理的python – Matplotlib上显示页面的滚动条全部内容,希望文章能够帮你解决python – Matplotlib上显示页面的滚动条所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。