|
12 | 12 | matplotlib.use('GTK3Cairo')
|
13 | 13 | matplotlib.rcParams['toolbar'] = 'toolmanager'
|
14 | 14 | import matplotlib.pyplot as plt
|
15 |
| -from matplotlib.backend_tools import (ToolBase, ToolToggleBase, |
16 |
| - add_tools_to_container) |
| 15 | +from matplotlib.backend_tools import ToolBase, ToolToggleBase |
17 | 16 | from gi.repository import Gtk, Gdk
|
18 |
| -from random import uniform |
19 | 17 |
|
20 | 18 |
|
21 | 19 | class ListTools(ToolBase):
|
@@ -62,73 +60,33 @@ def disable(self, *args):
|
62 | 60 | self.set_lines_visibility(True)
|
63 | 61 |
|
64 | 62 | def set_lines_visibility(self, state):
|
| 63 | + gr_lines = [] |
65 | 64 | for ax in self.figure.get_axes():
|
66 | 65 | for line in ax.get_lines():
|
67 | 66 | if line.get_gid() == self.gid:
|
68 | 67 | line.set_visible(state)
|
69 | 68 | self.figure.canvas.draw()
|
70 | 69 |
|
71 | 70 |
|
72 |
| -class LineTool(ToolBase): |
73 |
| - description = 'Draw a random line' |
74 |
| - |
75 |
| - def __init__(self, *args, **kwargs): |
76 |
| - self.color = kwargs.pop('color') |
77 |
| - ToolBase.__init__(self, *args, **kwargs) |
78 |
| - |
79 |
| - def trigger(self, *args, **kwargs): |
80 |
| - x0, y0, x1, y1 = (uniform(0, 2), uniform(1, 4), uniform(0, 2), |
81 |
| - uniform(1, 4)) |
82 |
| - fig = self.figure |
83 |
| - fig.gca().plot([x0, x1], [y0, y1], color=self.color, gid=self.color) |
84 |
| - fig.canvas.draw_idle() |
85 |
| - |
86 |
| - |
87 |
| -class DotTool(ToolBase): |
88 |
| - description = 'Draw a random dot' |
89 |
| - |
90 |
| - def __init__(self, *args, **kwargs): |
91 |
| - self.color = kwargs.pop('color') |
92 |
| - ToolBase.__init__(self, *args, **kwargs) |
93 |
| - |
94 |
| - def trigger(self, *args, **kwargs): |
95 |
| - x0, y0 = uniform(0, 2), uniform(1, 4) |
96 |
| - fig = self.figure |
97 |
| - fig.gca().plot([x0], [y0], 'o', color=self.color, gid=self.color) |
98 |
| - fig.canvas.draw_idle() |
99 |
| - |
100 |
| - |
101 | 71 | fig = plt.figure()
|
102 | 72 | plt.plot([1, 2, 3], gid='mygroup')
|
103 | 73 | plt.plot([2, 3, 4], gid='unknown')
|
104 | 74 | plt.plot([3, 2, 1], gid='mygroup')
|
105 | 75 |
|
106 | 76 | # Add the custom tools that we created
|
107 |
| -manager = fig.canvas.manager |
108 |
| -tool_mgr = manager.toolmanager |
109 |
| -tool_mgr.add_tool('List', ListTools) |
110 |
| -tool_mgr.add_tool('Hide', GroupHideTool, gid='mygroup') |
| 77 | +fig.canvas.manager.toolmanager.add_tool('List', ListTools) |
| 78 | +fig.canvas.manager.toolmanager.add_tool('Hide', GroupHideTool, gid='mygroup') |
111 | 79 |
|
112 | 80 |
|
113 | 81 | # Add an existing tool to new group `foo`.
|
114 | 82 | # It can be added as many times as we want
|
115 |
| -manager.toolbar.add_tool('zoom', 'foo') |
| 83 | +fig.canvas.manager.toolbar.add_tool('zoom', 'foo') |
116 | 84 |
|
117 | 85 | # Remove the forward button
|
118 |
| -tool_mgr.remove_tool('forward') |
| 86 | +fig.canvas.manager.toolmanager.remove_tool('forward') |
119 | 87 |
|
120 | 88 | # To add a custom tool to the toolbar at specific location inside
|
121 | 89 | # the navigation group
|
122 |
| -manager.toolbar.add_tool('Hide', 'navigation', 1) |
123 |
| - |
124 |
| -for i, c in enumerate(['yellowgreen', 'forestgreen']): |
125 |
| - sidebar = manager.backend.Toolbar(tool_mgr) |
126 |
| - sidebar.set_flow('vertical') |
127 |
| - tools = [['shapes', [tool_mgr.add_tool('L%s' % i, LineTool, color=c), |
128 |
| - tool_mgr.add_tool('D%s' % i, DotTool, color=c)]], |
129 |
| - ['hide', [tool_mgr.add_tool('H%s' % i, GroupHideTool, gid=c)]]] |
130 |
| - |
131 |
| - manager.window.add_element(sidebar, False, 'west') |
132 |
| - add_tools_to_container(sidebar, tools) |
| 90 | +fig.canvas.manager.toolbar.add_tool('Hide', 'navigation', 1) |
133 | 91 |
|
134 | 92 | plt.show()
|
0 commit comments