"""
The plot utils module contains some useful routines related to plotting.
"""
import matplotlib.patches as mpatches
import numpy as np
[docs]
def phase_legend(phases):
"""
Build matplotlib handles for the plot legend.
Parameters
----------
phases : list
Names of the phases.
Returns
-------
A tuple containing:
(1) A list of matplotlib handle objects
(2) A dict mapping phase names to their RGB color on the plot
Examples
--------
>>> legend_handles, colors = phase_legend(['FCC_A1', 'BCC_A2', 'LIQUID'])
"""
colorlist = {}
# colors from HU1SUN, August 5 2018, ordered by igorjrd, issue #97
# exclude green and red because of their special meaning on the diagram
colorvalues = [
'00538A', 'F4C800', 'F13A13', 'C10020', 'D2F300', '53377A', '7BD1EC',
'232C16', 'FE4262', 'C0DE00', '704AA4', 'FFB300', '176136', '7F180D',
'93AA00', '2B85EB', 'F6768E', '007D34', '803E75', '4A7C01', 'FF8E00',
'EC1840', '178D39', 'B32851', '577C23', 'A6BDD7', 'FD522B', '526B2E',
'90324E', '593315', 'B6A0D4', 'FF6800', 'CEA262', '9A7CC4', '91250B',
'7B3D0B', 'FF7A5C', 'C01F3D', 'D39336', '817066', '96541F', 'EB9867',
'B15106', 'EE8548', '97691C', 'DF6B10', '987155', 'C76F32', 'B37347',
]
mxx = len(colorvalues)
phasecount = 0
legend_handles = []
for phase in phases:
phase = phase.upper()
colorlist[phase] = "#"+colorvalues[np.mod(phasecount, mxx)]
legend_handles.append(mpatches.Patch(color=colorlist[phase], label=phase))
phasecount = phasecount + 1
return legend_handles, colorlist