Matplotlib.colors.to_rgba() in Python (original) (raw)
import
matplotlib.pyplot as plt
import
matplotlib.colors as mcolors
def
colortable(colors, title,
`` colors_sort
=
True
,
`` emptycols
=
0
):
`` width
=
212
`` height
=
22
`` swatch_width
=
48
`` margin
=
12
`` topmargin
=
40
`` if
colors_sort
is
True
:
`` to_hsv
=
sorted
((
tuple
(mcolors.rgb_to_hsv(mcolors.to_rgba(color)[:
3
])),
`` name)
`` for
name, color
in
colors.items())
`` names
=
[name
for
hsv, name
in
to_hsv]
`` else
:
`` names
=
list
(colors)
`` length_of_names
=
len
(names)
`` length_cols
=
4
-
emptycols
`` length_rows
=
length_of_names
/
/
length_cols
+
int
(length_of_names
%
length_cols >
0
)
`` width2
=
width
*
4
+
2
*
margin
`` height2
=
height
*
length_rows
+
margin
+
topmargin
`` dpi
=
72
`` figure, axes
=
plt.subplots(figsize
=
(width2
/
dpi, height2
/
dpi), dpi
=
dpi)
`` figure.subplots_adjust(margin
/
width2, margin
/
height2,
`` (width2
-
margin)
/
width2,
`` (height2
-
topmargin)
/
height2)
`` axes.set_xlim(
0
, width
*
4
)
`` axes.set_ylim(height
*
(length_rows
-
0.5
),
-
height
/
2.
)
`` axes.yaxis.set_visible(
False
)
`` axes.xaxis.set_visible(
False
)
`` axes.set_axis_off()
`` axes.set_title(title, fontsize
=
24
, loc
=
"left"
, pad
=
10
)
`` for
i, name
in
enumerate
(names):
`` rows
=
i
%
length_rows
`` cols
=
i
/
/
length_rows
`` y
=
rows
*
height
`` swatch_start_x
=
width
*
cols
`` swatch_end_x
=
width
*
cols
+
swatch_width
`` text_pos_x
=
width
*
cols
+
swatch_width
+
7
`` axes.text(text_pos_x, y, name, fontsize
=
14
,
`` horizontalalignment
=
'left'
,
`` verticalalignment
=
'center'
)
`` axes.hlines(y, swatch_start_x, swatch_end_x,
`` color
=
colors[name], linewidth
=
18
)
`` return
figure
colortable(mcolors.BASE_COLORS,
"Base Colors"
,
`` colors_sort
=
False
, emptycols
=
1
)
colortable(mcolors.TABLEAU_COLORS,
"Tableau Palette"
,
`` colors_sort
=
False
, emptycols
=
2
)
colortable(mcolors.CSS4_COLORS,
"CSS Colors"
)
plt.show()