如何在wxpython面板上减少matplotlib图形的边距?

0 投票
2 回答
513 浏览
提问于 2025-04-17 22:47

我已经成功把一个matplotlib的折线图放到了wxpython的面板上,但我觉得边距看起来太大了。我想减少这些边距,这样图表就能更好地填满面板(或者说几乎填满)。我试过用self.fig.tight_layout(),但是它并没有减少边距。

import wx
import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigCanvas

class GraphFrame():
    def __init__(self, parent):
    self.parent = parent
    self.dpi = 100
    self.fig = Figure((3.0, 3.0), dpi=self.dpi)
    self.canvas = FigCanvas(self.parent, -1, self.fig)
    self.axes = self.fig.add_subplot(111)
    self.fig.tight_layout()
    self.canvas.draw()

chart_panel = wx.Panel(self.main_Frame, -1)
chart = GraphFrame(chart_panel)

2 个回答

0

你可以试着使用subplots_adjust这个方法

下面是一个例子

fig.subplots_adjust(left=0.1,right=0.9,bottom=0.1,top=0.9)

希望这对你有帮助

1

看到你的代码里已经有了tight_layout()这个函数,我就彻底重写了我的回答。我希望这能符合你的需求。在这种情况下,tight_layout这个功能似乎有点作用(在你的代码片段中,tight_layout在我用的Windows XP上完全没有改变边距)。可能wx.Frame和FigureCanvasWxAgg的配合效果比wx.Panel要好一些吧?

import wx
import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg

class GraphFrame(wx.Frame):
    def __init__(self, parent):

        wx.Frame.__init__(self, parent, -1, size=(300,300))
        figure = Figure()
        fc = FigureCanvasWxAgg(self, -1, figure)
        axes = figure.add_subplot(111)
        figure.tight_layout()
        self.Show(True)

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    graphframe = GraphFrame(None)
    app.MainLoop()

撰写回答