Matplotlib.pyplot.gcf() in Python (original) (raw)
import
matplotlib.pyplot as plt
from
matplotlib.tri
import
Triangulation
from
matplotlib.patches
import
Polygon
import
numpy as np
def
polygon_updater(tr):
`` if
tr
=
=
-
1
:
`` points
=
[
0
,
0
,
0
]
`` else
:
`` points
=
tri.triangles[tr]
`` x_axis
=
tri.x[points]
`` y_axis
=
tri.y[points]
`` polygon.set_xy(np.column_stack([x_axis, y_axis]))
def
motion_handler(e):
`` if
e.inaxes
is
None
:
`` tr
=
-
1
`` else
:
`` tr
=
trifinder(e.xdata, e.ydata)
`` polygon_updater(tr)
`` e.canvas.draw()
all_angles
=
16
all_radii
=
5
minimum_radii
=
0.25
radii
=
np.linspace(minimum_radii,
0.95
, all_radii)
triangulation_angles
=
np.linspace(
0
,
2
*
np.pi,
`` all_angles,
`` endpoint
=
False
)
triangulation_angles
=
np.repeat(triangulation_angles[...,
`` np.newaxis],
`` all_radii, axis
=
1
)
triangulation_angles[:,
1
::
2
]
+
=
np.pi
/
all_angles
a
=
(radii
*
np.cos(triangulation_angles)).flatten()
b
=
(radii
*
np.sin(triangulation_angles)).flatten()
tri
=
Triangulation(a, b)
tri.set_mask(np.hypot(a[tri.triangles].mean(axis
=
1
),
`` b[tri.triangles].mean(axis
=
1
))
`` < minimum_radii)
trifinder
=
tri.get_trifinder()
plt.subplot(
111
, aspect
=
'equal'
)
plt.triplot(tri,
'g-'
)
polygon
=
Polygon([[
0
,
0
], [
0
,
0
]],
`` facecolor
=
'b'
)
polygon_updater(
-
1
)
plt.gca().add_patch(polygon)
plt.gcf().canvas.mpl_connect(
'motion_notification'
,
`` motion_handler)
plt.show()