|
1 | 1 | """ |
2 | 2 | ***************** |
3 | | -Specifying Colors |
| 3 | +Specifying colors |
4 | 4 | ***************** |
5 | 5 |
|
| 6 | +Color formats |
| 7 | +============= |
| 8 | +
|
6 | 9 | Matplotlib recognizes the following formats to specify a color. |
7 | 10 |
|
8 | 11 | +--------------------------------------+--------------------------------------+ |
|
74 | 77 | "Red", "Green", and "Blue" are the intensities of those colors. In combination, |
75 | 78 | they represent the colorspace. |
76 | 79 |
|
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. |
83 | | -
|
84 | | -The two Artists combine with alpha compositing. Matplotlib uses the equation |
85 | | -below to compute the result of blending a new Artist. |
| 80 | +Transparency |
| 81 | +============ |
86 | 82 |
|
87 | | -:: |
| 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 (see also :doc:`/gallery/misc/zorder_demo` |
| 86 | +to learn more about the drawing order). |
88 | 87 |
|
89 | | - RGB_{new} = RGB_{below} * (1 - \\alpha) + RGB_{artist} * \\alpha |
| 88 | +The *alpha* value determines the resulting color by blending the |
| 89 | +foreground color with the background color according to the formula |
90 | 90 |
|
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. |
| 91 | +.. math:: |
95 | 92 |
|
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 | | -+---------------+-------------------------------------------------------------+ |
| 93 | + RGB_{result} = RGB_{background} * (1 - \\alpha) + RGB_{foreground} * \\alpha |
103 | 94 |
|
104 | | -.. note:: |
| 95 | +The following plot shows a semi-transparent (*alpha*=0.8) orange rectangle. |
| 96 | +The sequences of blue squares illustrate how different *alpha* values interact |
| 97 | +with the orange rectangle. The top row of blue squares is drawn below and the |
| 98 | +bottom row of blue squares is drawn on top of the orange rectangle. |
| 99 | +""" |
105 | 100 |
|
106 | | - Changing the order of Artists will generally change the resulting figure. |
| 101 | +import matplotlib.pyplot as plt |
| 102 | +from matplotlib.patches import Rectangle |
| 103 | +import numpy as np |
107 | 104 |
|
| 105 | +fig, ax = plt.subplots(figsize=(6.5, 1.65), layout='constrained') |
| 106 | +ax.add_patch(Rectangle((-0.2, -0.35), 11.2, 0.7, color='C1', alpha=0.8)) |
| 107 | +for i, alpha in enumerate(np.linspace(0, 1, 11)): |
| 108 | + ax.add_patch(Rectangle((i, 0.05), 0.8, 0.6, alpha=alpha, zorder=0)) |
| 109 | + ax.text(i+0.4, 0.85, f"{alpha:.1f}", ha='center') |
| 110 | + ax.add_patch(Rectangle((i, -0.05), 0.8, -0.6, alpha=alpha, zorder=2)) |
| 111 | +ax.set_xlim(-0.2, 13) |
| 112 | +ax.set_ylim(-1, 1) |
| 113 | +ax.set_title('alpha values') |
| 114 | +ax.text(11.3, 0.6, 'zorder=1', va='center', color='C0') |
| 115 | +ax.text(11.3, 0, 'zorder=2\nalpha=0.8', va='center', color='C1') |
| 116 | +ax.text(11.3, -0.6, 'zorder=3', va='center', color='C0') |
| 117 | +ax.axis('off') |
108 | 118 |
|
109 | | -"CN" color selection |
110 | | --------------------- |
111 | 119 |
|
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 | | -""" |
| 120 | +############################################################################### |
| 121 | +# "CN" color selection |
| 122 | +# ==================== |
| 123 | +# |
| 124 | +# Matplotlib converts "CN" colors to RGBA when drawing Artists. The |
| 125 | +# :doc:`/tutorials/intermediate/color_cycle` section contains additional |
| 126 | +# information about controlling colors and style properties. |
116 | 127 |
|
117 | 128 |
|
118 | 129 | import numpy as np |
@@ -144,7 +155,7 @@ def demo(sty): |
144 | 155 | # .. _xkcd-colors: |
145 | 156 | # |
146 | 157 | # Comparison between X11/CSS4 and xkcd colors |
147 | | -# ------------------------------------------- |
| 158 | +# =========================================== |
148 | 159 | # |
149 | 160 | # The xkcd colors come from a `user survey conducted by the webcomic xkcd |
150 | 161 | # <https://blog.xkcd.com/2010/05/03/color-survey-results/>`__. |
|
0 commit comments