在 WxPython GUI 示例中结合绘图和网格

Combine plot and grid in WxPython GUI Example

目前我正在用 WxPython 开发 GUI。

我使用 matplotib 和基础数据的网格视图创建了一个线图。但是,作为我 运行 的程序,网格和绘图被加载到单独的 windows 中。我正在寻找有关如何将不同项目集成到一个 window 中的示例或教程。 有谁知道这方面的任何好的例子或教程?我找不到一个明确的例子。

谢谢!

最近我使用matplotlib和wx来绘制一些直方图,这个解决方案也许可以帮助你解决你的问题。代码继承自一个面板,需要像面板一样添加这个组件。要设置数据,请使用函数 SetData。

from matplotlib.figure import Figure
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas

class HistogramPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.figure = Figure(figsize=(-1, -1))
        self.canvas = FigureCanvas(self, -1, self.figure)
        self.axis = self.figure.add_subplot(111)

        self.rootSizer = wx.BoxSizer(wx.VERTICAL)
        self.rootSizer.Add(self.canvas, 1, wx.EXPAND | wx.GROW)
        self.SetSizer(self.rootSizer)

        self.FitInside()
        self.Layout()

    def SetData(self, values, color="black", linewidth=1):
        self.axis.clear()
        self.axis.plot(values, color=color, linewidth=linewidth)
        self.axis.set_xlim([0, 256])
        self.Layout()

这是一个示例代码Embedding a matplotlib figure inside a WxPython panel

基本上,要保存 matplotlib 图,您可以使用 FigureCanvasWxAgg 可以像这样导入:

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg

并且,您将在 Figure MPL 实例上进行正常绘图。

from matplotlib.figure import Figure

并将此图放在 FigureCanvasWxAgg 上,它可以使用 sizer 与您的网格一起放在面板上。