3
Draws a line plot with several points labelled. Demonstrates how to annotate
6
Left-drag pans the plot.
8
Mousewheel up and down zooms the plot in and out.
10
Pressing "z" brings up the Zoom Box, and you can click-drag a rectangular region to
11
zoom. If you use a sequence of zoom boxes, pressing alt-left-arrow and
12
alt-right-arrow moves you forwards and backwards through the "zoom history".
15
# Major library imports
16
from numpy import arange
17
from scipy.special import jn
19
# Enthought library imports
20
from enable.api import Component, ComponentEditor
21
from traits.api import Float, HasTraits, Instance, Int
22
from traitsui.api import Item, View
25
from chaco.api import create_line_plot, add_default_axes, add_default_grids, \
26
OverlayPlotContainer, DataLabel
27
from chaco.example_support import COLOR_PALETTE
28
from chaco.tools.api import PanTool, ZoomTool, DataLabelTool
31
class PlotExample(HasTraits):
32
plot = Instance(Component)
37
traits_view = View(Item('plot', editor=ComponentEditor(),
39
width=800, height=700, resizable=True,
40
title="Data label example")
42
def _plot_default(self):
44
container = OverlayPlotContainer(padding = 50, fill_padding = True,
45
bgcolor = "lightgray", use_backbuffer=True)
47
# Create the initial X-series of data
48
numpoints = self.numpoints
51
x = arange(low, high+0.001, (high-low)/numpoints)
53
plot = create_line_plot((x,y), color=tuple(COLOR_PALETTE[0]), width=2.0)
54
plot.index.sort_order = "ascending"
55
plot.bgcolor = "white"
56
plot.border_visible = True
57
add_default_grids(plot)
58
add_default_axes(plot)
61
plot.tools.append(PanTool(plot))
62
zoom = ZoomTool(plot, tool_mode="box", always_on=False)
63
plot.overlays.append(zoom)
65
# Add a dynamic label. This can be dragged and moved around using the
66
# right mouse button. Note the use of padding to offset the label
67
# from its data point.
68
label = DataLabel(component=plot, data_point=(x[40], y[40]),
69
label_position="top left", padding=40,
70
bgcolor = "lightgray",
72
plot.overlays.append(label)
73
tool = DataLabelTool(label, drag_button="right", auto_arrow_root=True)
74
label.tools.append(tool)
76
# Add some static labels.
77
label2 = DataLabel(component=plot, data_point=(x[20], y[20]),
78
label_position="bottom right",
80
bgcolor="transparent",
82
marker_line_color="transparent",
85
plot.overlays.append(label2)
87
label3 = DataLabel(component=plot, data_point=(x[80], y[80]),
88
label_position="top", padding_bottom=20,
89
marker_color="transparent",
93
plot.overlays.append(label3)
100
if __name__ == "__main__":
101
demo.configure_traits()