~ubuntu-branches/ubuntu/utopic/python-chaco/utopic

« back to all changes in this revision

Viewing changes to examples/demo/data_labels.py

  • Committer: Package Import Robot
  • Author(s): Andrew Starr-Bochicchio
  • Date: 2014-06-01 17:04:08 UTC
  • mfrom: (7.2.5 sid)
  • Revision ID: package-import@ubuntu.com-20140601170408-m86xvdjd83a4qon0
Tags: 4.4.1-1ubuntu1
* Merge from Debian unstable. Remaining Ubuntu changes:
 - Let the binary-predeb target work on the usr/lib/python* directory
   as we don't have usr/share/pyshared anymore.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
2
 
"""
3
 
Draws a line plot with several points labelled.  Demonstrates how to annotate
4
 
plots.
5
 
 
6
 
Left-drag pans the plot.
7
 
 
8
 
Mousewheel up and down zooms the plot in and out.
9
 
 
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".
13
 
"""
14
 
 
15
 
# Major library imports
16
 
from numpy import arange
17
 
from scipy.special import jn
18
 
 
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
23
 
 
24
 
# Chaco imports
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
29
 
 
30
 
 
31
 
class PlotExample(HasTraits):
32
 
    plot = Instance(Component)
33
 
    numpoints = Int(100)
34
 
    low = Float(-5.0)
35
 
    high = Float(15.0)
36
 
 
37
 
    traits_view = View(Item('plot', editor=ComponentEditor(),
38
 
                            show_label=False),
39
 
                       width=800, height=700, resizable=True,
40
 
                       title="Data label example")
41
 
 
42
 
    def _plot_default(self):
43
 
 
44
 
        container = OverlayPlotContainer(padding = 50, fill_padding = True,
45
 
                                         bgcolor = "lightgray", use_backbuffer=True)
46
 
 
47
 
        # Create the initial X-series of data
48
 
        numpoints = self.numpoints
49
 
        low = self.low
50
 
        high = self.high
51
 
        x = arange(low, high+0.001, (high-low)/numpoints)
52
 
        y = jn(0, x)
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)
59
 
 
60
 
        # Add some tools
61
 
        plot.tools.append(PanTool(plot))
62
 
        zoom = ZoomTool(plot, tool_mode="box", always_on=False)
63
 
        plot.overlays.append(zoom)
64
 
 
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",
71
 
                          border_visible=False)
72
 
        plot.overlays.append(label)
73
 
        tool = DataLabelTool(label, drag_button="right", auto_arrow_root=True)
74
 
        label.tools.append(tool)
75
 
 
76
 
        # Add some static labels.
77
 
        label2 = DataLabel(component=plot, data_point=(x[20], y[20]),
78
 
                           label_position="bottom right",
79
 
                           border_visible=False,
80
 
                           bgcolor="transparent",
81
 
                           marker_color="blue",
82
 
                           marker_line_color="transparent",
83
 
                           marker = "diamond",
84
 
                           arrow_visible=False)
85
 
        plot.overlays.append(label2)
86
 
 
87
 
        label3 = DataLabel(component=plot, data_point=(x[80], y[80]),
88
 
                           label_position="top", padding_bottom=20,
89
 
                           marker_color="transparent",
90
 
                           marker_size=8,
91
 
                           marker="circle",
92
 
                           arrow_visible=False)
93
 
        plot.overlays.append(label3)
94
 
        container.add(plot)
95
 
 
96
 
        return container
97
 
 
98
 
demo = PlotExample()
99
 
 
100
 
if __name__ == "__main__":
101
 
    demo.configure_traits()