FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
matplotlib/lib/matplotlib/_pylab_helpers.py at main · spha-code/matplotlib · GitHub
spha-code
matplotlib
Repository navigation
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
matplotlib
/
lib
/
matplotlib
/
_pylab_helpers.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
134 lines (112 loc) · 4.22 KB
Breadcrumbs
matplotlib
/
lib
/
matplotlib
/
_pylab_helpers.py
Copy path
File metadata and controls
134 lines (112 loc) · 4.22 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
"""
Manage figures for the pyplot interface.
"""
import
atexit
from
collections
import
OrderedDict
class
Gcf
:
"""
Singleton to maintain the relation between figures and their managers, and
keep track of and "active" figure and manager.
The canvas of a figure created through pyplot is associated with a figure
manager, which handles the interaction between the figure and the backend.
pyplot keeps track of figure managers using an identifier, the "figure
number" or "manager number" (which can actually be any hashable value);
this number is available as the :attr:`number` attribute of the manager.
This class is never instantiated; it consists of an `OrderedDict` mapping
figure/manager numbers to managers, and a set of class methods that
manipulate this `OrderedDict`.
Attributes
----------
figs : OrderedDict
`OrderedDict` mapping numbers to managers; the active manager is at the
end.
"""
figs
=
OrderedDict
()
@
classmethod
def
get_fig_manager
(
cls
,
num
):
"""
If manager number *num* exists, make it the active one and return it;
otherwise return *None*.
"""
manager
=
cls
.
figs
.
get
(
num
,
None
)
if
manager
is
not
None
:
cls
.
set_active
(
manager
)
return
manager
@
classmethod
def
destroy
(
cls
,
num
):
"""
Destroy manager *num* -- either a manager instance or a manager number.
In the interactive backends, this is bound to the window "destroy" and
"delete" events.
It is recommended to pass a manager instance, to avoid confusion when
two managers share the same number.
"""
if
all
(
hasattr
(
num
,
attr
)
for
attr
in
[
"num"
,
"destroy"
]):
manager
=
num
if
cls
.
figs
.
get
(
manager
.
num
)
is
manager
:
cls
.
figs
.
pop
(
manager
.
num
)
else
:
try
:
manager
=
cls
.
figs
.
pop
(
num
)
except
KeyError
:
return
if
hasattr
(
manager
,
"_cidgcf"
):
manager
.
canvas
.
mpl_disconnect
(
manager
.
_cidgcf
)
manager
.
destroy
()
@
classmethod
def
destroy_fig
(
cls
,
fig
):
"""Destroy figure *fig*."""
manager
=
next
((
manager
for
manager
in
cls
.
figs
.
values
()
if
manager
.
canvas
.
figure
==
fig
),
None
)
if
manager
is
not
None
:
cls
.
destroy
(
manager
)
@
classmethod
def
destroy_all
(
cls
):
"""Destroy all figures."""
for
manager
in
list
(
cls
.
figs
.
values
()):
manager
.
canvas
.
mpl_disconnect
(
manager
.
_cidgcf
)
manager
.
destroy
()
cls
.
figs
.
clear
()
@
classmethod
def
has_fignum
(
cls
,
num
):
"""Return whether figure number *num* exists."""
return
num
in
cls
.
figs
@
classmethod
def
get_all_fig_managers
(
cls
):
"""Return a list of figure managers."""
return
list
(
cls
.
figs
.
values
())
@
classmethod
def
get_num_fig_managers
(
cls
):
"""Return the number of figures being managed."""
return
len
(
cls
.
figs
)
@
classmethod
def
get_active
(
cls
):
"""Return the active manager, or *None* if there is no manager."""
return
next
(
reversed
(
cls
.
figs
.
values
()))
if
cls
.
figs
else
None
@
classmethod
def
_set_new_active_manager
(
cls
,
manager
):
"""Adopt *manager* into pyplot and make it the active manager."""
if
not
hasattr
(
manager
,
"_cidgcf"
):
manager
.
_cidgcf
=
manager
.
canvas
.
mpl_connect
(
"button_press_event"
,
lambda
event
:
cls
.
set_active
(
manager
))
fig
=
manager
.
canvas
.
figure
fig
.
_number
=
manager
.
num
label
=
fig
.
get_label
()
if
label
:
manager
.
set_window_title
(
label
)
cls
.
set_active
(
manager
)
@
classmethod
def
set_active
(
cls
,
manager
):
"""Make *manager* the active manager."""
cls
.
figs
[
manager
.
num
]
=
manager
cls
.
figs
.
move_to_end
(
manager
.
num
)
@
classmethod
def
draw_all
(
cls
,
force
=
False
):
"""
Redraw all stale managed figures, or, if *force* is True, all managed
figures.
"""
for
manager
in
cls
.
get_all_fig_managers
():
if
force
or
manager
.
canvas
.
figure
.
stale
:
manager
.
canvas
.
draw_idle
()
atexit
.
register
(
Gcf
.
destroy_all
)
Back
|
FazBrowse Home
|
New Git URL