Python 용 Chaco 플로팅 툴킷에는 기존 플롯을 동적으로 업데이트하는 방법을 보여주는 예제가 포함되어 있습니다. 그러나 필자의 경우에는 은 데이터에 따라 플롯을 동적으로 만들고 파괴해야합니다. 나는 Chaco와 Traits으로 프로그래밍을 처음 사용하기 때문에이를 수행하는 방법을 보여주는 간단한 예제가 정말 도움이 될 것입니다.Chaco에서 동적으로 플롯 만들기
14
A
답변
7
조금 늦었지 만 여기에는 Chaco 플롯을 생성하고 소멸시키는 예제가 있습니다. 주 인터페이스는 PlotSelector
으로, 두 가지 다른 플롯 스타일 (라인 및 바 플롯)간에 전환하기위한 가짜 데이터 및 라디오 버튼을 정의합니다.
이 예제에서는 특성 이벤트를 사용하여 플롯을 닫을 때를 알리고 PlotController
으로 해당 신호를 처리합니다. 창을 닫는 더 좋은 방법이있을 수 있지만 찾을 수 없습니다.
편집 : Traits, Chaco 및 Enable (ETS 4 대신 3)의 새 버전에 대한 가져 오기가 업데이트되었습니다.
import numpy as np
import traits.api as traits
import traitsui.api as ui
import chaco.api as chaco
from enable.api import ComponentEditor
class PlotController(ui.Controller):
view = ui.View(ui.Item('plot', editor=ComponentEditor(), show_label=False),
height=300, width=300, resizable=True)
def object_close_signal_changed(self, info):
info.ui.dispose()
class BasicPlot(traits.HasTraits):
close_signal = traits.Event()
plot = traits.Instance(chaco.Plot)
class LinePlot(BasicPlot):
def __init__(self, plotdata):
self.plot = chaco.Plot(plotdata)
self.plot.plot(('x', 'y'))
class BarPlot(BasicPlot):
def __init__(self, plotdata):
self.plot = chaco.Plot(plotdata)
self.plot.candle_plot(('x', 'ymin', 'ymax'))
available_plot_types = dict(line=LinePlot, bar=BarPlot)
class PlotSelector(traits.HasTraits):
plot_type = traits.Enum(['line', 'bar'])
traits_view = ui.View('plot_type', style='custom')
def __init__(self, x, y):
ymin = y - 1
ymax = y + 1
self.plotdata = chaco.ArrayPlotData(x=x, y=y, ymin=ymin, ymax=ymax)
self.figure = None
def _plot_type_changed(self):
plot_class = available_plot_types[self.plot_type]
if self.figure is not None:
self.figure.close_signal = True
self.figure = plot_class(self.plotdata)
controller = PlotController(model=self.figure)
controller.edit_traits()
N = 20
x = np.arange(N)
y = x + np.random.normal(size=N)
plot_selector = PlotSelector(x, y)
plot_selector.configure_traits()
주 메인 인터페이스 (PlotSelector
)이 플롯은 (응용 프로그램 내에서 호출) edit_traits
으로 볼 동안 configure_traits
은, (응용 프로그램을 시작) 호출하는. 또한이 예제에서는 모델에서 호출하는 대신 edit_traits
을 PlotController
에서 호출합니다. 대신보기를 PlotController
에서 BasicPlot
으로 이동하고 해당보기의 처리기 메서드를 PlotController
으로 설정할 수 있습니다. 당신이 완전히 플롯 창을 파괴 할 필요가없는 경우
마지막으로, 당신은 (여기에 선 그림 또는 막대 그래프)를 * 서브 * 플롯을 파괴 Plot
객체의 delplot
방법,보고 할 수 있습니다 .
도움이 되었기를 바랍니다.
관련 문제
- 1. 요소별로 플롯 만들기 matplotlib.pyplot?
- 2. 3 진 플롯 만들기
- 3. ggplot2를 사용하여 루프에서 플롯 만들기
- 4. 특정 크기의 플롯 창 만들기
- 5. Matlab을 사용하여 행렬 항목의 플롯 만들기
- 6. ggplot 및 aes_string을 사용하여 플롯 기능 만들기
- 7. 목록의 데이터를 사용하여 채워진 등고선 플롯 만들기
- 8. MATLAB GUI에서 서프 플롯 만들기 회전 가능
- 9. numpy 배열의 paraview에 등고선 플롯 만들기
- 10. 2D 조각에서 파이썬으로 3D 플롯 만들기
- 11. 2 개의 변수가있는 Matlab에서 3D 플롯 만들기
- 12. 동적으로 formset 만들기
- 13. 동적으로 구성 요소 만들기
- 14. jquery 툴팁을 동적으로 만들기
- 15. 동적으로 컨트롤 만들기
- 16. 동적으로 양식 만들기
- 17. 동적으로 WPF 격자 만들기
- 18. 동적으로 버튼 만들기 - JQueryMobile
- 19. 동적으로 새 "화면"만들기
- 20. 만들기 테이블 동적으로 jQuery를
- 21. Expression.OrElse, 동적으로 조건 만들기
- 22. 랠리 : 동적으로 테이블 만들기
- 23. 동적으로 MVC 객체 만들기
- 24. 동적으로 uiImageView 만들기
- 25. 동적으로 .ics 파일 만들기
- 26. 동적으로 클래스 만들기
- 27. 동적으로 grep 문자열 만들기
- 28. 동적으로 회 전자 만들기
- 29. C에서 동적으로 Json 만들기 #
- 30. 동적으로 iframe 내용 만들기
음모가 필요하기 전에 음모 꾸미기 프레임을보고 싶지 않아도 음모를 꾸미는 시간이되면 음모 프레임을 제거하고 싶지 않습니까? –
너무 많은 프레임을 보지 않아도됩니다. 데이터가 플롯 수를 제어하고 시간이 지남에 따라이 숫자가 바뀔 수 있으므로 미리 프레임을 만들 수 없습니다. 이 일을 어떻게 수행할지에 대한 생각은 있습니까? – Andreas
죄송합니다. 지금 당장 좋은 답변을 드릴 시간이 없어요. 그러나이 페이지의 튜토리얼은 실제로 도움이되지 않습니까? http://github.enthought.com/chaco/user_manual/tutorial.html –