Объект, которым вы управляете, на самом деле является тем, что Chaco называет «средством визуализации» и не имеет доступа к данным. Чтобы динамически обновлять графики, вы хотите вызвать метод set_data
объекта ArrayPlotData
. Вы можете получить доступ к этому объектам Plot
, но в вашем случае имеет смысл хранить ссылку непосредственно на объект ArrayPlotData
. Если вы хотите обновить объект LinePlot
, тогда сделайте ссылку на него. Этот пример показывает стандартный способ делать такие вещи с TraitsUI и Чако:
from chaco.api import ArrayPlotData, HPlotContainer, Plot, LinePlot
from enable.api import ComponentEditor
import numpy as np
from traits.api import Array, Event, HasTraits, Instance, Int
from traitsui.api import ButtonEditor, Item, View
class DataUpdateDemo(HasTraits):
plots = Instance(HPlotContainer)
plot_data = Instance(ArrayPlotData)
line_plot_1 = Instance(LinePlot)
line_plot_2 = Instance(LinePlot)
x = Array
y = Array
go = Event
w = Int(1)
def _x_default(self):
x = np.linspace(-np.pi, np.pi, 100)
return x
def _y_default(self):
y = np.sin(self.w * self.x)
return y
def _plots_default(self):
self.plot_data = ArrayPlotData(y=self.y, x=self.x)
plot1 = Plot(self.plot_data)
self.line_plot_renderer1 = plot1.plot(('x', 'y'), kind='line')[0]
plot2 = Plot(self.plot_data)
self.line_plot_renderer_2 = plot2.plot(('y', 'x'), kind='line')[0]
plots = HPlotContainer(plot1, plot2)
return plots
def _go_fired(self):
self.w += 1
y = np.sin(self.w * self.x)
self.plot_data.set_data("y", y)
traits_view = View(
Item('plots', editor=ComponentEditor(), show_label=False),
Item('go', editor=ButtonEditor(label="update"), show_label=False),
)
if __name__ == "__main__":
dud = DataUpdateDemo()
dud.configure_traits()
Теперь вы можете делать все манипуляции вы хотите на LinePlot
объекта.
я получаю вывод, который выглядит следующим образом:
Ну, 'Plot' класс имеет' data' атрибут, как вы продемонстрировать себя, но 'LinePlot', кажется, не имеют. Я использовал 'LinePlot', потому что мне было легче изменить его параметры внешнего вида, такие как ориентация осей и т. Д. – MindV0rtex
Спасибо за разъяснение. Я обновил код и объяснил. –