Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 1c881a3

Browse filesBrowse files
authored
Merge pull request #30065 from matthewfeickert/enh/add-petroff6-and-petroff8
ENH: Add Petroff 6 and 8 color cycle style sheets
2 parents 0007628 + b89e4ce commit 1c881a3
Copy full SHA for 1c881a3

File tree

6 files changed

+58
-1
lines changed
Filter options

6 files changed

+58
-1
lines changed
+21Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
Six and eight color Petroff color cycles
2+
----------------------------------------
3+
4+
The six and eight color accessible Petroff color cycles are named 'petroff6' and
5+
'petroff8'.
6+
They compliment the existing 'petroff10' color cycle, added in `Matplotlib 3.10.0`_
7+
8+
For more details see
9+
`Petroff, M. A.: "Accessible Color Sequences for Data Visualization"
10+
<https://arxiv.org/abs/2107.02270>`_.
11+
To load the 'petroff6' color cycle in place of the default::
12+
13+
import matplotlib.pyplot as plt
14+
plt.style.use('petroff6')
15+
16+
or to load the 'petroff8' color cycle::
17+
18+
import matplotlib.pyplot as plt
19+
plt.style.use('petroff8')
20+
21+
.. _Matplotlib 3.10.0: https://matplotlib.org/stable/users/prev_whats_new/whats_new_3.10.0.html#new-more-accessible-color-cycle

‎lib/matplotlib/_cm.py

Copy file name to clipboardExpand all lines: lib/matplotlib/_cm.py
+23Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,6 +1365,29 @@ def _gist_yarg(x): return 1 - x
13651365
(0.8509803921568627, 0.8509803921568627, 0.8509803921568627 ), # d9d9d9
13661366
)
13671367

1368+
# Colorblind accessible palettes from
1369+
# Matthew A. Petroff, Accessible Color Sequences for Data Visualization
1370+
# https://arxiv.org/abs/2107.02270
1371+
1372+
_petroff6_data = (
1373+
(0.3411764705882353, 0.5647058823529412, 0.9882352941176471), # 5790fc
1374+
(0.9725490196078431, 0.611764705882353, 0.12549019607843137), # f89c20
1375+
(0.8941176470588236, 0.1450980392156863, 0.21176470588235294), # e42536
1376+
(0.5882352941176471, 0.2901960784313726, 0.5450980392156862), # 964a8b
1377+
(0.611764705882353, 0.611764705882353, 0.6313725490196078), # 9c9ca1
1378+
(0.47843137254901963, 0.12941176470588237, 0.8666666666666667), # 7a21dd
1379+
)
1380+
1381+
_petroff8_data = (
1382+
(0.09411764705882353, 0.27058823529411763, 0.984313725490196), # 1845fb
1383+
(1.0, 0.3686274509803922, 0.00784313725490196), # ff5e02
1384+
(0.788235294117647, 0.12156862745098039, 0.08627450980392157), # c91f16
1385+
(0.7843137254901961, 0.28627450980392155, 0.6627450980392157), # c849a9
1386+
(0.6784313725490196, 0.6784313725490196, 0.49019607843137253), # adad7d
1387+
(0.5254901960784314, 0.7843137254901961, 0.8666666666666667), # 86c8dd
1388+
(0.3411764705882353, 0.5529411764705883, 1.0), # 578dff
1389+
(0.396078431372549, 0.38823529411764707, 0.39215686274509803), # 656364
1390+
)
13681391

13691392
_petroff10_data = (
13701393
(0.24705882352941178, 0.5647058823529412, 0.8549019607843137), # 3f90da

‎lib/matplotlib/colors.py

Copy file name to clipboardExpand all lines: lib/matplotlib/colors.py
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ class ColorSequenceRegistry(Mapping):
131131
'Set1': _cm._Set1_data,
132132
'Set2': _cm._Set2_data,
133133
'Set3': _cm._Set3_data,
134+
'petroff6': _cm._petroff6_data,
135+
'petroff8': _cm._petroff8_data,
134136
'petroff10': _cm._petroff10_data,
135137
}
136138

+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Color cycle survey palette from Petroff (2021):
2+
# https://arxiv.org/abs/2107.02270
3+
# https://github.com/mpetroff/accessible-color-cycles
4+
axes.prop_cycle: cycler('color', ['5790fc', 'f89c20', 'e42536', '964a8b', '9c9ca1', '7a21dd'])
5+
patch.facecolor: 5790fc
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Color cycle survey palette from Petroff (2021):
2+
# https://arxiv.org/abs/2107.02270
3+
# https://github.com/mpetroff/accessible-color-cycles
4+
axes.prop_cycle: cycler('color', ['1845fb', 'ff5e02', 'c91f16', 'c849a9', 'adad7d', '86c8dd', '578dff', '656364'])
5+
patch.facecolor: 1845fb

‎lib/matplotlib/tests/test_colors.py

Copy file name to clipboardExpand all lines: lib/matplotlib/tests/test_colors.py
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1704,7 +1704,8 @@ def test_color_sequences():
17041704
assert plt.color_sequences is matplotlib.color_sequences # same registry
17051705
assert list(plt.color_sequences) == [
17061706
'tab10', 'tab20', 'tab20b', 'tab20c', 'Pastel1', 'Pastel2', 'Paired',
1707-
'Accent', 'Dark2', 'Set1', 'Set2', 'Set3', 'petroff10']
1707+
'Accent', 'Dark2', 'Set1', 'Set2', 'Set3', 'petroff6', 'petroff8',
1708+
'petroff10']
17081709
assert len(plt.color_sequences['tab10']) == 10
17091710
assert len(plt.color_sequences['tab20']) == 20
17101711

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.