我正在尝试在Chaco图中使用PanTool和ZoomTool,其原点设置为“左上角”,但这些工具的行为并不像预期的那样。平移向相反方向移动,框缩放不一定缩放到突出显示的区域。示例代码是:
plot.plot((x_key, y_key), origin='top left')
plot.tools.append(PanTool(plot))
plot.overlays.append(ZoomTool(plot, tool_mode='box', always_on=False))
如果删除了origin='top left'
,则平移和缩放行为就像我期望的那样。
答案 0 :(得分:0)
这是一个非常晚的回复,但基本上需要在主Plot
实例上设置原点,而不是调用其plot
方法。 (初始化origin
时设置的Plot
也会传递到plot
import numpy as np
from enable.api import Component, ComponentEditor
from traits.api import HasTraits, Instance
from traitsui.api import UItem, Group, View
from chaco.api import ArrayPlotData, Plot
from chaco.tools.api import PanTool, ZoomTool
class Demo(HasTraits):
plot = Instance(Component)
traits_view = View(
Group(
UItem('plot', editor=ComponentEditor(size=(900, 500))),
),
)
def _plot_default(self):
x = np.linspace(-2.0, 10.0, 100)
data = ArrayPlotData(x=x, y=np.sin(x))
# This works
plot = Plot(data, origin='top left')
plot.plot(('x', 'y'))
# This doesn't
# plot = Plot(data)
# plot.plot(('x', 'y'), origin='top left')
plot.tools.append(PanTool(plot))
zoom = ZoomTool(component=plot, tool_mode="box", always_on=False)
plot.overlays.append(zoom)
return plot
if __name__ == "__main__":
demo = Demo()
demo.configure_traits()