Skip to content

Commit 44a268e

Browse files
authored
Merge pull request #24468 from meeseeksmachine/auto-backport-of-pr-24429-on-v3.6.x
Backport PR #24429 on branch v3.6.x (DOC: Clarify transparency in colors)
2 parents 5c446fb + e13823f commit 44a268e

File tree

1 file changed

+47
-32
lines changed

1 file changed

+47
-32
lines changed

tutorials/colors/colors.py

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
"""
22
*****************
3-
Specifying Colors
3+
Specifying colors
44
*****************
55
6+
Color formats
7+
=============
8+
69
Matplotlib recognizes the following formats to specify a color.
710
811
+--------------------------------------+--------------------------------------+
@@ -74,45 +77,57 @@
7477
"Red", "Green", and "Blue" are the intensities of those colors. In combination,
7578
they represent the colorspace.
7679
77-
Matplotlib draws Artists based on the ``zorder`` parameter. If there are no
78-
specified values, Matplotlib defaults to the order of the Artists added to the
79-
Axes.
80-
81-
The alpha for an Artist controls opacity. It indicates how the RGB color of the
82-
new Artist combines with RGB colors already on the Axes.
80+
Transparency
81+
============
8382
84-
The two Artists combine with alpha compositing. Matplotlib uses the equation
85-
below to compute the result of blending a new Artist.
83+
The *alpha* value of a color specifies its transparency, where 0 is fully
84+
transparent and 1 is fully opaque. When a color is semi-transparent, the
85+
background color will show through.
8686
87-
::
87+
The *alpha* value determines the resulting color by blending the
88+
foreground color with the background color according to the formula
8889
89-
RGB_{new} = RGB_{below} * (1 - \\alpha) + RGB_{artist} * \\alpha
90+
.. math::
9091
91-
Alpha of 1 indicates the new Artist completely covers the previous color.
92-
Alpha of 0 for top color is not visible; however, it contributes to blending
93-
for intermediate values as the cumulative result of all previous Artists. The
94-
following table contains examples.
92+
RGB_{result} = RGB_{background} * (1 - \\alpha) + RGB_{foreground} * \\alpha
9593
96-
+---------------+-------------------------------------------------------------+
97-
| Alpha value | Visual |
98-
+===============+=============================================================+
99-
| ``0.3`` | .. image:: ../../_static/color_zorder_A.png |
100-
+---------------+-------------------------------------------------------------+
101-
| ``1`` | .. image:: ../../_static/color_zorder_B.png |
102-
+---------------+-------------------------------------------------------------+
103-
104-
.. note::
94+
The following plot illustrates the effect of transparency.
95+
"""
10596

106-
Changing the order of Artists will generally change the resulting figure.
97+
import matplotlib.pyplot as plt
98+
from matplotlib.patches import Rectangle
99+
import numpy as np
107100

101+
fig, ax = plt.subplots(figsize=(6.5, 1.65), layout='constrained')
102+
ax.add_patch(Rectangle((-0.2, -0.35), 11.2, 0.7, color='C1', alpha=0.8))
103+
for i, alpha in enumerate(np.linspace(0, 1, 11)):
104+
ax.add_patch(Rectangle((i, 0.05), 0.8, 0.6, alpha=alpha, zorder=0))
105+
ax.text(i+0.4, 0.85, f"{alpha:.1f}", ha='center')
106+
ax.add_patch(Rectangle((i, -0.05), 0.8, -0.6, alpha=alpha, zorder=2))
107+
ax.set_xlim(-0.2, 13)
108+
ax.set_ylim(-1, 1)
109+
ax.set_title('alpha values')
110+
ax.text(11.3, 0.6, 'zorder=1', va='center', color='C0')
111+
ax.text(11.3, 0, 'zorder=2\nalpha=0.8', va='center', color='C1')
112+
ax.text(11.3, -0.6, 'zorder=3', va='center', color='C0')
113+
ax.axis('off')
108114

109-
"CN" color selection
110-
--------------------
111115

112-
Matplotlib converts "CN" colors to RGBA when drawing Artists. The
113-
:doc:`/tutorials/intermediate/color_cycle` section contains additional
114-
information about controlling colors and style properties.
115-
"""
116+
###############################################################################
117+
#
118+
# The orange rectangle is semi-transparent with *alpha* = 0.8. The top row of
119+
# blue squares is drawn below and the bottom row of blue squares is drawn on
120+
# top of the orange rectangle.
121+
#
122+
# See also :doc:`/gallery/misc/zorder_demo` to learn more on the drawing order.
123+
#
124+
#
125+
# "CN" color selection
126+
# ====================
127+
#
128+
# Matplotlib converts "CN" colors to RGBA when drawing Artists. The
129+
# :doc:`/tutorials/intermediate/color_cycle` section contains additional
130+
# information about controlling colors and style properties.
116131

117132

118133
import numpy as np
@@ -144,7 +159,7 @@ def demo(sty):
144159
# .. _xkcd-colors:
145160
#
146161
# Comparison between X11/CSS4 and xkcd colors
147-
# -------------------------------------------
162+
# ===========================================
148163
#
149164
# The xkcd colors come from a `user survey conducted by the webcomic xkcd
150165
# <https://blog.xkcd.com/2010/05/03/color-survey-results/>`__.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy