Я встраиваю много графиков в блокнот wxpython.Когда я впервые встраивал без ноутбука, сначала появлялся сюжет с заголовками и заголовками осей, но когда он начал анимироваться, они исчезали.эта проблема произошла со мной, и я исправил ее, изменив plt.Show()
на plt.draw()
.Затем я хотел добавить более одного графика с помощью wx.notebook.Я добавил, что создал графики и вставил их в разные страницы записной книжки, теперь происходит то, что заголовки и заголовки осей отображаются только на последнем построенном графике.Это код, который я использую для сюжета и как я встраиваю
import wx
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.animation as animation
from pandas.plotting import register_matplotlib_converters
from Main.SQL.crud import session_scope
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar
register_matplotlib_converters()
class plot_panel(wx.Panel):
def __init__(self, parent, model, x, y, title):
wx.Panel.__init__(self, parent)
sns.set()
self.title = title
self.figure = plt.figure(figsize=(10, 2))
self.canvas = FigureCanvas(self, -1, self.figure)
self.axis = self.figure.add_subplot(1, 1, 1)
self.toolbar = NavigationToolbar(self.canvas)
self.toolbar.Realize()
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.canvas, 1, wx.EXPAND)
sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND)
self.SetSizer(sizer)
self.x_axis = []
self.y_axis = []
ani = animation.FuncAnimation(self.figure, self.animate, fargs=(self.x_axis, self.y_axis, model, x, y), interval=500)
plt.draw()
def animate(self, i, x_axis, y_axis, model, x, y):
with session_scope() as s:
time = s.query(x).order_by(model.Datetime.desc()).first()
time = time[0]
value = s.query(y).order_by(model.Datetime.desc()).first()
value = value[0]
value = round(value, 2)
x_axis.append(time)
y_axis.append(value)
x_axis = x_axis[-150:]
y_axis = y_axis[-150:]
self.axis.clear()
self.axis.plot(x_axis, y_axis)
# Format plot
#plt.xticks(rotation=45, ha='right')
plt.subplots_adjust(bottom=0.30)
plt.title(self.title)
plt.ylabel(y.name)
plt.xlabel(x.name)
self.plot = ploting.plot_panel(plot_notebook, hygrometer_model, hygrometer_model.Datetime, hygrometer_model.H20_concentration, 'H20 Concentration vs Datetime')
self.plot_0 = ploting.plot_panel(plot_notebook, hygrometer_model, hygrometer_model.Datetime, hygrometer_model.total_pressure, 'Total Pressure vs Datetime')
self.plot_1 = ploting.plot_panel(plot_notebook, hygrometer_model, hygrometer_model.Datetime, hygrometer_model.temperature, 'Temperature vs Datetime')
plot_notebook.AddPage(self.plot, hygrometer_model.H20_concentration.name)
plot_notebook.AddPage(self.plot_0, hygrometer_model.total_pressure.name)
plot_notebook.AddPage(self.plot_1, hygrometer_model.temperature.name)