首页 > 解决方案 > matplotlib,如何使用滚动条保存子图

问题描述

嗨,我搜索了不错的模块来保存带有滚动条的子图。但是这个模块只能显示绘图而不是保存文件,显示“分段错误(核心转储)”消息......

我不知道为什么..你能帮帮我吗..?实际上,当我只保存一个情节时,它运行良好。但是当我使用 for 循环函数保存多个绘图时,该消息显示并阻止脚本运行..

```蟒蛇```

    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, savefile):
    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()
    plt.savefig(savefile)
    #exit() 
    #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,'test.png')


标签: pythonmatplotlib

解决方案


推荐阅读