Поскольку вы не указали, где (в терминах wxWidgets) вы пытаетесь добавить свой график в графический интерфейс, я постараюсь дать общий ответ. В своих приложениях я использую wx.Panel в качестве основы или основы рисунков matplotlib.
Внутри панели вы можете создать фигуру и сюжет с вашей собственной функцией. Как видно из кода, это реализация на основе классов.
import wx
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
class PlotPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
# self.fig = Figure((10, 4), 75)
sizer = wx.BoxSizer()
sizer.Add(self, 1, wx.EXPAND)
self.Parent.SetSizer(sizer)
# self.fig = Figure(facecolor='blue')
self.fig = Figure()
self.canvas = FigureCanvasWxAgg(self, -1, self.fig)
# Create toolbar for the figure
self.toolbar = Toolbar(self.canvas) # matplotlib toolbar
self.toolbar.Realize()
# Now put all into a sizer
sizer = wx.BoxSizer(wx.VERTICAL)
# This way of adding to sizer allows resizing
sizer.Add(self.canvas, 1, wx.EXPAND | wx.ALL | wx.CENTER | wx.CENTER | wx.GROW)
# Best to allow the toolbar to resize!
sizer.Add(self.toolbar, 0, wx.EXPAND | wx.ALL | wx.GROW)
self.SetSizer(sizer)
self.Fit()
def GetToolBar(self):
# You will need to override GetToolBar if you are using an
# unmanaged toolbar in your frame
return self.toolbar
def onEraseBackground(self, evt):
# this is supposed to prevent redraw flicker on some X servers...
pass
def draw_graph(self, y_money, x_date):
""" You can access above parameters and plot
your graph """
# Your own plotting function definition
Это частично моя реализация с использованием источника из этой старой scipy wiki ссылки . Некоторые вещи внутри функции init могут быть бесполезны для вашего приложения, такие как панель инструментов и т. Д.