forked from matplotlib/matplotlib
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathzorder_demo.py
More file actions
71 lines (57 loc) · 2.71 KB
/
Copy pathzorder_demo.py
File metadata and controls
71 lines (57 loc) · 2.71 KB
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
"""
===========
Zorder Demo
===========
The drawing order of artists is determined by their ``zorder`` attribute, which
is a floating point number. Artists with higher ``zorder`` are drawn on top.
You can change the order for individual artists by setting their ``zorder``.
The default value depends on the type of the Artist:
================================================================ =======
Artist Z-order
================================================================ =======
Images (`.AxesImage`, `.FigureImage`, `.BboxImage`) 0
`.Patch`, `.PatchCollection` 1
`.Line2D`, `.LineCollection` (including minor ticks, grid lines) 2
Major ticks 2.01
`.Text` (including axes labels and titles) 3
`.Legend` 5
================================================================ =======
Any call to a plotting method can set a value for the zorder of that particular
item explicitly.
.. note::
`~.axes.Axes.set_axisbelow` and :rc:`axes.axisbelow` can further modify the
zorder of ticks and grid lines.
"""
import matplotlib.pyplot as plt
import numpy as np
r = np.linspace(0.3, 1, 30)
theta = np.linspace(0, 4*np.pi, 30)
x = r * np.sin(theta)
y = r * np.cos(theta)
###############################################################################
# The following example contains a `.Line2D` created by `~.axes.Axes.plot()`
# and the dots (a `.PatchCollection`) created by `~.axes.Axes.scatter()`.
# Hence, by default the dots are below the line (first subplot).
# In the second subplot, the ``zorder`` is set explicitly to move the dots
# on top of the line.
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(6, 3.2))
ax1.plot(x, y, 'C3', lw=3)
ax1.scatter(x, y, s=120)
ax1.set_title('Lines on top of dots')
ax2.plot(x, y, 'C3', lw=3)
ax2.scatter(x, y, s=120, zorder=2.5) # move dots on top of line
ax2.set_title('Dots on top of lines')
plt.tight_layout()
###############################################################################
# Many functions that create a visible object accepts a ``zorder`` parameter.
# Alternatively, you can call ``set_order()`` on the created object later.
x = np.linspace(0, 7.5, 100)
plt.rcParams['lines.linewidth'] = 5
plt.figure()
plt.plot(x, np.sin(x), label='zorder=2', zorder=2) # bottom
plt.plot(x, np.sin(x+0.5), label='zorder=3', zorder=3)
plt.axhline(0, label='zorder=2.5', color='lightgrey', zorder=2.5)
plt.title('Custom order of elements')
l = plt.legend(loc='upper right')
l.set_zorder(2.5) # legend between blue and orange line
plt.show()