0

我正在尝试在原点设置为“左上角”的 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'删除,则平移和缩放行为如我所料。

4

1 回答 1

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()
于 2013-12-21T15:40:13.697 回答