A library for working with phylogenetic and population genetic data.
v0.32.0
list_sequential.cpp
Go to the documentation of this file.
1 /*
2  Genesis - A toolkit for working with phylogenetic data.
3  Copyright (C) 2014-2023 Lucas Czech
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 
18  Contact:
19  Lucas Czech <lczech@carnegiescience.edu>
20  Department of Plant Biology, Carnegie Institution For Science
21  260 Panama Street, Stanford, CA 94305, USA
22 */
23 
32 
35 
36 #include <cassert>
37 #include <map>
38 #include <stdexcept>
39 
40 namespace genesis {
41 namespace utils {
42 
43 // =================================================================================================
44 // Custom Sequential Color Lists
45 // =================================================================================================
46 
50 const std::vector<Color> color_list_bupubk_ = {{
51  { 0.505882353, 0.749019608, 1.0 }, // light blue #81bfff
52  { 0.752941176, 0.250980392, 0.745098039 }, // purple #c040be
53  { 0.0, 0.0, 0.0 } // black #000000
54 }};
55 
56 // =================================================================================================
57 // ColorBrewer Sequential Color Lists
58 // =================================================================================================
59 
60 /*
61  * These ColorBrewer color palettes are adapted from https://github.com/axismaps/colorbrewer and
62  * https://github.com/Gnuplotting/gnuplot-palettes by converting the colors to RGB `double` values.
63  * The original ColorBrewer color specifications and designs were developed by Cynthia Brewer
64  * (http://colorbrewer.org/), while their gnuplot equivalets are authored by Anna Schneider,
65  * and published under the [Apache-2.0 license](http://www.apache.org/licenses/LICENSE-2.0).
66  * See also our @link supplement_acknowledgements_code_reuse_colorbrewer Acknowledgements@endlink.
67  */
68 
69 const std::vector<Color> color_list_blues_ = {{
70  { 0.968627, 0.984314, 1.000000 }, // very light blue
71  { 0.870588, 0.921569, 0.968627 },
72  { 0.776471, 0.858824, 0.937255 },
73  { 0.619608, 0.792157, 0.882353 }, // light blue
74  { 0.419608, 0.682353, 0.839216 },
75  { 0.258824, 0.572549, 0.776471 }, // medium blue
76  { 0.129412, 0.443137, 0.709804 },
77  { 0.031373, 0.317647, 0.611765 },
78  { 0.031373, 0.188235, 0.419608 } // dark blue
79 }};
80 
81 const std::vector<Color> color_list_bugn_ = {{
82  { 0.968627, 0.988235, 0.992157 }, // very light blue-green
83  { 0.898039, 0.960784, 0.976471 },
84  { 0.800000, 0.925490, 0.901961 },
85  { 0.600000, 0.847059, 0.788235 }, // light blue-green
86  { 0.400000, 0.760784, 0.643137 },
87  { 0.254902, 0.682353, 0.462745 }, // medium blue-green
88  { 0.137255, 0.545098, 0.270588 },
89  { 0.000000, 0.427451, 0.172549 },
90  { 0.000000, 0.266667, 0.105882 } // dark blue-green
91 }};
92 
93 const std::vector<Color> color_list_bupu_ = {{
94  { 0.968627, 0.988235, 0.992157 }, // very light blue-purple
95  { 0.878431, 0.925490, 0.956863 },
96  { 0.749020, 0.827451, 0.901961 },
97  { 0.619608, 0.737255, 0.854902 }, // light blue-purple
98  { 0.549020, 0.588235, 0.776471 },
99  { 0.549020, 0.419608, 0.694118 }, // medium blue-purple
100  { 0.533333, 0.254902, 0.615686 },
101  { 0.505882, 0.058824, 0.486275 },
102  { 0.301961, 0.000000, 0.294118 } // dark blue-purple
103 }};
104 
105 const std::vector<Color> color_list_gnbu_ = {{
106  { 0.968627, 0.988235, 0.941176 }, // very light green-blue
107  { 0.878431, 0.952941, 0.858824 },
108  { 0.800000, 0.921569, 0.772549 },
109  { 0.658824, 0.866667, 0.709804 }, // light green-blue
110  { 0.482353, 0.800000, 0.768627 },
111  { 0.305882, 0.701961, 0.827451 }, // medium green-blue
112  { 0.168627, 0.549020, 0.745098 },
113  { 0.031373, 0.407843, 0.674510 },
114  { 0.031373, 0.250980, 0.505882 } // dark green-blue
115 }};
116 
117 const std::vector<Color> color_list_greens_ = {{
118  { 0.968627, 0.988235, 0.960784 }, // very light green
119  { 0.898039, 0.960784, 0.878431 },
120  { 0.780392, 0.913725, 0.752941 },
121  { 0.631373, 0.850980, 0.607843 }, // light green
122  { 0.454902, 0.768627, 0.462745 },
123  { 0.254902, 0.670588, 0.364706 }, // medium green
124  { 0.137255, 0.545098, 0.270588 },
125  { 0.000000, 0.427451, 0.172549 },
126  { 0.000000, 0.266667, 0.105882 } // dark green
127 }};
128 
129 const std::vector<Color> color_list_greys_ = {{
130  { 1.000000, 1.000000, 1.000000 }, // white
131  { 0.941176, 0.941176, 0.941176 },
132  { 0.850980, 0.850980, 0.850980 },
133  { 0.741176, 0.741176, 0.741176 }, // light grey
134  { 0.588235, 0.588235, 0.588235 },
135  { 0.450980, 0.450980, 0.450980 }, // medium grey
136  { 0.321569, 0.321569, 0.321569 },
137  { 0.145098, 0.145098, 0.145098 },
138  { 0.000000, 0.000000, 0.000000 } // dark grey
139 }};
140 
141 const std::vector<Color> color_list_oranges_ = {{
142  { 1.000000, 0.960784, 0.921569 }, // very light orange
143  { 0.996078, 0.901961, 0.807843 },
144  { 0.992157, 0.815686, 0.635294 },
145  { 0.992157, 0.682353, 0.419608 }, // light orange
146  { 0.992157, 0.552941, 0.235294 },
147  { 0.945098, 0.411765, 0.074510 }, // medium orange
148  { 0.850980, 0.282353, 0.003922 },
149  { 0.650980, 0.211765, 0.011765 },
150  { 0.498039, 0.152941, 0.015686 } // dark orange
151 }};
152 
153 const std::vector<Color> color_list_orrd_ = {{
154  { 1.000000, 0.968627, 0.925490 }, // very light orange-red
155  { 0.996078, 0.909804, 0.784314 },
156  { 0.992157, 0.831373, 0.619608 },
157  { 0.992157, 0.733333, 0.517647 }, // light orange-red
158  { 0.988235, 0.552941, 0.349020 },
159  { 0.937255, 0.396078, 0.282353 }, // medium orange-red
160  { 0.843137, 0.188235, 0.121569 },
161  { 0.701961, 0.000000, 0.000000 },
162  { 0.498039, 0.000000, 0.000000 } // dark orange-red
163 }};
164 
165 const std::vector<Color> color_list_pubu_ = {{
166  { 1.000000, 0.968627, 0.984314 }, // very light purple-blue
167  { 0.925490, 0.905882, 0.949020 },
168  { 0.815686, 0.819608, 0.901961 },
169  { 0.650980, 0.741176, 0.858824 }, // light purple-blue
170  { 0.454902, 0.662745, 0.811765 },
171  { 0.211765, 0.564706, 0.752941 }, // medium purple-blue
172  { 0.019608, 0.439216, 0.690196 },
173  { 0.015686, 0.352941, 0.552941 },
174  { 0.007843, 0.219608, 0.345098 } // dark purple-blue
175 }};
176 
177 const std::vector<Color> color_list_pubugn_ = {{
178  { 1.000000, 0.968627, 0.984314 }, // very light purple-blue-green
179  { 0.925490, 0.886275, 0.941176 },
180  { 0.815686, 0.819608, 0.901961 },
181  { 0.650980, 0.741176, 0.858824 }, // light purple-blue-green
182  { 0.403922, 0.662745, 0.811765 },
183  { 0.211765, 0.564706, 0.752941 }, // medium purple-blue-green
184  { 0.007843, 0.505882, 0.541176 },
185  { 0.003922, 0.423529, 0.349020 },
186  { 0.003922, 0.274510, 0.211765 } // dark purple-blue-green
187 }};
188 
189 const std::vector<Color> color_list_purd_ = {{
190  { 0.968627, 0.956863, 0.976471 }, // very light purple-red
191  { 0.905882, 0.882353, 0.937255 },
192  { 0.831373, 0.725490, 0.854902 },
193  { 0.788235, 0.580392, 0.780392 }, // light purple-red
194  { 0.874510, 0.396078, 0.690196 },
195  { 0.905882, 0.160784, 0.541176 }, // medium purple-red
196  { 0.807843, 0.070588, 0.337255 },
197  { 0.596078, 0.000000, 0.262745 },
198  { 0.403922, 0.000000, 0.121569 } // dark purple-red
199 }};
200 
201 const std::vector<Color> color_list_purples_ = {{
202  { 0.988235, 0.984314, 0.992157 }, // very light purple
203  { 0.937255, 0.929412, 0.960784 },
204  { 0.854902, 0.854902, 0.921569 },
205  { 0.737255, 0.741176, 0.862745 }, // light purple
206  { 0.619608, 0.603922, 0.784314 },
207  { 0.501961, 0.490196, 0.729412 }, // medium purple
208  { 0.415686, 0.317647, 0.639216 },
209  { 0.329412, 0.152941, 0.560784 },
210  { 0.247059, 0.000000, 0.490196 } // dark purple
211 }};
212 
213 const std::vector<Color> color_list_rdpu_ = {{
214  { 1.000000, 0.968627, 0.952941 }, // very light red-purple
215  { 0.992157, 0.878431, 0.866667 },
216  { 0.988235, 0.772549, 0.752941 },
217  { 0.980392, 0.623529, 0.709804 }, // light red-purple
218  { 0.968627, 0.407843, 0.631373 },
219  { 0.866667, 0.203922, 0.592157 }, // medium red-purple
220  { 0.682353, 0.003922, 0.494118 },
221  { 0.478431, 0.003922, 0.466667 },
222  { 0.286275, 0.000000, 0.415686 } // dark red-purple
223 }};
224 
225 const std::vector<Color> color_list_reds_ = {{
226  { 1.000000, 0.960784, 0.941176 }, // very light red
227  { 0.996078, 0.878431, 0.823529 },
228  { 0.988235, 0.733333, 0.631373 },
229  { 0.988235, 0.572549, 0.447059 }, // light red
230  { 0.984314, 0.415686, 0.290196 },
231  { 0.937255, 0.231373, 0.172549 }, // medium red
232  { 0.796078, 0.094118, 0.113725 },
233  { 0.647059, 0.058824, 0.082353 },
234  { 0.403922, 0.000000, 0.050980 } // dark red
235 }};
236 
237 const std::vector<Color> color_list_ylgn_ = {{
238  { 1.000000, 1.000000, 0.898039 }, // very light yellow-green
239  { 0.968627, 0.988235, 0.725490 },
240  { 0.850980, 0.941176, 0.639216 },
241  { 0.678431, 0.866667, 0.556863 }, // light yellow-green
242  { 0.470588, 0.776471, 0.474510 },
243  { 0.254902, 0.670588, 0.364706 }, // medium yellow-green
244  { 0.137255, 0.517647, 0.262745 },
245  { 0.000000, 0.407843, 0.215686 },
246  { 0.000000, 0.270588, 0.160784 } // dark yellow-green
247 }};
248 
249 const std::vector<Color> color_list_ylgnbu_ = {{
250  { 1.000000, 1.000000, 0.850980 }, // very light yellow-green-blue
251  { 0.929412, 0.972549, 0.694118 },
252  { 0.780392, 0.913725, 0.705882 },
253  { 0.498039, 0.803922, 0.733333 }, // light yellow-green-blue
254  { 0.254902, 0.713725, 0.768627 },
255  { 0.113725, 0.568627, 0.752941 }, // medium yellow-green-blue
256  { 0.133333, 0.368627, 0.658824 },
257  { 0.145098, 0.203922, 0.580392 },
258  { 0.031373, 0.113725, 0.345098 } // dark yellow-green-blue
259 }};
260 
261 const std::vector<Color> color_list_ylorbr_ = {{
262  { 1.000000, 1.000000, 0.898039 }, // very light yellow-orange-brown
263  { 1.000000, 0.968627, 0.737255 },
264  { 0.996078, 0.890196, 0.568627 },
265  { 0.996078, 0.768627, 0.309804 }, // light yellow-orange-brown
266  { 0.996078, 0.600000, 0.160784 },
267  { 0.925490, 0.439216, 0.078431 }, // medium yellow-orange-brown
268  { 0.800000, 0.298039, 0.007843 },
269  { 0.600000, 0.203922, 0.015686 },
270  { 0.400000, 0.145098, 0.023529 } // dark yellow-orange-brown
271 }};
272 
273 const std::vector<Color> color_list_ylorrd_ = {{
274  { 1.000000, 1.000000, 0.800000 }, // very light yellow-orange-red
275  { 1.000000, 0.929412, 0.627451 },
276  { 0.996078, 0.850980, 0.462745 }, // light yellow-orange-red
277  { 0.996078, 0.698039, 0.298039 },
278  { 0.992157, 0.552941, 0.235294 },
279  { 0.988235, 0.305882, 0.164706 }, // medium yellow-orange-red
280  { 0.890196, 0.101961, 0.109804 },
281  { 0.694118, 0.000000, 0.149020 }, // dark yellow-orange-red
282 }};
283 
284 // =================================================================================================
285 // R Sequential Color Lists
286 // =================================================================================================
287 
288 /*
289  * We only just started adding R color schemes here.
290  * See https://github.com/EmilHvitfeldt/r-color-palettes for a comprehensive list!
291  */
292 
293 // Inspired by https://github.com/SurajGupta/r-source/blob/master/src/library/grDevices/R/colorstuff.R
294 const std::vector<Color> color_list_heat_ = {{
295  { 1.000000, 1.000000, 1.000000 }, // white
296  { 1.000000, 1.000000, 0.500000 },
297  { 1.000000, 1.000000, 0.000000 }, // pure yellow
298  { 1.000000, 0.800000, 0.000000 },
299  { 1.000000, 0.600000, 0.000000 }, // orange
300  { 1.000000, 0.400000, 0.000000 },
301  { 1.000000, 0.200000, 0.000000 },
302  { 1.000000, 0.000000, 0.000000 } // red
303 }};
304 
305 // =================================================================================================
306 // Matplotlib Sequential Color Lists
307 // =================================================================================================
308 
309 /*
310  * Matplotlib Color Maps from https://github.com/BIDS/colormap
311  *
312  * New matplotlib colormaps by Nathaniel J. Smith, Stefan van der Walt, and (in the case of viridis)
313  * Eric Firing. The colormaps are released under the CC0 license / public domain dedication.
314  * See https://creativecommons.org/publicdomain/zero/1.0/ for the license. See also our
315  * @link supplement_acknowledgements_code_reuse_matplotlib_color_maps Acknowledgements@endlink.
316  */
317 
318 // const std::vector<Color> color_list_magma_ = {{
319 // { 0.000000, 0.000000, 0.015686 }, // black
320 // { 0.109804, 0.062745, 0.266667 }, // dark blue
321 // { 0.309804, 0.070588, 0.482353 }, // dark purple
322 // { 0.505882, 0.145098, 0.505882 }, // purple
323 // { 0.709804, 0.211765, 0.478431 }, // magenta
324 // { 0.898039, 0.349020, 0.392157 }, // light red
325 // { 0.984314, 0.529412, 0.380392 }, // orange
326 // { 0.996078, 0.760784, 0.529412 }, // light orange
327 // { 0.984314, 0.992157, 0.749020 }, // light yellow
328 // }};
329 
330 const std::vector<Color> color_list_magma_ = {{
331  { 9.87052509e-01, 9.91437853e-01, 7.49504188e-01 },
332  { 9.87386827e-01, 9.84287561e-01, 7.42001547e-01 },
333  { 9.87690702e-01, 9.77154231e-01, 7.34536205e-01 },
334  { 9.88032885e-01, 9.70012413e-01, 7.27076773e-01 },
335  { 9.88367028e-01, 9.62878026e-01, 7.19648627e-01 },
336  { 9.88717064e-01, 9.55741520e-01, 7.12242232e-01 },
337  { 9.89077438e-01, 9.48604077e-01, 7.04862519e-01 },
338  { 9.89433736e-01, 9.41470354e-01, 6.97518628e-01 },
339  { 9.89814839e-01, 9.34328540e-01, 6.90198194e-01 },
340  { 9.90174637e-01, 9.27195612e-01, 6.82925602e-01 },
341  { 9.90569914e-01, 9.20048699e-01, 6.75674592e-01 },
342  { 9.90929685e-01, 9.12915010e-01, 6.68481201e-01 },
343  { 9.91331929e-01, 9.05762748e-01, 6.61308839e-01 },
344  { 9.91687744e-01, 8.98627050e-01, 6.54201544e-01 },
345  { 9.92089454e-01, 8.91469549e-01, 6.47116021e-01 },
346  { 9.92439881e-01, 8.84329694e-01, 6.40099465e-01 },
347  { 9.92830963e-01, 8.77168404e-01, 6.33109148e-01 },
348  { 9.93169558e-01, 8.70024467e-01, 6.26189463e-01 },
349  { 9.93545285e-01, 8.62858846e-01, 6.19299300e-01 },
350  { 9.93865767e-01, 8.55711038e-01, 6.12481798e-01 },
351  { 9.94221900e-01, 8.48540474e-01, 6.05695903e-01 },
352  { 9.94523666e-01, 8.41386618e-01, 5.98982818e-01 },
353  { 9.94851089e-01, 8.34212826e-01, 5.92307093e-01 },
354  { 9.95131288e-01, 8.27051773e-01, 5.85701463e-01 },
355  { 9.95423973e-01, 8.19875302e-01, 5.79140130e-01 },
356  { 9.95680107e-01, 8.12705773e-01, 5.72644795e-01 },
357  { 9.95932448e-01, 8.05527126e-01, 5.66201824e-01 },
358  { 9.96162309e-01, 7.98347709e-01, 5.59819643e-01 },
359  { 9.96369065e-01, 7.91167346e-01, 5.53498939e-01 },
360  { 9.96570645e-01, 7.83976508e-01, 5.47232992e-01 },
361  { 9.96726862e-01, 7.76794860e-01, 5.41038571e-01 },
362  { 9.96898254e-01, 7.69590975e-01, 5.34892341e-01 },
363  { 9.97019342e-01, 7.62397883e-01, 5.28820775e-01 },
364  { 9.97138480e-01, 7.55189852e-01, 5.22805996e-01 },
365  { 9.97228367e-01, 7.47980563e-01, 5.16859378e-01 },
366  { 9.97284689e-01, 7.40771893e-01, 5.10983331e-01 },
367  { 9.97341259e-01, 7.33544671e-01, 5.05166839e-01 },
368  { 9.97350583e-01, 7.26324415e-01, 4.99427972e-01 },
369  { 9.97350983e-01, 7.19089119e-01, 4.93754665e-01 },
370  { 9.97325180e-01, 7.11847714e-01, 4.88154375e-01 },
371  { 9.97253982e-01, 7.04610791e-01, 4.82634651e-01 },
372  { 9.97186253e-01, 6.97348991e-01, 4.77181727e-01 },
373  { 9.97077185e-01, 6.90087897e-01, 4.71811461e-01 },
374  { 9.96925427e-01, 6.82827953e-01, 4.66525689e-01 },
375  { 9.96774784e-01, 6.75541484e-01, 4.61314158e-01 },
376  { 9.96579803e-01, 6.68255621e-01, 4.56191814e-01 },
377  { 9.96341406e-01, 6.60969379e-01, 4.51160201e-01 },
378  { 9.96095703e-01, 6.53658756e-01, 4.46213021e-01 },
379  { 9.95809924e-01, 6.46343897e-01, 4.41360951e-01 },
380  { 9.95480469e-01, 6.39026596e-01, 4.36607159e-01 },
381  { 9.95121854e-01, 6.31696376e-01, 4.31951492e-01 },
382  { 9.94737698e-01, 6.24349657e-01, 4.27396771e-01 },
383  { 9.94308514e-01, 6.16998953e-01, 4.22949672e-01 },
384  { 9.93834412e-01, 6.09643540e-01, 4.18613221e-01 },
385  { 9.93325561e-01, 6.02275297e-01, 4.14389658e-01 },
386  { 9.92784669e-01, 5.94891088e-01, 4.10282976e-01 },
387  { 9.92195728e-01, 5.87501706e-01, 4.06298792e-01 },
388  { 9.91558165e-01, 5.80106828e-01, 4.02441058e-01 },
389  { 9.90871208e-01, 5.72706259e-01, 3.98713971e-01 },
390  { 9.90138201e-01, 5.65296495e-01, 3.95122099e-01 },
391  { 9.89363341e-01, 5.57873075e-01, 3.91670846e-01 },
392  { 9.88533173e-01, 5.50445778e-01, 3.88365009e-01 },
393  { 9.87646038e-01, 5.43015173e-01, 3.85209578e-01 },
394  { 9.86700017e-01, 5.35582070e-01, 3.82209724e-01 },
395  { 9.85692925e-01, 5.28147545e-01, 3.79370774e-01 },
396  { 9.84622298e-01, 5.20712972e-01, 3.76698186e-01 },
397  { 9.83485387e-01, 5.13280054e-01, 3.74197501e-01 },
398  { 9.82279159e-01, 5.05850848e-01, 3.71874301e-01 },
399  { 9.81000291e-01, 4.98427800e-01, 3.69734157e-01 },
400  { 9.79645181e-01, 4.91013764e-01, 3.67782559e-01 },
401  { 9.78209957e-01, 4.83612031e-01, 3.66024854e-01 },
402  { 9.76690494e-01, 4.76226350e-01, 3.64466162e-01 },
403  { 9.75082439e-01, 4.68860936e-01, 3.63111292e-01 },
404  { 9.73381238e-01, 4.61520484e-01, 3.61964652e-01 },
405  { 9.71582181e-01, 4.54210170e-01, 3.61030156e-01 },
406  { 9.69680441e-01, 4.46935635e-01, 3.60311120e-01 },
407  { 9.67671128e-01, 4.39702976e-01, 3.59810172e-01 },
408  { 9.65549351e-01, 4.32518707e-01, 3.59529151e-01 },
409  { 9.63310281e-01, 4.25389724e-01, 3.59469020e-01 },
410  { 9.60949221e-01, 4.18323245e-01, 3.59629789e-01 },
411  { 9.58464079e-01, 4.11323666e-01, 3.60014232e-01 },
412  { 9.55849237e-01, 4.04400213e-01, 3.60619076e-01 },
413  { 9.53099077e-01, 3.97562894e-01, 3.61438431e-01 },
414  { 9.50210150e-01, 3.90819546e-01, 3.62467694e-01 },
415  { 9.47179528e-01, 3.84177874e-01, 3.63701130e-01 },
416  { 9.44006448e-01, 3.77642889e-01, 3.65136328e-01 },
417  { 9.40687443e-01, 3.71224168e-01, 3.66761699e-01 },
418  { 9.37220874e-01, 3.64929312e-01, 3.68566525e-01 },
419  { 9.33606454e-01, 3.58764377e-01, 3.70540883e-01 },
420  { 9.29845090e-01, 3.52733817e-01, 3.72676513e-01 },
421  { 9.25937102e-01, 3.46843685e-01, 3.74959077e-01 },
422  { 9.21884187e-01, 3.41098112e-01, 3.77375977e-01 },
423  { 9.17688852e-01, 3.35500068e-01, 3.79915138e-01 },
424  { 9.13354091e-01, 3.30051947e-01, 3.82563414e-01 },
425  { 9.08883524e-01, 3.24755126e-01, 3.85308008e-01 },
426  { 9.04281297e-01, 3.19609981e-01, 3.88136889e-01 },
427  { 8.99551884e-01, 3.14616425e-01, 3.91036674e-01 },
428  { 8.94700194e-01, 3.09773445e-01, 3.93994634e-01 },
429  { 8.89731418e-01, 3.05078817e-01, 3.97001559e-01 },
430  { 8.84650824e-01, 3.00530090e-01, 4.00047060e-01 },
431  { 8.79463944e-01, 2.96124596e-01, 4.03118034e-01 },
432  { 8.74176342e-01, 2.91858679e-01, 4.06205397e-01 },
433  { 8.68793368e-01, 2.87728205e-01, 4.09303002e-01 },
434  { 8.63320397e-01, 2.83729003e-01, 4.12402889e-01 },
435  { 8.57762870e-01, 2.79856666e-01, 4.15496319e-01 },
436  { 8.52126490e-01, 2.76106469e-01, 4.18572767e-01 },
437  { 8.46415804e-01, 2.72473491e-01, 4.21631064e-01 },
438  { 8.40635680e-01, 2.68952874e-01, 4.24665620e-01 },
439  { 8.34790818e-01, 2.65539703e-01, 4.27671352e-01 },
440  { 8.28885740e-01, 2.62229049e-01, 4.30643647e-01 },
441  { 8.22925797e-01, 2.59015505e-01, 4.33572874e-01 },
442  { 8.16914186e-01, 2.55894550e-01, 4.36461074e-01 },
443  { 8.10854841e-01, 2.52861399e-01, 4.39304963e-01 },
444  { 8.04751511e-01, 2.49911350e-01, 4.42101615e-01 },
445  { 7.98607760e-01, 2.47039798e-01, 4.44848441e-01 },
446  { 7.92426972e-01, 2.44242250e-01, 4.47543155e-01 },
447  { 7.86212372e-01, 2.41514325e-01, 4.50183695e-01 },
448  { 7.79967847e-01, 2.38851170e-01, 4.52765022e-01 },
449  { 7.73695380e-01, 2.36249283e-01, 4.55289354e-01 },
450  { 7.67397681e-01, 2.33704708e-01, 4.57755411e-01 },
451  { 7.61077312e-01, 2.31213625e-01, 4.60162106e-01 },
452  { 7.54736692e-01, 2.28772352e-01, 4.62508534e-01 },
453  { 7.48378107e-01, 2.26377345e-01, 4.64793954e-01 },
454  { 7.42003713e-01, 2.24025196e-01, 4.67017774e-01 },
455  { 7.35615545e-01, 2.21712634e-01, 4.69179541e-01 },
456  { 7.29215521e-01, 2.19436516e-01, 4.71278924e-01 },
457  { 7.22805451e-01, 2.17193831e-01, 4.73315708e-01 },
458  { 7.16387038e-01, 2.14981693e-01, 4.75289780e-01 },
459  { 7.09961888e-01, 2.12797337e-01, 4.77201121e-01 },
460  { 7.03531700e-01, 2.10637956e-01, 4.79049270e-01 },
461  { 6.97097796e-01, 2.08501100e-01, 4.80834678e-01 },
462  { 6.90661380e-01, 2.06384461e-01, 4.82557941e-01 },
463  { 6.84223712e-01, 2.04285721e-01, 4.84219325e-01 },
464  { 6.77785975e-01, 2.02202663e-01, 4.85819154e-01 },
465  { 6.71349279e-01, 2.00133166e-01, 4.87357807e-01 },
466  { 6.64914668e-01, 1.98075202e-01, 4.88835712e-01 },
467  { 6.58483116e-01, 1.96026835e-01, 4.90253338e-01 },
468  { 6.52055535e-01, 1.93986210e-01, 4.91611196e-01 },
469  { 6.45632778e-01, 1.91951556e-01, 4.92909832e-01 },
470  { 6.39215638e-01, 1.89921182e-01, 4.94149821e-01 },
471  { 6.32804854e-01, 1.87893468e-01, 4.95331769e-01 },
472  { 6.26401108e-01, 1.85866869e-01, 4.96456304e-01 },
473  { 6.20005032e-01, 1.83839907e-01, 4.97524075e-01 },
474  { 6.13617209e-01, 1.81811170e-01, 4.98535746e-01 },
475  { 6.07238169e-01, 1.79779309e-01, 4.99491999e-01 },
476  { 6.00868399e-01, 1.77743036e-01, 5.00393522e-01 },
477  { 5.94508337e-01, 1.75701122e-01, 5.01241011e-01 },
478  { 5.88158375e-01, 1.73652392e-01, 5.02035167e-01 },
479  { 5.81818864e-01, 1.71595728e-01, 5.02776690e-01 },
480  { 5.75490107e-01, 1.69530062e-01, 5.03466273e-01 },
481  { 5.69172368e-01, 1.67454379e-01, 5.04104606e-01 },
482  { 5.62865867e-01, 1.65367714e-01, 5.04692365e-01 },
483  { 5.56570783e-01, 1.63269149e-01, 5.05230210e-01 },
484  { 5.50287252e-01, 1.61157816e-01, 5.05718782e-01 },
485  { 5.44015371e-01, 1.59032895e-01, 5.06158696e-01 },
486  { 5.37755194e-01, 1.56893613e-01, 5.06550538e-01 },
487  { 5.31506735e-01, 1.54739247e-01, 5.06894860e-01 },
488  { 5.25269968e-01, 1.52569121e-01, 5.07192172e-01 },
489  { 5.19044825e-01, 1.50382611e-01, 5.07442938e-01 },
490  { 5.12831195e-01, 1.48179144e-01, 5.07647570e-01 },
491  { 5.06628929e-01, 1.45958202e-01, 5.07806420e-01 },
492  { 5.00437834e-01, 1.43719323e-01, 5.07919772e-01 },
493  { 4.94257673e-01, 1.41462106e-01, 5.07987836e-01 },
494  { 4.88088169e-01, 1.39186217e-01, 5.08010737e-01 },
495  { 4.81928997e-01, 1.36891390e-01, 5.07988509e-01 },
496  { 4.75779723e-01, 1.34577500e-01, 5.07921193e-01 },
497  { 4.69639514e-01, 1.32244819e-01, 5.07809282e-01 },
498  { 4.63508291e-01, 1.29892998e-01, 5.07651812e-01 },
499  { 4.57385535e-01, 1.27522145e-01, 5.07448336e-01 },
500  { 4.51270678e-01, 1.25132484e-01, 5.07198258e-01 },
501  { 4.45163096e-01, 1.22724371e-01, 5.06900806e-01 },
502  { 4.39062114e-01, 1.20298314e-01, 5.06555026e-01 },
503  { 4.32967001e-01, 1.17854987e-01, 5.06159754e-01 },
504  { 4.26876965e-01, 1.15395258e-01, 5.05713602e-01 },
505  { 4.20791157e-01, 1.12920210e-01, 5.05214935e-01 },
506  { 4.14708664e-01, 1.10431177e-01, 5.04661843e-01 },
507  { 4.08628505e-01, 1.07929771e-01, 5.04052118e-01 },
508  { 4.02547663e-01, 1.05419865e-01, 5.03385761e-01 },
509  { 3.96466670e-01, 1.02902194e-01, 5.02657590e-01 },
510  { 3.90384361e-01, 1.00379466e-01, 5.01864236e-01 },
511  { 3.84299445e-01, 9.78549106e-02, 5.01001964e-01 },
512  { 3.78210547e-01, 9.53322947e-02, 5.00066568e-01 },
513  { 3.72116205e-01, 9.28159917e-02, 4.99053326e-01 },
514  { 3.66011928e-01, 9.03143031e-02, 4.97959963e-01 },
515  { 3.59897941e-01, 8.78311772e-02, 4.96778331e-01 },
516  { 3.53773161e-01, 8.53726329e-02, 4.95501096e-01 },
517  { 3.47635742e-01, 8.29463512e-02, 4.94120923e-01 },
518  { 3.41481725e-01, 8.05635079e-02, 4.92631321e-01 },
519  { 3.35307503e-01, 7.82361045e-02, 4.91024144e-01 },
520  { 3.29114038e-01, 7.59715081e-02, 4.89286796e-01 },
521  { 3.22899126e-01, 7.37819504e-02, 4.87408399e-01 },
522  { 3.16654235e-01, 7.16895272e-02, 4.85380429e-01 },
523  { 3.10382027e-01, 6.97024767e-02, 4.83186340e-01 },
524  { 3.04080941e-01, 6.78353452e-02, 4.80811572e-01 },
525  { 2.97740413e-01, 6.61170432e-02, 4.78243482e-01 },
526  { 2.91365817e-01, 6.45534486e-02, 4.75462193e-01 },
527  { 2.84951097e-01, 6.31676261e-02, 4.72450879e-01 },
528  { 2.78493300e-01, 6.19778136e-02, 4.69190328e-01 },
529  { 2.71994089e-01, 6.09935552e-02, 4.65660375e-01 },
530  { 2.65446744e-01, 6.02368754e-02, 4.61840297e-01 },
531  { 2.58857304e-01, 5.97055998e-02, 4.57709924e-01 },
532  { 2.52220252e-01, 5.94147119e-02, 4.53247729e-01 },
533  { 2.45543175e-01, 5.93524384e-02, 4.48435938e-01 },
534  { 2.38825991e-01, 5.95170384e-02, 4.43255999e-01 },
535  { 2.32076515e-01, 5.98886855e-02, 4.37694665e-01 },
536  { 2.25302032e-01, 6.04451843e-02, 4.31741767e-01 },
537  { 2.18511590e-01, 6.11584918e-02, 4.25391816e-01 },
538  { 2.11718061e-01, 6.19917876e-02, 4.18646741e-01 },
539  { 2.04934882e-01, 6.29066192e-02, 4.11514273e-01 },
540  { 1.98176877e-01, 6.38624166e-02, 4.04008953e-01 },
541  { 1.91459745e-01, 6.48183312e-02, 3.96151969e-01 },
542  { 1.84800877e-01, 6.57324381e-02, 3.87972507e-01 },
543  { 1.78211730e-01, 6.65758073e-02, 3.79497161e-01 },
544  { 1.71713033e-01, 6.73053260e-02, 3.70770827e-01 },
545  { 1.65308131e-01, 6.79108689e-02, 3.61816426e-01 },
546  { 1.59017511e-01, 6.83540225e-02, 3.52688028e-01 },
547  { 1.52839217e-01, 6.86368599e-02, 3.43404450e-01 },
548  { 1.46785234e-01, 6.87382323e-02, 3.34011109e-01 },
549  { 1.40857952e-01, 6.86540710e-02, 3.24537640e-01 },
550  { 1.35053322e-01, 6.83912798e-02, 3.14999890e-01 },
551  { 1.29380192e-01, 6.79349264e-02, 3.05442931e-01 },
552  { 1.23832651e-01, 6.72946449e-02, 2.95879431e-01 },
553  { 1.18405035e-01, 6.64791593e-02, 2.86320656e-01 },
554  { 1.13094451e-01, 6.54920358e-02, 2.76783978e-01 },
555  { 1.07898679e-01, 6.43351102e-02, 2.67288933e-01 },
556  { 1.02814972e-01, 6.30104053e-02, 2.57854400e-01 },
557  { 9.78334770e-02, 6.15314414e-02, 2.48476662e-01 },
558  { 9.29486914e-02, 5.99038167e-02, 2.39163669e-01 },
559  { 8.81547730e-02, 5.81331465e-02, 2.29921611e-01 },
560  { 8.34456313e-02, 5.62249365e-02, 2.20755099e-01 },
561  { 7.88150034e-02, 5.41844801e-02, 2.11667355e-01 },
562  { 7.42565152e-02, 5.20167766e-02, 2.02660374e-01 },
563  { 6.97637296e-02, 4.97264666e-02, 1.93735088e-01 },
564  { 6.53301801e-02, 4.73177796e-02, 1.84891506e-01 },
565  { 6.09493930e-02, 4.47944924e-02, 1.76128834e-01 },
566  { 5.66148978e-02, 4.21598925e-02, 1.67445592e-01 },
567  { 5.23204388e-02, 3.94066020e-02, 1.58841025e-01 },
568  { 4.80616391e-02, 3.66066101e-02, 1.50326989e-01 },
569  { 4.38295350e-02, 3.38299885e-02, 1.41886249e-01 },
570  { 3.96084872e-02, 3.10895652e-02, 1.33515085e-01 },
571  { 3.55204468e-02, 2.83974570e-02, 1.25209396e-01 },
572  { 3.16955304e-02, 2.57651161e-02, 1.16964722e-01 },
573  { 2.81228154e-02, 2.32009284e-02, 1.08786954e-01 },
574  { 2.47917814e-02, 2.07147875e-02, 1.00675555e-01 },
575  { 2.16919340e-02, 1.83201254e-02, 9.26101050e-02 },
576  { 1.88153670e-02, 1.60262753e-02, 8.45844897e-02 },
577  { 1.61557566e-02, 1.38404966e-02, 7.66026660e-02 },
578  { 1.37075706e-02, 1.17705913e-02, 6.86665843e-02 },
579  { 1.14654337e-02, 9.82831486e-03, 6.07496380e-02 },
580  { 9.42604390e-03, 8.02185006e-03, 5.28443561e-02 },
581  { 7.58798550e-03, 6.35613622e-03, 4.49730774e-02 },
582  { 5.94976987e-03, 4.84285000e-03, 3.71296695e-02 },
583  { 4.51230222e-03, 3.49037666e-03, 2.99647059e-02 },
584  { 3.27943222e-03, 2.30452991e-03, 2.37083291e-02 },
585  { 2.25764007e-03, 1.29495431e-03, 1.83311461e-02 },
586  { 1.46159096e-03, 4.66127766e-04, 1.38655200e-02 }
587 }};
588 
589 // const std::vector<Color> color_list_inferno_ = {{
590 // { 0.000000, 0.000000, 0.015686 }, // black
591 // { 0.121569, 0.047059, 0.282353 }, // dark purple
592 // { 0.333333, 0.058824, 0.427451 }, // dark purple
593 // { 0.533333, 0.133333, 0.415686 }, // purple
594 // { 0.658824, 0.211765, 0.333333 }, // red-magenta
595 // { 0.890196, 0.349020, 0.200000 }, // red
596 // { 0.976471, 0.584314, 0.039216 }, // orange
597 // { 0.972549, 0.788235, 0.196078 }, // yellow-orange
598 // { 0.988235, 1.000000, 0.643137 }, // light yellow
599 // }};
600 
601 const std::vector<Color> color_list_inferno_ = {{
602  { 9.88362068e-01, 9.98364143e-01, 6.44924005e-01 },
603  { 9.82257307e-01, 9.94108844e-01, 6.31017009e-01 },
604  { 9.76510983e-01, 9.89753437e-01, 6.16760413e-01 },
605  { 9.71161622e-01, 9.85282161e-01, 6.02154330e-01 },
606  { 9.66248822e-01, 9.80678193e-01, 5.87205773e-01 },
607  { 9.61812020e-01, 9.75924241e-01, 5.71925382e-01 },
608  { 9.57896053e-01, 9.71003330e-01, 5.56275090e-01 },
609  { 9.54529281e-01, 9.65895868e-01, 5.40360752e-01 },
610  { 9.51740304e-01, 9.60586693e-01, 5.24203026e-01 },
611  { 9.49544830e-01, 9.55062900e-01, 5.07859649e-01 },
612  { 9.47936825e-01, 9.49317522e-01, 4.91426053e-01 },
613  { 9.46902568e-01, 9.43347775e-01, 4.74969778e-01 },
614  { 9.46402951e-01, 9.37158971e-01, 4.58591507e-01 },
615  { 9.46391536e-01, 9.30760752e-01, 4.42367495e-01 },
616  { 9.46809163e-01, 9.24168246e-01, 4.26373236e-01 },
617  { 9.47594362e-01, 9.17399053e-01, 4.10665194e-01 },
618  { 9.48683391e-01, 9.10472964e-01, 3.95289169e-01 },
619  { 9.50018481e-01, 9.03409063e-01, 3.80271225e-01 },
620  { 9.51546225e-01, 8.96225909e-01, 3.65627005e-01 },
621  { 9.53215092e-01, 8.88942277e-01, 3.51368713e-01 },
622  { 9.54997177e-01, 8.81568926e-01, 3.37475479e-01 },
623  { 9.56834075e-01, 8.74128569e-01, 3.23973947e-01 },
624  { 9.58720088e-01, 8.66624355e-01, 3.10820466e-01 },
625  { 9.60625545e-01, 8.59068716e-01, 2.98010219e-01 },
626  { 9.62516656e-01, 8.51476340e-01, 2.85545675e-01 },
627  { 9.64393924e-01, 8.43848069e-01, 2.73391112e-01 },
628  { 9.66242589e-01, 8.36190976e-01, 2.61533898e-01 },
629  { 9.68040817e-01, 8.28515491e-01, 2.49971582e-01 },
630  { 9.69783146e-01, 8.20825143e-01, 2.38685942e-01 },
631  { 9.71467822e-01, 8.13121725e-01, 2.27658046e-01 },
632  { 9.73087939e-01, 8.05409333e-01, 2.16876839e-01 },
633  { 9.74637842e-01, 7.97691563e-01, 2.06331925e-01 },
634  { 9.76108474e-01, 7.89973753e-01, 1.96017589e-01 },
635  { 9.77497453e-01, 7.82258138e-01, 1.85923357e-01 },
636  { 9.78806183e-01, 7.74545028e-01, 1.76037298e-01 },
637  { 9.80032178e-01, 7.66836624e-01, 1.66352544e-01 },
638  { 9.81173457e-01, 7.59134892e-01, 1.56863224e-01 },
639  { 9.82228463e-01, 7.51441596e-01, 1.47564573e-01 },
640  { 9.83195992e-01, 7.43758326e-01, 1.38453063e-01 },
641  { 9.84075129e-01, 7.36086521e-01, 1.29526579e-01 },
642  { 9.84865203e-01, 7.28427497e-01, 1.20784651e-01 },
643  { 9.85565739e-01, 7.20782460e-01, 1.12228756e-01 },
644  { 9.86174970e-01, 7.13153375e-01, 1.03863324e-01 },
645  { 9.86694229e-01, 7.05540424e-01, 9.56941797e-02 },
646  { 9.87123759e-01, 6.97944391e-01, 8.77314215e-02 },
647  { 9.87463516e-01, 6.90366218e-01, 7.99897176e-02 },
648  { 9.87713535e-01, 6.82806802e-01, 7.24892330e-02 },
649  { 9.87873910e-01, 6.75267000e-01, 6.52570167e-02 },
650  { 9.87944783e-01, 6.67747641e-01, 5.83286889e-02 },
651  { 9.87926330e-01, 6.60249526e-01, 5.17503867e-02 },
652  { 9.87818759e-01, 6.52773439e-01, 4.55808037e-02 },
653  { 9.87622296e-01, 6.45320152e-01, 3.98857472e-02 },
654  { 9.87337182e-01, 6.37890424e-01, 3.49160639e-02 },
655  { 9.86963670e-01, 6.30485011e-01, 3.09075459e-02 },
656  { 9.86502013e-01, 6.23104667e-01, 2.78139496e-02 },
657  { 9.85952471e-01, 6.15750147e-01, 2.55921853e-02 },
658  { 9.85315301e-01, 6.08422211e-01, 2.42021174e-02 },
659  { 9.84590755e-01, 6.01121626e-01, 2.36063833e-02 },
660  { 9.83779081e-01, 5.93849168e-01, 2.37702263e-02 },
661  { 9.82880522e-01, 5.86605627e-01, 2.46613416e-02 },
662  { 9.81895311e-01, 5.79391803e-01, 2.62497353e-02 },
663  { 9.80823673e-01, 5.72208516e-01, 2.85075931e-02 },
664  { 9.79665824e-01, 5.65056600e-01, 3.14091591e-02 },
665  { 9.78421971e-01, 5.57936911e-01, 3.49306227e-02 },
666  { 9.77092313e-01, 5.50850323e-01, 3.90500131e-02 },
667  { 9.75677038e-01, 5.43797733e-01, 4.36177922e-02 },
668  { 9.74176327e-01, 5.36780059e-01, 4.83920090e-02 },
669  { 9.72590351e-01, 5.29798246e-01, 5.33237243e-02 },
670  { 9.70919277e-01, 5.22853259e-01, 5.83674890e-02 },
671  { 9.69163264e-01, 5.15946092e-01, 6.34881971e-02 },
672  { 9.67322465e-01, 5.09077761e-01, 6.86589199e-02 },
673  { 9.65397031e-01, 5.02249309e-01, 7.38591143e-02 },
674  { 9.63387110e-01, 4.95461806e-01, 7.90731907e-02 },
675  { 9.61292850e-01, 4.88716345e-01, 8.42893891e-02 },
676  { 9.59114397e-01, 4.82014044e-01, 8.94989073e-02 },
677  { 9.56851903e-01, 4.75356048e-01, 9.46952268e-02 },
678  { 9.54505523e-01, 4.68743522e-01, 9.98735931e-02 },
679  { 9.52075421e-01, 4.62177656e-01, 1.05030614e-01 },
680  { 9.49561766e-01, 4.55659658e-01, 1.10163947e-01 },
681  { 9.46964741e-01, 4.49190757e-01, 1.15272059e-01 },
682  { 9.44284543e-01, 4.42772199e-01, 1.20354038e-01 },
683  { 9.41521384e-01, 4.36405243e-01, 1.25409440e-01 },
684  { 9.38675494e-01, 4.30091162e-01, 1.30438175e-01 },
685  { 9.35747126e-01, 4.23831237e-01, 1.35440416e-01 },
686  { 9.32736555e-01, 4.17626756e-01, 1.40416519e-01 },
687  { 9.29644083e-01, 4.11479007e-01, 1.45366973e-01 },
688  { 9.26470039e-01, 4.05389282e-01, 1.50292329e-01 },
689  { 9.23214783e-01, 3.99358867e-01, 1.55193185e-01 },
690  { 9.19878710e-01, 3.93389034e-01, 1.60070152e-01 },
691  { 9.16462251e-01, 3.87481044e-01, 1.64923826e-01 },
692  { 9.12965874e-01, 3.81636138e-01, 1.69754764e-01 },
693  { 9.09390090e-01, 3.75855533e-01, 1.74563472e-01 },
694  { 9.05735448e-01, 3.70140419e-01, 1.79350388e-01 },
695  { 9.02002544e-01, 3.64491949e-01, 1.84115876e-01 },
696  { 8.98192017e-01, 3.58911240e-01, 1.88860212e-01 },
697  { 8.94304553e-01, 3.53399363e-01, 1.93583583e-01 },
698  { 8.90340885e-01, 3.47957340e-01, 1.98286080e-01 },
699  { 8.86301795e-01, 3.42586137e-01, 2.02967696e-01 },
700  { 8.82188112e-01, 3.37286663e-01, 2.07628326e-01 },
701  { 8.78000715e-01, 3.32059760e-01, 2.12267762e-01 },
702  { 8.73740530e-01, 3.26906201e-01, 2.16885699e-01 },
703  { 8.69408534e-01, 3.21826685e-01, 2.21481734e-01 },
704  { 8.65005747e-01, 3.16821833e-01, 2.26055368e-01 },
705  { 8.60533241e-01, 3.11892183e-01, 2.30606009e-01 },
706  { 8.55992130e-01, 3.07038188e-01, 2.35132978e-01 },
707  { 8.51383572e-01, 3.02260213e-01, 2.39635512e-01 },
708  { 8.46708768e-01, 2.97558528e-01, 2.44112767e-01 },
709  { 8.41968959e-01, 2.92933312e-01, 2.48563825e-01 },
710  { 8.37165425e-01, 2.88384647e-01, 2.52987700e-01 },
711  { 8.32299481e-01, 2.83912516e-01, 2.57383341e-01 },
712  { 8.27372474e-01, 2.79516805e-01, 2.61749643e-01 },
713  { 8.22385784e-01, 2.75197300e-01, 2.66085445e-01 },
714  { 8.17340818e-01, 2.70953688e-01, 2.70389545e-01 },
715  { 8.12239008e-01, 2.66785558e-01, 2.74660698e-01 },
716  { 8.07081807e-01, 2.62692401e-01, 2.78897629e-01 },
717  { 8.01870689e-01, 2.58673610e-01, 2.83099033e-01 },
718  { 7.96607144e-01, 2.54728485e-01, 2.87263585e-01 },
719  { 7.91292674e-01, 2.50856232e-01, 2.91389943e-01 },
720  { 7.85928794e-01, 2.47055968e-01, 2.95476756e-01 },
721  { 7.80517023e-01, 2.43326720e-01, 2.99522665e-01 },
722  { 7.75058888e-01, 2.39667435e-01, 3.03526312e-01 },
723  { 7.69556038e-01, 2.36076967e-01, 3.07485188e-01 },
724  { 7.64009940e-01, 2.32554083e-01, 3.11398734e-01 },
725  { 7.58422090e-01, 2.29097492e-01, 3.15265910e-01 },
726  { 7.52794009e-01, 2.25705837e-01, 3.19085410e-01 },
727  { 7.47127207e-01, 2.22377697e-01, 3.22855952e-01 },
728  { 7.41423185e-01, 2.19111589e-01, 3.26576275e-01 },
729  { 7.35683432e-01, 2.15905976e-01, 3.30245147e-01 },
730  { 7.29909422e-01, 2.12759270e-01, 3.33861367e-01 },
731  { 7.24102613e-01, 2.09669834e-01, 3.37423766e-01 },
732  { 7.18264447e-01, 2.06635993e-01, 3.40931208e-01 },
733  { 7.12396345e-01, 2.03656029e-01, 3.44382594e-01 },
734  { 7.06499709e-01, 2.00728196e-01, 3.47776863e-01 },
735  { 7.00575937e-01, 1.97850703e-01, 3.51112900e-01 },
736  { 6.94626769e-01, 1.95021500e-01, 3.54387853e-01 },
737  { 6.88653158e-01, 1.92238994e-01, 3.57602797e-01 },
738  { 6.82656407e-01, 1.89501352e-01, 3.60756856e-01 },
739  { 6.76637795e-01, 1.86806728e-01, 3.63849195e-01 },
740  { 6.70598572e-01, 1.84153268e-01, 3.66879025e-01 },
741  { 6.64539964e-01, 1.81539111e-01, 3.69845599e-01 },
742  { 6.58463166e-01, 1.78962399e-01, 3.72748214e-01 },
743  { 6.52369348e-01, 1.76421271e-01, 3.75586209e-01 },
744  { 6.46259648e-01, 1.73913876e-01, 3.78358969e-01 },
745  { 6.40135447e-01, 1.71438150e-01, 3.81064906e-01 },
746  { 6.33997746e-01, 1.68992314e-01, 3.83703854e-01 },
747  { 6.27847374e-01, 1.66574724e-01, 3.86276180e-01 },
748  { 6.21685340e-01, 1.64183582e-01, 3.88781456e-01 },
749  { 6.15512627e-01, 1.61817111e-01, 3.91219295e-01 },
750  { 6.09330184e-01, 1.59473549e-01, 3.93589349e-01 },
751  { 6.03138930e-01, 1.57151161e-01, 3.95891308e-01 },
752  { 5.96939751e-01, 1.54848232e-01, 3.98124897e-01 },
753  { 5.90733615e-01, 1.52562977e-01, 4.00289528e-01 },
754  { 5.84521407e-01, 1.50293679e-01, 4.02384829e-01 },
755  { 5.78303656e-01, 1.48038934e-01, 4.04411444e-01 },
756  { 5.72081108e-01, 1.45797150e-01, 4.06369246e-01 },
757  { 5.65854477e-01, 1.43566769e-01, 4.08258132e-01 },
758  { 5.59624442e-01, 1.41346265e-01, 4.10078028e-01 },
759  { 5.53391649e-01, 1.39134147e-01, 4.11828882e-01 },
760  { 5.47156706e-01, 1.36928959e-01, 4.13510662e-01 },
761  { 5.40920186e-01, 1.34729286e-01, 4.15123366e-01 },
762  { 5.34682523e-01, 1.32533845e-01, 4.16667258e-01 },
763  { 5.28444192e-01, 1.30341324e-01, 4.18142411e-01 },
764  { 5.22205646e-01, 1.28150439e-01, 4.19548848e-01 },
765  { 5.15967304e-01, 1.25959947e-01, 4.20886594e-01 },
766  { 5.09729541e-01, 1.23768654e-01, 4.22155676e-01 },
767  { 5.03492698e-01, 1.21575414e-01, 4.23356110e-01 },
768  { 4.97257069e-01, 1.19379132e-01, 4.24487908e-01 },
769  { 4.91022448e-01, 1.17179219e-01, 4.25552106e-01 },
770  { 4.84789325e-01, 1.14974430e-01, 4.26547991e-01 },
771  { 4.78557889e-01, 1.12763831e-01, 4.27475431e-01 },
772  { 4.72328255e-01, 1.10546584e-01, 4.28334320e-01 },
773  { 4.66100494e-01, 1.08321923e-01, 4.29124507e-01 },
774  { 4.59874623e-01, 1.06089165e-01, 4.29845789e-01 },
775  { 4.53650614e-01, 1.03847716e-01, 4.30497898e-01 },
776  { 4.47428382e-01, 1.01597079e-01, 4.31080497e-01 },
777  { 4.41207124e-01, 9.93375510e-02, 4.31594438e-01 },
778  { 4.34986885e-01, 9.70686417e-02, 4.32038673e-01 },
779  { 4.28767696e-01, 9.47899342e-02, 4.32411996e-01 },
780  { 4.22549249e-01, 9.25014543e-02, 4.32713635e-01 },
781  { 4.16331169e-01, 9.02033992e-02, 4.32942678e-01 },
782  { 4.10113015e-01, 8.78961593e-02, 4.33098056e-01 },
783  { 4.03894278e-01, 8.55803445e-02, 4.33178526e-01 },
784  { 3.97674379e-01, 8.32568129e-02, 4.33182647e-01 },
785  { 3.91452659e-01, 8.09267058e-02, 4.33108763e-01 },
786  { 3.85228383e-01, 7.85914864e-02, 4.32954973e-01 },
787  { 3.79000659e-01, 7.62530701e-02, 4.32719214e-01 },
788  { 3.72767575e-01, 7.39149211e-02, 4.32400419e-01 },
789  { 3.66529195e-01, 7.15785403e-02, 4.31994185e-01 },
790  { 3.60284449e-01, 6.92471753e-02, 4.31497309e-01 },
791  { 3.54032169e-01, 6.69246832e-02, 4.30906186e-01 },
792  { 3.47771086e-01, 6.46156100e-02, 4.30216765e-01 },
793  { 3.41499828e-01, 6.23252772e-02, 4.29424503e-01 },
794  { 3.35216916e-01, 6.00598734e-02, 4.28524320e-01 },
795  { 3.28920763e-01, 5.78265505e-02, 4.27510546e-01 },
796  { 3.22609671e-01, 5.56335178e-02, 4.26376869e-01 },
797  { 3.16281835e-01, 5.34901321e-02, 4.25116277e-01 },
798  { 3.09935342e-01, 5.14069729e-02, 4.23720999e-01 },
799  { 3.03568182e-01, 4.93958927e-02, 4.22182449e-01 },
800  { 2.97178251e-01, 4.74700293e-02, 4.20491164e-01 },
801  { 2.90763373e-01, 4.56437598e-02, 4.18636756e-01 },
802  { 2.84321318e-01, 4.39325787e-02, 4.16607861e-01 },
803  { 2.77849829e-01, 4.23528741e-02, 4.14392106e-01 },
804  { 2.71346664e-01, 4.09215821e-02, 4.11976086e-01 },
805  { 2.64809649e-01, 3.96468666e-02, 4.09345373e-01 },
806  { 2.58234265e-01, 3.85706153e-02, 4.06485031e-01 },
807  { 2.51620354e-01, 3.77052832e-02, 4.03377897e-01 },
808  { 2.44966911e-01, 3.70545017e-02, 4.00006615e-01 },
809  { 2.38272961e-01, 3.66209949e-02, 3.96353388e-01 },
810  { 2.31538148e-01, 3.64052511e-02, 3.92400150e-01 },
811  { 2.24762908e-01, 3.64049901e-02, 3.88128944e-01 },
812  { 2.17948648e-01, 3.66146049e-02, 3.83522415e-01 },
813  { 2.11095463e-01, 3.70296488e-02, 3.78563264e-01 },
814  { 2.04209298e-01, 3.76322609e-02, 3.73237557e-01 },
815  { 1.97297425e-01, 3.84001825e-02, 3.67534629e-01 },
816  { 1.90367453e-01, 3.93088888e-02, 3.61446945e-01 },
817  { 1.83428775e-01, 4.03288858e-02, 3.54971391e-01 },
818  { 1.76493202e-01, 4.14017089e-02, 3.48110606e-01 },
819  { 1.69575148e-01, 4.24893149e-02, 3.40874188e-01 },
820  { 1.62688939e-01, 4.35542881e-02, 3.33276678e-01 },
821  { 1.55849711e-01, 4.45588056e-02, 3.25338414e-01 },
822  { 1.49072957e-01, 4.54676444e-02, 3.17085139e-01 },
823  { 1.42377819e-01, 4.62422566e-02, 3.08552910e-01 },
824  { 1.35778450e-01, 4.68563678e-02, 2.99776404e-01 },
825  { 1.29284984e-01, 4.72930838e-02, 2.90788012e-01 },
826  { 1.22908126e-01, 4.75360183e-02, 2.81624170e-01 },
827  { 1.16656423e-01, 4.75735920e-02, 2.72320803e-01 },
828  { 1.10536084e-01, 4.73986708e-02, 2.62912235e-01 },
829  { 1.04550936e-01, 4.70080541e-02, 2.53430300e-01 },
830  { 9.87024972e-02, 4.64018731e-02, 2.43903700e-01 },
831  { 9.29901526e-02, 4.55829503e-02, 2.34357604e-01 },
832  { 8.74113897e-02, 4.45561662e-02, 2.24813479e-01 },
833  { 8.19620773e-02, 4.33278666e-02, 2.15289113e-01 },
834  { 7.66367560e-02, 4.19053329e-02, 2.05798788e-01 },
835  { 7.14289181e-02, 4.02939095e-02, 1.96353558e-01 },
836  { 6.63312620e-02, 3.85036268e-02, 1.86961588e-01 },
837  { 6.13397200e-02, 3.65900213e-02, 1.77642172e-01 },
838  { 5.64491009e-02, 3.45691867e-02, 1.68413539e-01 },
839  { 5.16437624e-02, 3.24736172e-02, 1.59254277e-01 },
840  { 4.69146287e-02, 3.03236129e-02, 1.50163867e-01 },
841  { 4.22525554e-02, 2.81385015e-02, 1.41140519e-01 },
842  { 3.76684211e-02, 2.59207864e-02, 1.32232108e-01 },
843  { 3.33852235e-02, 2.37024271e-02, 1.23397286e-01 },
844  { 2.94324251e-02, 2.15030771e-02, 1.14621328e-01 },
845  { 2.57927373e-02, 1.93306298e-02, 1.05929835e-01 },
846  { 2.24468865e-02, 1.71991484e-02, 9.73274383e-02 },
847  { 1.93732295e-02, 1.51325789e-02, 8.87668094e-02 },
848  { 1.65605595e-02, 1.31362262e-02, 8.02817951e-02 },
849  { 1.39950388e-02, 1.12247138e-02, 7.18616890e-02 },
850  { 1.16634769e-02, 9.41675403e-03, 6.34598080e-02 },
851  { 9.56051094e-03, 7.71344131e-03, 5.51430756e-02 },
852  { 7.67578856e-03, 6.13611626e-03, 4.68360336e-02 },
853  { 6.00552565e-03, 4.69194561e-03, 3.85578980e-02 },
854  { 4.54690615e-03, 3.39180156e-03, 3.09092475e-02 },
855  { 3.29899092e-03, 2.24934863e-03, 2.42390508e-02 },
856  { 2.26726368e-03, 1.26992553e-03, 1.85703520e-02 },
857  { 1.46159096e-03, 4.66127766e-04, 1.38655200e-02 }
858 }};
859 
860 // const std::vector<Color> color_list_plasma_ = {{
861 // { 0.047059, 0.031373, 0.529412 }, // blue
862 // { 0.294118, 0.011765, 0.631373 }, // purple-blue
863 // { 0.490196, 0.011765, 0.658824 }, // purple
864 // { 0.658824, 0.133333, 0.588235 }, // purple
865 // { 0.796078, 0.274510, 0.474510 }, // magenta
866 // { 0.898039, 0.419608, 0.364706 }, // red
867 // { 0.972549, 0.580392, 0.254902 }, // orange
868 // { 0.992157, 0.764706, 0.156863 }, // orange
869 // { 0.941176, 0.976471, 0.129412 }, // yellow
870 // }};
871 
872 const std::vector<Color> color_list_plasma_ = {{
873  { 9.40015097e-01, 9.75158357e-01, 1.31325517e-01 },
874  { 9.41896120e-01, 9.68589814e-01, 1.40955606e-01 },
875  { 9.44151742e-01, 9.61916487e-01, 1.46860789e-01 },
876  { 9.46602270e-01, 9.55189860e-01, 1.50327944e-01 },
877  { 9.49150533e-01, 9.48434900e-01, 1.52177604e-01 },
878  { 9.51726083e-01, 9.41670605e-01, 1.52925363e-01 },
879  { 9.54286813e-01, 9.34907730e-01, 1.52921158e-01 },
880  { 9.56808068e-01, 9.28152065e-01, 1.52409489e-01 },
881  { 9.59275646e-01, 9.21406537e-01, 1.51566019e-01 },
882  { 9.61681481e-01, 9.14672479e-01, 1.50520343e-01 },
883  { 9.64021057e-01, 9.07950379e-01, 1.49370428e-01 },
884  { 9.66271225e-01, 9.01249365e-01, 1.48179639e-01 },
885  { 9.68443477e-01, 8.94563989e-01, 1.47014438e-01 },
886  { 9.70532932e-01, 8.87896125e-01, 1.45918663e-01 },
887  { 9.72530009e-01, 8.81250063e-01, 1.44922913e-01 },
888  { 9.74443038e-01, 8.74622194e-01, 1.44061156e-01 },
889  { 9.76264977e-01, 8.68015998e-01, 1.43350944e-01 },
890  { 9.77994918e-01, 8.61432314e-01, 1.42808191e-01 },
891  { 9.79643637e-01, 8.54866468e-01, 1.42453425e-01 },
892  { 9.81190389e-01, 8.48328902e-01, 1.42278607e-01 },
893  { 9.82652820e-01, 8.41811730e-01, 1.42302653e-01 },
894  { 9.84031139e-01, 8.35315360e-01, 1.42528388e-01 },
895  { 9.85314198e-01, 8.28845980e-01, 1.42945116e-01 },
896  { 9.86509366e-01, 8.22400620e-01, 1.43556679e-01 },
897  { 9.87620557e-01, 8.15977942e-01, 1.44362644e-01 },
898  { 9.88647741e-01, 8.09578605e-01, 1.45357284e-01 },
899  { 9.89587065e-01, 8.03205337e-01, 1.46529128e-01 },
900  { 9.90438793e-01, 7.96858775e-01, 1.47869810e-01 },
901  { 9.91208680e-01, 7.90536569e-01, 1.49376885e-01 },
902  { 9.91897270e-01, 7.84239120e-01, 1.51041581e-01 },
903  { 9.92505214e-01, 7.77966775e-01, 1.52854862e-01 },
904  { 9.93033251e-01, 7.71719833e-01, 1.54807583e-01 },
905  { 9.93482190e-01, 7.65498551e-01, 1.56890625e-01 },
906  { 9.93850778e-01, 7.59304390e-01, 1.59091984e-01 },
907  { 9.94140989e-01, 7.53136955e-01, 1.61404226e-01 },
908  { 9.94355411e-01, 7.46995448e-01, 1.63821243e-01 },
909  { 9.94494964e-01, 7.40880020e-01, 1.66334918e-01 },
910  { 9.94560594e-01, 7.34790799e-01, 1.68937522e-01 },
911  { 9.94553260e-01, 7.28727890e-01, 1.71621733e-01 },
912  { 9.94473934e-01, 7.22691379e-01, 1.74380656e-01 },
913  { 9.94323596e-01, 7.16681336e-01, 1.77207826e-01 },
914  { 9.94103226e-01, 7.10697814e-01, 1.80097207e-01 },
915  { 9.93813802e-01, 7.04740854e-01, 1.83043180e-01 },
916  { 9.93456302e-01, 6.98810484e-01, 1.86040537e-01 },
917  { 9.93031693e-01, 6.92906719e-01, 1.89084459e-01 },
918  { 9.92540939e-01, 6.87029567e-01, 1.92170500e-01 },
919  { 9.91984990e-01, 6.81179025e-01, 1.95294567e-01 },
920  { 9.91364787e-01, 6.75355082e-01, 1.98452900e-01 },
921  { 9.90681261e-01, 6.69557720e-01, 2.01642049e-01 },
922  { 9.89935328e-01, 6.63786914e-01, 2.04858855e-01 },
923  { 9.89127893e-01, 6.58042630e-01, 2.08100426e-01 },
924  { 9.88259846e-01, 6.52324832e-01, 2.11364122e-01 },
925  { 9.87332067e-01, 6.46633475e-01, 2.14647532e-01 },
926  { 9.86345421e-01, 6.40968508e-01, 2.17948456e-01 },
927  { 9.85300760e-01, 6.35329876e-01, 2.21264889e-01 },
928  { 9.84198924e-01, 6.29717516e-01, 2.24595006e-01 },
929  { 9.83040742e-01, 6.24131362e-01, 2.27937141e-01 },
930  { 9.81825890e-01, 6.18572250e-01, 2.31287178e-01 },
931  { 9.80556344e-01, 6.13039190e-01, 2.34646316e-01 },
932  { 9.79232922e-01, 6.07532077e-01, 2.38013359e-01 },
933  { 9.77856416e-01, 6.02050811e-01, 2.41387186e-01 },
934  { 9.76427606e-01, 5.96595287e-01, 2.44766775e-01 },
935  { 9.74947262e-01, 5.91165394e-01, 2.48151200e-01 },
936  { 9.73416145e-01, 5.85761012e-01, 2.51539615e-01 },
937  { 9.71835007e-01, 5.80382015e-01, 2.54931256e-01 },
938  { 9.70204593e-01, 5.75028270e-01, 2.58325424e-01 },
939  { 9.68525639e-01, 5.69699633e-01, 2.61721488e-01 },
940  { 9.66798470e-01, 5.64396327e-01, 2.65117752e-01 },
941  { 9.65023656e-01, 5.59118349e-01, 2.68513200e-01 },
942  { 9.63202573e-01, 5.53864931e-01, 2.71909159e-01 },
943  { 9.61335930e-01, 5.48635890e-01, 2.75305214e-01 },
944  { 9.59424430e-01, 5.43431038e-01, 2.78700990e-01 },
945  { 9.57468770e-01, 5.38250172e-01, 2.82096149e-01 },
946  { 9.55469640e-01, 5.33093083e-01, 2.85490391e-01 },
947  { 9.53427725e-01, 5.27959550e-01, 2.88883445e-01 },
948  { 9.51343530e-01, 5.22849522e-01, 2.92274506e-01 },
949  { 9.49217427e-01, 5.17763087e-01, 2.95662308e-01 },
950  { 9.47050662e-01, 5.12699390e-01, 2.99048555e-01 },
951  { 9.44843893e-01, 5.07658169e-01, 3.02433101e-01 },
952  { 9.42597771e-01, 5.02639147e-01, 3.05815824e-01 },
953  { 9.40312939e-01, 4.97642038e-01, 3.09196628e-01 },
954  { 9.37990034e-01, 4.92666544e-01, 3.12575440e-01 },
955  { 9.35629684e-01, 4.87712357e-01, 3.15952211e-01 },
956  { 9.33232140e-01, 4.82779603e-01, 3.19325444e-01 },
957  { 9.30798469e-01, 4.77867420e-01, 3.22696876e-01 },
958  { 9.28329275e-01, 4.72975465e-01, 3.26066550e-01 },
959  { 9.25825146e-01, 4.68103387e-01, 3.29434512e-01 },
960  { 9.23286660e-01, 4.63250828e-01, 3.32800827e-01 },
961  { 9.20714383e-01, 4.58417420e-01, 3.36165582e-01 },
962  { 9.18108848e-01, 4.53602818e-01, 3.39528771e-01 },
963  { 9.15470518e-01, 4.48806744e-01, 3.42890148e-01 },
964  { 9.12800095e-01, 4.44028574e-01, 3.46250656e-01 },
965  { 9.10098088e-01, 4.39267908e-01, 3.49610469e-01 },
966  { 9.07364995e-01, 4.34524335e-01, 3.52969777e-01 },
967  { 9.04601295e-01, 4.29797442e-01, 3.56328796e-01 },
968  { 9.01807455e-01, 4.25086807e-01, 3.59687758e-01 },
969  { 8.98983931e-01, 4.20391986e-01, 3.63046965e-01 },
970  { 8.96131191e-01, 4.15712489e-01, 3.66406907e-01 },
971  { 8.93249647e-01, 4.11047871e-01, 3.69767893e-01 },
972  { 8.90339687e-01, 4.06397694e-01, 3.73130228e-01 },
973  { 8.87401682e-01, 4.01761511e-01, 3.76494232e-01 },
974  { 8.84435982e-01, 3.97138877e-01, 3.79860246e-01 },
975  { 8.81442916e-01, 3.92529339e-01, 3.83228622e-01 },
976  { 8.78422895e-01, 3.87932249e-01, 3.86600468e-01 },
977  { 8.75376149e-01, 3.83347243e-01, 3.89975832e-01 },
978  { 8.72302917e-01, 3.78773910e-01, 3.93354947e-01 },
979  { 8.69203436e-01, 3.74211795e-01, 3.96738211e-01 },
980  { 8.66077920e-01, 3.69660446e-01, 4.00126027e-01 },
981  { 8.62926559e-01, 3.65119408e-01, 4.03518809e-01 },
982  { 8.59749520e-01, 3.60588229e-01, 4.06916975e-01 },
983  { 8.56547103e-01, 3.56066072e-01, 4.10322469e-01 },
984  { 8.53319279e-01, 3.51552815e-01, 4.13734445e-01 },
985  { 8.50066132e-01, 3.47048028e-01, 4.17153264e-01 },
986  { 8.46787726e-01, 3.42551272e-01, 4.20579333e-01 },
987  { 8.43484103e-01, 3.38062109e-01, 4.24013059e-01 },
988  { 8.40155276e-01, 3.33580106e-01, 4.27454836e-01 },
989  { 8.36801237e-01, 3.29104836e-01, 4.30905052e-01 },
990  { 8.33422053e-01, 3.24635499e-01, 4.34365616e-01 },
991  { 8.30017584e-01, 3.20171913e-01, 4.37835947e-01 },
992  { 8.26587706e-01, 3.15713782e-01, 4.41315901e-01 },
993  { 8.23132309e-01, 3.11260703e-01, 4.44805781e-01 },
994  { 8.19651255e-01, 3.06812282e-01, 4.48305861e-01 },
995  { 8.16144382e-01, 3.02368130e-01, 4.51816385e-01 },
996  { 8.12611506e-01, 2.97927865e-01, 4.55337565e-01 },
997  { 8.09052419e-01, 2.93491117e-01, 4.58869577e-01 },
998  { 8.05466945e-01, 2.89057057e-01, 4.62414580e-01 },
999  { 8.01854758e-01, 2.84625750e-01, 4.65970871e-01 },
1000  { 7.98215577e-01, 2.80196901e-01, 4.69538286e-01 },
1001  { 7.94549101e-01, 2.75770179e-01, 4.73116798e-01 },
1002  { 7.90855015e-01, 2.71345267e-01, 4.76706319e-01 },
1003  { 7.87132978e-01, 2.66921859e-01, 4.80306702e-01 },
1004  { 7.83382636e-01, 2.62499662e-01, 4.83917732e-01 },
1005  { 7.79603614e-01, 2.58078397e-01, 4.87539124e-01 },
1006  { 7.75795522e-01, 2.53657797e-01, 4.91170517e-01 },
1007  { 7.71957916e-01, 2.49237220e-01, 4.94813338e-01 },
1008  { 7.68090391e-01, 2.44816813e-01, 4.98465290e-01 },
1009  { 7.64192516e-01, 2.40396394e-01, 5.02125599e-01 },
1010  { 7.60263849e-01, 2.35975765e-01, 5.05793543e-01 },
1011  { 7.56303937e-01, 2.31554749e-01, 5.09468305e-01 },
1012  { 7.52312321e-01, 2.27133187e-01, 5.13148963e-01 },
1013  { 7.48288533e-01, 2.22710942e-01, 5.16834495e-01 },
1014  { 7.44232102e-01, 2.18287899e-01, 5.20523766e-01 },
1015  { 7.40142557e-01, 2.13863965e-01, 5.24215533e-01 },
1016  { 7.36019424e-01, 2.09439071e-01, 5.27908434e-01 },
1017  { 7.31862231e-01, 2.05013174e-01, 5.31600995e-01 },
1018  { 7.27670428e-01, 2.00586086e-01, 5.35292612e-01 },
1019  { 7.23443604e-01, 1.96157962e-01, 5.38980786e-01 },
1020  { 7.19181339e-01, 1.91728906e-01, 5.42663338e-01 },
1021  { 7.14883195e-01, 1.87298986e-01, 5.46338299e-01 },
1022  { 7.10548747e-01, 1.82868306e-01, 5.50003579e-01 },
1023  { 7.06177590e-01, 1.78437000e-01, 5.53656970e-01 },
1024  { 7.01769334e-01, 1.74005236e-01, 5.57296144e-01 },
1025  { 6.97323615e-01, 1.69573215e-01, 5.60918659e-01 },
1026  { 6.92840088e-01, 1.65141174e-01, 5.64521958e-01 },
1027  { 6.88318440e-01, 1.60709387e-01, 5.68103380e-01 },
1028  { 6.83758384e-01, 1.56278163e-01, 5.71660158e-01 },
1029  { 6.79159664e-01, 1.51847851e-01, 5.75189431e-01 },
1030  { 6.74522060e-01, 1.47418835e-01, 5.78688247e-01 },
1031  { 6.69845385e-01, 1.42991540e-01, 5.82153572e-01 },
1032  { 6.65129493e-01, 1.38566428e-01, 5.85582301e-01 },
1033  { 6.60374266e-01, 1.34143997e-01, 5.88971318e-01 },
1034  { 6.55579615e-01, 1.29724785e-01, 5.92317494e-01 },
1035  { 6.50745571e-01, 1.25309384e-01, 5.95617300e-01 },
1036  { 6.45872158e-01, 1.20898405e-01, 5.98867442e-01 },
1037  { 6.40959444e-01, 1.16492495e-01, 6.02064611e-01 },
1038  { 6.36007543e-01, 1.12092335e-01, 6.05205491e-01 },
1039  { 6.31016615e-01, 1.07698641e-01, 6.08286774e-01 },
1040  { 6.25986869e-01, 1.03312160e-01, 6.11305174e-01 },
1041  { 6.20918555e-01, 9.89336721e-02, 6.14257440e-01 },
1042  { 6.15811974e-01, 9.45639838e-02, 6.17140367e-01 },
1043  { 6.10667469e-01, 9.02039303e-02, 6.19950811e-01 },
1044  { 6.05485428e-01, 8.58543713e-02, 6.22685703e-01 },
1045  { 6.00266283e-01, 8.15161895e-02, 6.25342058e-01 },
1046  { 5.95010505e-01, 7.71902878e-02, 6.27916992e-01 },
1047  { 5.89718606e-01, 7.28775875e-02, 6.30407727e-01 },
1048  { 5.84391137e-01, 6.85790261e-02, 6.32811608e-01 },
1049  { 5.79028682e-01, 6.42955547e-02, 6.35126108e-01 },
1050  { 5.73631859e-01, 6.00281369e-02, 6.37348841e-01 },
1051  { 5.68201372e-01, 5.57776706e-02, 6.39477440e-01 },
1052  { 5.62738096e-01, 5.15448092e-02, 6.41509389e-01 },
1053  { 5.57242538e-01, 4.73307585e-02, 6.43443250e-01 },
1054  { 5.51715423e-01, 4.31364795e-02, 6.45277275e-01 },
1055  { 5.46157494e-01, 3.89540334e-02, 6.47009884e-01 },
1056  { 5.40569510e-01, 3.49501310e-02, 6.48639668e-01 },
1057  { 5.34952244e-01, 3.12170300e-02, 6.50165396e-01 },
1058  { 5.29306474e-01, 2.77468735e-02, 6.51586010e-01 },
1059  { 5.23632990e-01, 2.45316468e-02, 6.52900629e-01 },
1060  { 5.17932580e-01, 2.15631918e-02, 6.54108545e-01 },
1061  { 5.12206035e-01, 1.88332232e-02, 6.55209222e-01 },
1062  { 5.06454143e-01, 1.63333443e-02, 6.56202294e-01 },
1063  { 5.00677687e-01, 1.40550640e-02, 6.57087561e-01 },
1064  { 4.94877466e-01, 1.19897486e-02, 6.57864946e-01 },
1065  { 4.89054951e-01, 1.01269996e-02, 6.58533677e-01 },
1066  { 4.83210198e-01, 8.45983494e-03, 6.59094989e-01 },
1067  { 4.77343929e-01, 6.97958743e-03, 6.59549311e-01 },
1068  { 4.71456847e-01, 5.67758762e-03, 6.59897210e-01 },
1069  { 4.65549631e-01, 4.54518084e-03, 6.60139383e-01 },
1070  { 4.59622938e-01, 3.57374415e-03, 6.60276655e-01 },
1071  { 4.53677394e-01, 2.75470302e-03, 6.60309966e-01 },
1072  { 4.47713600e-01, 2.07954744e-03, 6.60240367e-01 },
1073  { 4.41732123e-01, 1.53984779e-03, 6.60069009e-01 },
1074  { 4.35733575e-01, 1.12705875e-03, 6.59797077e-01 },
1075  { 4.29719186e-01, 8.31008207e-04, 6.59425363e-01 },
1076  { 4.23688549e-01, 6.45902780e-04, 6.58956004e-01 },
1077  { 4.17642063e-01, 5.63847476e-04, 6.58390492e-01 },
1078  { 4.11580082e-01, 5.77101735e-04, 6.57730380e-01 },
1079  { 4.05502914e-01, 6.78091517e-04, 6.56977276e-01 },
1080  { 3.99410821e-01, 8.59420809e-04, 6.56132835e-01 },
1081  { 3.93304010e-01, 1.11388259e-03, 6.55198755e-01 },
1082  { 3.87182639e-01, 1.43446923e-03, 6.54176761e-01 },
1083  { 3.81047116e-01, 1.81356205e-03, 6.53068467e-01 },
1084  { 3.74897270e-01, 2.24514897e-03, 6.51875762e-01 },
1085  { 3.68732762e-01, 2.72370721e-03, 6.50600561e-01 },
1086  { 3.62553473e-01, 3.24319591e-03, 6.49244641e-01 },
1087  { 3.56359209e-01, 3.79781761e-03, 6.47809772e-01 },
1088  { 3.50149699e-01, 4.38202557e-03, 6.46297711e-01 },
1089  { 3.43924591e-01, 4.99053080e-03, 6.44710195e-01 },
1090  { 3.37683446e-01, 5.61830889e-03, 6.43048936e-01 },
1091  { 3.31425547e-01, 6.26107379e-03, 6.41315649e-01 },
1092  { 3.25150025e-01, 6.91491734e-03, 6.39512001e-01 },
1093  { 3.18856183e-01, 7.57551051e-03, 6.37639537e-01 },
1094  { 3.12543124e-01, 8.23900704e-03, 6.35699759e-01 },
1095  { 3.06209825e-01, 8.90185346e-03, 6.33694102e-01 },
1096  { 2.99855122e-01, 9.56079551e-03, 6.31623923e-01 },
1097  { 2.93477695e-01, 1.02128849e-02, 6.29490490e-01 },
1098  { 2.87076059e-01, 1.08554862e-02, 6.27294975e-01 },
1099  { 2.80647969e-01, 1.14875915e-02, 6.25038468e-01 },
1100  { 2.74190665e-01, 1.21091423e-02, 6.22721903e-01 },
1101  { 2.67702993e-01, 1.27162163e-02, 6.20345997e-01 },
1102  { 2.61182562e-01, 1.33075156e-02, 6.17911385e-01 },
1103  { 2.54626690e-01, 1.38820918e-02, 6.15418537e-01 },
1104  { 2.48032377e-01, 1.44393586e-02, 6.12867743e-01 },
1105  { 2.41396253e-01, 1.49791041e-02, 6.10259089e-01 },
1106  { 2.34714537e-01, 1.55015065e-02, 6.07592438e-01 },
1107  { 2.27982971e-01, 1.60071509e-02, 6.04867403e-01 },
1108  { 2.21196750e-01, 1.64970484e-02, 6.02083323e-01 },
1109  { 2.14350298e-01, 1.69729276e-02, 5.99239207e-01 },
1110  { 2.07434551e-01, 1.74421086e-02, 5.96333341e-01 },
1111  { 2.00445260e-01, 1.79015512e-02, 5.93364304e-01 },
1112  { 1.93374449e-01, 1.83540593e-02, 5.90329954e-01 },
1113  { 1.86212958e-01, 1.88029767e-02, 5.87227661e-01 },
1114  { 1.78950212e-01, 1.92522243e-02, 5.84054243e-01 },
1115  { 1.71573925e-01, 1.97063415e-02, 5.80805890e-01 },
1116  { 1.64069722e-01, 2.01705326e-02, 5.77478074e-01 },
1117  { 1.56420649e-01, 2.06507174e-02, 5.74065446e-01 },
1118  { 1.48606527e-01, 2.11535876e-02, 5.70561711e-01 },
1119  { 1.40603076e-01, 2.16866674e-02, 5.66959485e-01 },
1120  { 1.32380720e-01, 2.22583774e-02, 5.63250116e-01 },
1121  { 1.23902903e-01, 2.28781011e-02, 5.59423480e-01 },
1122  { 1.15123641e-01, 2.35562500e-02, 5.55467728e-01 },
1123  { 1.05979704e-01, 2.43092436e-02, 5.51367851e-01 },
1124  { 9.63786097e-02, 2.51650976e-02, 5.47103487e-01 },
1125  { 8.62217979e-02, 2.61253206e-02, 5.42657691e-01 },
1126  { 7.53531234e-02, 2.72063728e-02, 5.38007001e-01 },
1127  { 6.35363639e-02, 2.84259729e-02, 5.33123681e-01 },
1128  { 5.03832136e-02, 2.98028976e-02, 5.27974883e-01 }
1129 }};
1130 
1131 // const std::vector<Color> color_list_viridis_ = {{
1132 // { 0.266667, 0.003922, 0.329412 }, // dark purple
1133 // { 0.278431, 0.172549, 0.478431 }, // purple
1134 // { 0.231373, 0.317647, 0.545098 }, // blue
1135 // { 0.172549, 0.443137, 0.556863 }, // blue
1136 // { 0.129412, 0.564706, 0.552941 }, // blue-green
1137 // { 0.152941, 0.678431, 0.505882 }, // green
1138 // { 0.360784, 0.784314, 0.388235 }, // green
1139 // { 0.666667, 0.862745, 0.196078 }, // lime green
1140 // { 0.992157, 0.905882, 0.145098 }, // yellow
1141 // }};
1142 
1143 const std::vector<Color> color_list_viridis_ = {{
1144  { 0.99324789, 0.90615657, 0.1439362 },
1145  { 0.98386829, 0.90486726, 0.13689671 },
1146  { 0.97441665, 0.90358991, 0.13021494 },
1147  { 0.96489353, 0.90232311, 0.12394051 },
1148  { 0.95529972, 0.90106534, 0.11812832 },
1149  { 0.94563626, 0.899815 , 0.11283773 },
1150  { 0.93590444, 0.8985704 , 0.10813094 },
1151  { 0.92610579, 0.89732977, 0.10407067 },
1152  { 0.91624212, 0.89609127, 0.1007168 },
1153  { 0.90631121, 0.89485467, 0.09812496 },
1154  { 0.89632002, 0.89361614, 0.09633538 },
1155  { 0.88627146, 0.89237353, 0.09537439 },
1156  { 0.87616824, 0.89112487, 0.09525046 },
1157  { 0.86601325, 0.88986815, 0.09595277 },
1158  { 0.8558096 , 0.88860134, 0.09745186 },
1159  { 0.84556056, 0.88732243, 0.09970219 },
1160  { 0.83526959, 0.88602943, 0.1026459 },
1161  { 0.82494028, 0.88472036, 0.10621724 },
1162  { 0.81457634, 0.88339329, 0.11034678 },
1163  { 0.80418159, 0.88204632, 0.11496505 },
1164  { 0.79375994, 0.88067763, 0.12000532 },
1165  { 0.78331535, 0.87928545, 0.12540538 },
1166  { 0.77285183, 0.87786808, 0.13110864 },
1167  { 0.76237342, 0.87642392, 0.13706449 },
1168  { 0.75188414, 0.87495143, 0.14322828 },
1169  { 0.74138803, 0.87344918, 0.14956101 },
1170  { 0.73088902, 0.87191584, 0.15602894 },
1171  { 0.72039115, 0.87035015, 0.16260273 },
1172  { 0.70989842, 0.86875092, 0.16925712 },
1173  { 0.69941463, 0.86711711, 0.17597055 },
1174  { 0.68894351, 0.86544779, 0.18272455 },
1175  { 0.67848868, 0.86374211, 0.18950326 },
1176  { 0.66805369, 0.86199932, 0.19629307 },
1177  { 0.65764197, 0.86021878, 0.20308229 },
1178  { 0.64725685, 0.85839991, 0.20986086 },
1179  { 0.63690157, 0.85654226, 0.21662012 },
1180  { 0.62657923, 0.85464543, 0.22335258 },
1181  { 0.61629283, 0.85270912, 0.23005179 },
1182  { 0.60604528, 0.8507331 , 0.23671214 },
1183  { 0.59583934, 0.84871722, 0.24332878 },
1184  { 0.58567772, 0.84666139, 0.24989748 },
1185  { 0.57556297, 0.84456561, 0.25641457 },
1186  { 0.5654976 , 0.8424299 , 0.26287683 },
1187  { 0.55548397, 0.84025437, 0.26928147 },
1188  { 0.5455244 , 0.83803918, 0.27562602 },
1189  { 0.5356211 , 0.83578452, 0.28190832 },
1190  { 0.52577622, 0.83349064, 0.2881265 },
1191  { 0.51599182, 0.83115784, 0.29427888 },
1192  { 0.5062713 , 0.82878621, 0.30036211 },
1193  { 0.49661536, 0.82637633, 0.30637661 },
1194  { 0.4870258 , 0.82392862, 0.31232133 },
1195  { 0.47750446, 0.82144351, 0.31819529 },
1196  { 0.46805314, 0.81892143, 0.32399761 },
1197  { 0.45867362, 0.81636288, 0.32972749 },
1198  { 0.44936763, 0.81376835, 0.33538426 },
1199  { 0.44013691, 0.81113836, 0.3409673 },
1200  { 0.43098317, 0.80847343, 0.34647607 },
1201  { 0.42190813, 0.80577412, 0.35191009 },
1202  { 0.4129135 , 0.80304099, 0.35726893 },
1203  { 0.40400101, 0.80027461, 0.36255223 },
1204  { 0.39517408, 0.79747541, 0.36775726 },
1205  { 0.38643282, 0.79464415, 0.37288606 },
1206  { 0.37777892, 0.79178146, 0.3779385 },
1207  { 0.3692142 , 0.78888793, 0.38291438 },
1208  { 0.36074053, 0.78596419, 0.38781353 },
1209  { 0.35235985, 0.78301086, 0.39263579 },
1210  { 0.34407411, 0.78002855, 0.39738103 },
1211  { 0.33588539, 0.7770179 , 0.40204917 },
1212  { 0.3277958 , 0.77397953, 0.40664011 },
1213  { 0.3198086 , 0.77091403, 0.41115215 },
1214  { 0.31192534, 0.76782207, 0.41558638 },
1215  { 0.30414796, 0.76470433, 0.41994346 },
1216  { 0.29647899, 0.76156142, 0.42422341 },
1217  { 0.28892102, 0.75839399, 0.42842626 },
1218  { 0.28147681, 0.75520266, 0.43255207 },
1219  { 0.27414922, 0.75198807, 0.4366009 },
1220  { 0.26694127, 0.74875084, 0.44057284 },
1221  { 0.25985676, 0.74549162, 0.44446673 },
1222  { 0.25289851, 0.74221104, 0.44828355 },
1223  { 0.24606968, 0.73890972, 0.45202405 },
1224  { 0.2393739 , 0.73558828, 0.45568838 },
1225  { 0.23281498, 0.73224735, 0.45927675 },
1226  { 0.2263969 , 0.72888753, 0.46278934 },
1227  { 0.22012381, 0.72550945, 0.46622638 },
1228  { 0.21400015, 0.72211371, 0.46958774 },
1229  { 0.20803045, 0.71870095, 0.4728733 },
1230  { 0.20221902, 0.71527175, 0.47608431 },
1231  { 0.19657063, 0.71182668, 0.47922108 },
1232  { 0.19109018, 0.70836635, 0.48228395 },
1233  { 0.18578266, 0.70489133, 0.48527326 },
1234  { 0.18065314, 0.70140222, 0.48818938 },
1235  { 0.17570671, 0.6978996 , 0.49103252 },
1236  { 0.1709484 , 0.69438405, 0.49380294 },
1237  { 0.1663832 , 0.69085611, 0.49650163 },
1238  { 0.16201598, 0.68731632, 0.49912906 },
1239  { 0.15785146, 0.68376525, 0.50168574 },
1240  { 0.15389405, 0.68020343, 0.50417217 },
1241  { 0.15014782, 0.67663139, 0.5065889 },
1242  { 0.1466164 , 0.67304968, 0.50893644 },
1243  { 0.14330291, 0.66945881, 0.51121549 },
1244  { 0.14020991, 0.66585927, 0.5134268 },
1245  { 0.13733921, 0.66225157, 0.51557101 },
1246  { 0.13469183, 0.65863619, 0.5176488 },
1247  { 0.13226797, 0.65501363, 0.51966086 },
1248  { 0.13006688, 0.65138436, 0.52160791 },
1249  { 0.12808703, 0.64774881, 0.52349092 },
1250  { 0.12632581, 0.64410744, 0.52531069 },
1251  { 0.12477953, 0.64046069, 0.52706792 },
1252  { 0.12344358, 0.63680899, 0.52876343 },
1253  { 0.12231244, 0.63315277, 0.53039808 },
1254  { 0.12137972, 0.62949242, 0.53197275 },
1255  { 0.12063824, 0.62582833, 0.53348834 },
1256  { 0.12008079, 0.62216081, 0.53494633 },
1257  { 0.11969858, 0.61849025, 0.53634733 },
1258  { 0.11948255, 0.61481702, 0.53769219 },
1259  { 0.11942341, 0.61114146, 0.53898192 },
1260  { 0.11951163, 0.60746388, 0.54021751 },
1261  { 0.11973756, 0.60378459, 0.54139999 },
1262  { 0.12009154, 0.60010387, 0.54253043 },
1263  { 0.12056501, 0.59642187, 0.54361058 },
1264  { 0.12114807, 0.59273889, 0.54464114 },
1265  { 0.12183122, 0.58905521, 0.54562298 },
1266  { 0.12260562, 0.58537105, 0.54655722 },
1267  { 0.12346281, 0.58168661, 0.54744498 },
1268  { 0.12439474, 0.57800205, 0.5482874 },
1269  { 0.12539383, 0.57431754, 0.54908564 },
1270  { 0.12645338, 0.57063316, 0.5498411 },
1271  { 0.12756771, 0.56694891, 0.55055551 },
1272  { 0.12872938, 0.56326503, 0.55122927 },
1273  { 0.1299327 , 0.55958162, 0.55186354 },
1274  { 0.13117249, 0.55589872, 0.55245948 },
1275  { 0.13244401, 0.55221637, 0.55301828 },
1276  { 0.13374299, 0.54853458, 0.55354108 },
1277  { 0.13506561, 0.54485335, 0.55402906 },
1278  { 0.1364085 , 0.54117264, 0.55448339 },
1279  { 0.13777048, 0.53749213, 0.55490625 },
1280  { 0.13914708, 0.53381201, 0.55529773 },
1281  { 0.14053599, 0.53013219, 0.55565893 },
1282  { 0.14193527, 0.52645254, 0.55599097 },
1283  { 0.14334327, 0.52277292, 0.55629491 },
1284  { 0.14475863, 0.51909319, 0.55657181 },
1285  { 0.14618026, 0.51541316, 0.55682271 },
1286  { 0.14760731, 0.51173263, 0.55704861 },
1287  { 0.14903918, 0.50805136, 0.5572505 },
1288  { 0.15047605, 0.50436904, 0.55742968 },
1289  { 0.1519182 , 0.50068529, 0.55758733 },
1290  { 0.15336445, 0.49700003, 0.55772371 },
1291  { 0.15481488, 0.49331293, 0.55783967 },
1292  { 0.15626973, 0.4896237 , 0.557936 },
1293  { 0.15772933, 0.48593197, 0.55801347 },
1294  { 0.15919413, 0.4822374 , 0.5580728 },
1295  { 0.16066467, 0.47853961, 0.55811466 },
1296  { 0.16214155, 0.47483821, 0.55813967 },
1297  { 0.16362543, 0.47113278, 0.55814842 },
1298  { 0.16511703, 0.4674229 , 0.55814141 },
1299  { 0.1666171 , 0.46370813, 0.55811913 },
1300  { 0.16812641, 0.45998802, 0.55808199 },
1301  { 0.16964573, 0.45626209, 0.55803034 },
1302  { 0.17117615, 0.4525298 , 0.55796464 },
1303  { 0.17271876, 0.4487906 , 0.55788532 },
1304  { 0.17427363, 0.4450441 , 0.55779216 },
1305  { 0.17584148, 0.44128981, 0.55768526 },
1306  { 0.17742298, 0.4375272 , 0.55756466 },
1307  { 0.17901879, 0.43375572, 0.55743035 },
1308  { 0.18062949, 0.42997486, 0.55728221 },
1309  { 0.18225561, 0.42618405, 0.5571201 },
1310  { 0.18389763, 0.42238275, 0.55694377 },
1311  { 0.18555593, 0.4185704 , 0.55675292 },
1312  { 0.18723083, 0.41474645, 0.55654717 },
1313  { 0.18892259, 0.41091033, 0.55632606 },
1314  { 0.19063135, 0.40706148, 0.55608907 },
1315  { 0.19235719, 0.40319934, 0.55583559 },
1316  { 0.19410009, 0.39932336, 0.55556494 },
1317  { 0.19585993, 0.39543297, 0.55527637 },
1318  { 0.1976365 , 0.39152762, 0.55496905 },
1319  { 0.1994295 , 0.38760678, 0.55464205 },
1320  { 0.20123854, 0.38366989, 0.55429441 },
1321  { 0.20306309, 0.37971644, 0.55392505 },
1322  { 0.20490257, 0.37574589, 0.55353282 },
1323  { 0.20675628, 0.37175775, 0.55311653 },
1324  { 0.20862342, 0.36775151, 0.55267486 },
1325  { 0.2105031 , 0.36372671, 0.55220646 },
1326  { 0.21239477, 0.35968273, 0.55171011 },
1327  { 0.21429757, 0.35561907, 0.5511844 },
1328  { 0.21620971, 0.35153548, 0.55062743 },
1329  { 0.21812995, 0.34743154, 0.55003755 },
1330  { 0.22005691, 0.34330688, 0.54941304 },
1331  { 0.22198915, 0.33916114, 0.54875211 },
1332  { 0.22392515, 0.334994 , 0.54805291 },
1333  { 0.2258633 , 0.33080515, 0.54731353 },
1334  { 0.22780192, 0.32659432, 0.546532 },
1335  { 0.22973926, 0.32236127, 0.54570633 },
1336  { 0.2316735 , 0.3181058 , 0.54483444 },
1337  { 0.23360277, 0.31382773, 0.54391424 },
1338  { 0.23552606, 0.30952657, 0.54294396 },
1339  { 0.23744138, 0.30520222, 0.5419214 },
1340  { 0.23934575, 0.30085494, 0.54084398 },
1341  { 0.24123708, 0.29648471, 0.53970946 },
1342  { 0.24311324, 0.29209154, 0.53851561 },
1343  { 0.24497208, 0.28767547, 0.53726018 },
1344  { 0.2468114 , 0.28323662, 0.53594093 },
1345  { 0.24862899, 0.27877509, 0.53455561 },
1346  { 0.25042462, 0.27429024, 0.53310261 },
1347  { 0.25219404, 0.26978306, 0.53157905 },
1348  { 0.25393498, 0.26525384, 0.52998273 },
1349  { 0.25564519, 0.26070284, 0.52831152 },
1350  { 0.25732244, 0.2561304 , 0.52656332 },
1351  { 0.25896451, 0.25153685, 0.52473609 },
1352  { 0.26057103, 0.2469217 , 0.52282822 },
1353  { 0.26213801, 0.24228619, 0.52083736 },
1354  { 0.2636632 , 0.23763078, 0.51876163 },
1355  { 0.2651445 , 0.23295593, 0.5165993 },
1356  { 0.26657984, 0.2282621 , 0.5143487 },
1357  { 0.26796846, 0.22354911, 0.5120084 },
1358  { 0.26930756, 0.21881782, 0.50957678 },
1359  { 0.27059473, 0.21406899, 0.50705243 },
1360  { 0.27182812, 0.20930306, 0.50443413 },
1361  { 0.27300596, 0.20452049, 0.50172076 },
1362  { 0.27412802, 0.19972086, 0.49891131 },
1363  { 0.27519116, 0.1949054 , 0.49600488 },
1364  { 0.27619376, 0.19007447, 0.49300074 },
1365  { 0.27713437, 0.18522836, 0.48989831 },
1366  { 0.27801236, 0.18036684, 0.48669702 },
1367  { 0.27882618, 0.1754902 , 0.48339654 },
1368  { 0.27957399, 0.17059884, 0.47999675 },
1369  { 0.28025468, 0.16569272, 0.47649762 },
1370  { 0.28086773, 0.16077132, 0.47289909 },
1371  { 0.28141228, 0.15583425, 0.46920128 },
1372  { 0.28188676, 0.15088147, 0.46540474 },
1373  { 0.28229037, 0.14591233, 0.46150995 },
1374  { 0.28262297, 0.14092556, 0.45751726 },
1375  { 0.28288389, 0.13592005, 0.45342734 },
1376  { 0.283072 , 0.13089477, 0.44924127 },
1377  { 0.28318684, 0.12584799, 0.44496 },
1378  { 0.28322882, 0.12077701, 0.44058404 },
1379  { 0.28319704, 0.11567966, 0.43611482 },
1380  { 0.28309095, 0.11055307, 0.43155375 },
1381  { 0.28291049, 0.10539345, 0.42690202 },
1382  { 0.28265633, 0.10019576, 0.42216032 },
1383  { 0.28232739, 0.09495545, 0.41733086 },
1384  { 0.28192358, 0.08966622, 0.41241521 },
1385  { 0.28144581, 0.0843197 , 0.40741404 },
1386  { 0.28089358, 0.07890703, 0.40232944 },
1387  { 0.28026658, 0.07341724, 0.39716349 },
1388  { 0.2795655 , 0.06783587, 0.39191723 },
1389  { 0.27879067, 0.06214536, 0.38659204 },
1390  { 0.27794143, 0.05632444, 0.38119074 },
1391  { 0.2770184 , 0.05034437, 0.37571452 },
1392  { 0.27602238, 0.04416723, 0.37016418 },
1393  { 0.27495242, 0.03775181, 0.36454323 },
1394  { 0.27380934, 0.03149748, 0.35885256 },
1395  { 0.27259384, 0.02556309, 0.35309303 },
1396  { 0.27130489, 0.01994186, 0.34726862 },
1397  { 0.26994384, 0.01462494, 0.34137895 },
1398  { 0.26851048, 0.00960483, 0.33542652 },
1399  { 0.26700401, 0.00487433, 0.32941519 }
1400 }};
1401 
1402 // =================================================================================================
1403 // Color Lists Functions
1404 // =================================================================================================
1405 
1406 std::vector<Color> const& color_list_bupubk()
1407 {
1408  return color_list_bupubk_;
1409 }
1410 
1411 std::vector<Color> const& color_list_blues()
1412 {
1413  return color_list_blues_;
1414 }
1415 
1416 std::vector<Color> const& color_list_bugn()
1417 {
1418  return color_list_bugn_;
1419 }
1420 
1421 std::vector<Color> const& color_list_bupu()
1422 {
1423  return color_list_bupu_;
1424 }
1425 
1426 std::vector<Color> const& color_list_gnbu()
1427 {
1428  return color_list_gnbu_;
1429 }
1430 
1431 std::vector<Color> const& color_list_greens()
1432 {
1433  return color_list_greens_;
1434 }
1435 
1436 std::vector<Color> const& color_list_greys()
1437 {
1438  return color_list_greys_;
1439 }
1440 
1441 std::vector<Color> const& color_list_oranges()
1442 {
1443  return color_list_oranges_;
1444 }
1445 
1446 std::vector<Color> const& color_list_orrd()
1447 {
1448  return color_list_orrd_;
1449 }
1450 
1451 std::vector<Color> const& color_list_pubu()
1452 {
1453  return color_list_pubu_;
1454 }
1455 
1456 std::vector<Color> const& color_list_pubugn()
1457 {
1458  return color_list_pubugn_;
1459 }
1460 
1461 std::vector<Color> const& color_list_purd()
1462 {
1463  return color_list_purd_;
1464 }
1465 
1466 std::vector<Color> const& color_list_purples()
1467 {
1468  return color_list_purples_;
1469 }
1470 
1471 std::vector<Color> const& color_list_rdpu()
1472 {
1473  return color_list_rdpu_;
1474 }
1475 
1476 std::vector<Color> const& color_list_reds()
1477 {
1478  return color_list_reds_;
1479 }
1480 
1481 std::vector<Color> const& color_list_ylgn()
1482 {
1483  return color_list_ylgn_;
1484 }
1485 
1486 std::vector<Color> const& color_list_ylgnbu()
1487 {
1488  return color_list_ylgnbu_;
1489 }
1490 
1491 std::vector<Color> const& color_list_ylorbr()
1492 {
1493  return color_list_ylorbr_;
1494 }
1495 
1496 std::vector<Color> const& color_list_ylorrd()
1497 {
1498  return color_list_ylorrd_;
1499 }
1500 
1501 std::vector<Color> const& color_list_heat()
1502 {
1503  return color_list_heat_;
1504 }
1505 
1506 std::vector<Color> const& color_list_magma()
1507 {
1508  return color_list_magma_;
1509 }
1510 
1511 std::vector<Color> const& color_list_inferno()
1512 {
1513  return color_list_inferno_;
1514 }
1515 
1516 std::vector<Color> const& color_list_plasma()
1517 {
1518  return color_list_plasma_;
1519 }
1520 
1521 std::vector<Color> const& color_list_viridis()
1522 {
1523  return color_list_viridis_;
1524 }
1525 
1526 // =================================================================================================
1527 // Convenience Functions
1528 // =================================================================================================
1529 
1530 std::vector<Color> const& color_list_sequential( ColorListSequential palette )
1531 {
1532  if( palette == ColorListSequential::kBupubk ) {
1533  return color_list_bupubk_;
1534  }
1535  if( palette == ColorListSequential::kBlues ) {
1536  return color_list_blues_;
1537  }
1538  if( palette == ColorListSequential::kBugn ) {
1539  return color_list_bugn_;
1540  }
1541  if( palette == ColorListSequential::kBupu ) {
1542  return color_list_bupu_;
1543  }
1544  if( palette == ColorListSequential::kGnbu ) {
1545  return color_list_gnbu_;
1546  }
1547  if( palette == ColorListSequential::kGreens ) {
1548  return color_list_greens_;
1549  }
1550  if( palette == ColorListSequential::kGreys ) {
1551  return color_list_greys_;
1552  }
1553  if( palette == ColorListSequential::kOranges ) {
1554  return color_list_oranges_;
1555  }
1556  if( palette == ColorListSequential::kOrrd ) {
1557  return color_list_orrd_;
1558  }
1559  if( palette == ColorListSequential::kPubu ) {
1560  return color_list_pubu_;
1561  }
1562  if( palette == ColorListSequential::kPubugn ) {
1563  return color_list_pubugn_;
1564  }
1565  if( palette == ColorListSequential::kPurd ) {
1566  return color_list_purd_;
1567  }
1568  if( palette == ColorListSequential::kPurples ) {
1569  return color_list_purples_;
1570  }
1571  if( palette == ColorListSequential::kRdpu ) {
1572  return color_list_rdpu_;
1573  }
1574  if( palette == ColorListSequential::kReds ) {
1575  return color_list_reds_;
1576  }
1577  if( palette == ColorListSequential::kYlgn ) {
1578  return color_list_ylgn_;
1579  }
1580  if( palette == ColorListSequential::kYlgnbu ) {
1581  return color_list_ylgnbu_;
1582  }
1583  if( palette == ColorListSequential::kYlorbr ) {
1584  return color_list_ylorbr_;
1585  }
1586  if( palette == ColorListSequential::kYlorrd ) {
1587  return color_list_ylorrd_;
1588  }
1589  if( palette == ColorListSequential::kHeat ) {
1590  return color_list_heat_;
1591  }
1592  if( palette == ColorListSequential::kMagma ) {
1593  return color_list_magma_;
1594  }
1595  if( palette == ColorListSequential::kInferno ) {
1596  return color_list_inferno_;
1597  }
1598  if( palette == ColorListSequential::kPlasma ) {
1599  return color_list_plasma_;
1600  }
1601  if( palette == ColorListSequential::kViridis ) {
1602  return color_list_viridis_;
1603  }
1604 
1605  throw std::invalid_argument( "Invalid ColorListSequential value." );
1606 }
1607 
1608 std::vector<Color> const& color_list_sequential( std::string const& palette )
1609 {
1610  auto const p = to_lower_ascii( palette );
1611 
1612  if( p == "bupubk" ) {
1613  return color_list_bupubk_;
1614  }
1615  if( p == "blues" ) {
1616  return color_list_blues_;
1617  }
1618  if( p == "bugn" ) {
1619  return color_list_bugn_;
1620  }
1621  if( p == "bupu" ) {
1622  return color_list_bupu_;
1623  }
1624  if( p == "gnbu" ) {
1625  return color_list_gnbu_;
1626  }
1627  if( p == "greens" ) {
1628  return color_list_greens_;
1629  }
1630  if( p == "greys" ) {
1631  return color_list_greys_;
1632  }
1633  if( p == "oranges" ) {
1634  return color_list_oranges_;
1635  }
1636  if( p == "orrd" ) {
1637  return color_list_orrd_;
1638  }
1639  if( p == "pubu" ) {
1640  return color_list_pubu_;
1641  }
1642  if( p == "pubugn" ) {
1643  return color_list_pubugn_;
1644  }
1645  if( p == "purd" ) {
1646  return color_list_purd_;
1647  }
1648  if( p == "purples" ) {
1649  return color_list_purples_;
1650  }
1651  if( p == "rdpu" ) {
1652  return color_list_rdpu_;
1653  }
1654  if( p == "reds" ) {
1655  return color_list_reds_;
1656  }
1657  if( p == "ylgn" ) {
1658  return color_list_ylgn_;
1659  }
1660  if( p == "ylgnbu" ) {
1661  return color_list_ylgnbu_;
1662  }
1663  if( p == "ylorbr" ) {
1664  return color_list_ylorbr_;
1665  }
1666  if( p == "ylorrd" ) {
1667  return color_list_ylorrd_;
1668  }
1669  if( p == "heat" ) {
1670  return color_list_heat_;
1671  }
1672  if( p == "magma" ) {
1673  return color_list_magma_;
1674  }
1675  if( p == "inferno" ) {
1676  return color_list_inferno_;
1677  }
1678  if( p == "plasma" ) {
1679  return color_list_plasma_;
1680  }
1681  if( p == "viridis" ) {
1682  return color_list_viridis_;
1683  }
1684 
1685  throw std::invalid_argument( "Invalid ColorListSequential name: '" + palette + "'." );
1686 }
1687 
1688 std::vector<std::string> color_list_sequential_names()
1689 {
1690  return {
1691  "BuPuBk",
1692  "Blues",
1693  "BuGn",
1694  "BuPu",
1695  "GnBu",
1696  "Greens",
1697  "Greys",
1698  "Oranges",
1699  "OrRd",
1700  "PuBu",
1701  "PuBuGn",
1702  "PuRd",
1703  "Purples",
1704  "RdPu",
1705  "Reds",
1706  "YlGn",
1707  "YlGnBu",
1708  "YlOrBr",
1709  "YlOrRd",
1710  "Heat",
1711  "Magma",
1712  "Inferno",
1713  "Plasma",
1714  "Viridis"
1715  };
1716 }
1717 
1718 } // namespace utils
1719 } // namespace genesis
genesis::utils::color_list_gnbu_
const std::vector< Color > color_list_gnbu_
Definition: list_sequential.cpp:105
genesis::utils::color_list_oranges_
const std::vector< Color > color_list_oranges_
Definition: list_sequential.cpp:141
genesis::utils::color_list_bugn_
const std::vector< Color > color_list_bugn_
Definition: list_sequential.cpp:81
genesis::utils::color_list_bupubk
std::vector< Color > const & color_list_bupubk()
Color Palette bupubk.
Definition: list_sequential.cpp:1406
genesis::utils::ColorListSequential::kYlorrd
@ kYlorrd
genesis::utils::color_list_ylorrd_
const std::vector< Color > color_list_ylorrd_
Definition: list_sequential.cpp:273
genesis::utils::color_list_ylgn_
const std::vector< Color > color_list_ylgn_
Definition: list_sequential.cpp:237
genesis::utils::ColorListSequential::kPurples
@ kPurples
genesis::utils::ColorListSequential::kYlgn
@ kYlgn
genesis::utils::color_list_reds_
const std::vector< Color > color_list_reds_
Definition: list_sequential.cpp:225
genesis::utils::ColorListSequential::kInferno
@ kInferno
genesis::utils::color_list_bupu
std::vector< Color > const & color_list_bupu()
Color palette bupu.
Definition: list_sequential.cpp:1421
genesis::utils::color_list_heat_
const std::vector< Color > color_list_heat_
Definition: list_sequential.cpp:294
genesis::utils::color_list_gnbu
std::vector< Color > const & color_list_gnbu()
Color palette gnbu.
Definition: list_sequential.cpp:1426
genesis::utils::color_list_bupubk_
const std::vector< Color > color_list_bupubk_
Our own color list used for visualizing trees.
Definition: list_sequential.cpp:50
genesis::utils::color_list_ylgnbu_
const std::vector< Color > color_list_ylgnbu_
Definition: list_sequential.cpp:249
genesis::utils::ColorListSequential::kHeat
@ kHeat
genesis::utils::ColorListSequential::kPlasma
@ kPlasma
genesis::utils::color_list_blues_
const std::vector< Color > color_list_blues_
Definition: list_sequential.cpp:69
genesis::utils::ColorListSequential::kViridis
@ kViridis
genesis::utils::color_list_ylgn
std::vector< Color > const & color_list_ylgn()
Color palette ylgn.
Definition: list_sequential.cpp:1481
genesis::utils::color_list_rdpu_
const std::vector< Color > color_list_rdpu_
Definition: list_sequential.cpp:213
genesis::utils::color_list_orrd
std::vector< Color > const & color_list_orrd()
Color palette orrd.
Definition: list_sequential.cpp:1446
genesis::utils::color_list_greys
std::vector< Color > const & color_list_greys()
Color palette greys.
Definition: list_sequential.cpp:1436
genesis::utils::ColorListSequential
ColorListSequential
Definition: list_sequential.hpp:262
genesis::utils::color_list_ylorbr_
const std::vector< Color > color_list_ylorbr_
Definition: list_sequential.cpp:261
genesis::utils::color_list_plasma_
const std::vector< Color > color_list_plasma_
Definition: list_sequential.cpp:872
genesis::utils::color_list_inferno
std::vector< Color > const & color_list_inferno()
Color palette inferno.
Definition: list_sequential.cpp:1511
genesis::utils::ColorListSequential::kGreys
@ kGreys
genesis::utils::color_list_sequential_names
std::vector< std::string > color_list_sequential_names()
Definition: list_sequential.cpp:1688
string.hpp
Provides some commonly used string utility functions.
genesis::utils::color_list_sequential
std::vector< Color > const & color_list_sequential(ColorListSequential palette)
Definition: list_sequential.cpp:1530
genesis::utils::ColorListSequential::kBlues
@ kBlues
genesis::utils::ColorListSequential::kGnbu
@ kGnbu
genesis::utils::color_list_purd
std::vector< Color > const & color_list_purd()
Color palette purd.
Definition: list_sequential.cpp:1461
genesis::utils::color_list_purples
std::vector< Color > const & color_list_purples()
Color palette purples.
Definition: list_sequential.cpp:1466
genesis::utils::ColorListSequential::kYlorbr
@ kYlorbr
genesis::utils::ColorListSequential::kBupubk
@ kBupubk
genesis::utils::color_list_bugn
std::vector< Color > const & color_list_bugn()
Color palette bugn.
Definition: list_sequential.cpp:1416
genesis::utils::color_list_magma_
const std::vector< Color > color_list_magma_
Definition: list_sequential.cpp:330
genesis::utils::ColorListSequential::kRdpu
@ kRdpu
genesis::utils::color_list_reds
std::vector< Color > const & color_list_reds()
Color palette reds.
Definition: list_sequential.cpp:1476
genesis::utils::color_list_oranges
std::vector< Color > const & color_list_oranges()
Color palette oranges.
Definition: list_sequential.cpp:1441
genesis::utils::color_list_bupu_
const std::vector< Color > color_list_bupu_
Definition: list_sequential.cpp:93
genesis::utils::color_list_purples_
const std::vector< Color > color_list_purples_
Definition: list_sequential.cpp:201
genesis::utils::ColorListSequential::kReds
@ kReds
genesis
Container namespace for all symbols of genesis in order to keep them separate when used as a library.
Definition: placement/formats/edge_color.cpp:42
functions.hpp
Color operators and functions.
list_sequential.hpp
genesis::utils::ColorListSequential::kBupu
@ kBupu
genesis::utils::color_list_pubu
std::vector< Color > const & color_list_pubu()
Color palette pubu.
Definition: list_sequential.cpp:1451
genesis::utils::ColorListSequential::kPurd
@ kPurd
genesis::utils::color_list_greens_
const std::vector< Color > color_list_greens_
Definition: list_sequential.cpp:117
genesis::utils::ColorListSequential::kOranges
@ kOranges
genesis::utils::to_lower_ascii
std::string to_lower_ascii(std::string const &str)
Return an all-lowercase copy of the given string, ASCII-only.
Definition: string.cpp:895
genesis::utils::ColorListSequential::kPubu
@ kPubu
genesis::utils::color_list_heat
std::vector< Color > const & color_list_heat()
Color palette heat.
Definition: list_sequential.cpp:1501
genesis::utils::ColorListSequential::kGreens
@ kGreens
genesis::utils::ColorListSequential::kOrrd
@ kOrrd
genesis::utils::color_list_rdpu
std::vector< Color > const & color_list_rdpu()
Color palette rdpu.
Definition: list_sequential.cpp:1471
genesis::utils::color_list_pubugn
std::vector< Color > const & color_list_pubugn()
Color palette pubugn.
Definition: list_sequential.cpp:1456
genesis::utils::ColorListSequential::kBugn
@ kBugn
genesis::utils::ColorListSequential::kPubugn
@ kPubugn
genesis::utils::ColorListSequential::kYlgnbu
@ kYlgnbu
genesis::utils::color_list_inferno_
const std::vector< Color > color_list_inferno_
Definition: list_sequential.cpp:601
genesis::utils::ColorListSequential::kMagma
@ kMagma
genesis::utils::color_list_magma
std::vector< Color > const & color_list_magma()
Color palette magma.
Definition: list_sequential.cpp:1506
genesis::utils::color_list_orrd_
const std::vector< Color > color_list_orrd_
Definition: list_sequential.cpp:153
genesis::utils::color_list_pubu_
const std::vector< Color > color_list_pubu_
Definition: list_sequential.cpp:165
genesis::utils::color_list_purd_
const std::vector< Color > color_list_purd_
Definition: list_sequential.cpp:189
genesis::utils::color_list_greys_
const std::vector< Color > color_list_greys_
Definition: list_sequential.cpp:129
genesis::utils::color_list_blues
std::vector< Color > const & color_list_blues()
Color palette blues.
Definition: list_sequential.cpp:1411
genesis::utils::color_list_viridis_
const std::vector< Color > color_list_viridis_
Definition: list_sequential.cpp:1143
genesis::utils::color_list_plasma
std::vector< Color > const & color_list_plasma()
Color palette plasma.
Definition: list_sequential.cpp:1516
genesis::utils::color_list_ylorbr
std::vector< Color > const & color_list_ylorbr()
Color palette ylorbr.
Definition: list_sequential.cpp:1491
genesis::utils::color_list_greens
std::vector< Color > const & color_list_greens()
Color palette greens.
Definition: list_sequential.cpp:1431
genesis::utils::color_list_viridis
std::vector< Color > const & color_list_viridis()
Color palette viridis.
Definition: list_sequential.cpp:1521
genesis::utils::color_list_ylgnbu
std::vector< Color > const & color_list_ylgnbu()
Color palette ylgnbu.
Definition: list_sequential.cpp:1486
genesis::utils::color_list_ylorrd
std::vector< Color > const & color_list_ylorrd()
Color palette ylorrd.
Definition: list_sequential.cpp:1496
genesis::utils::color_list_pubugn_
const std::vector< Color > color_list_pubugn_
Definition: list_sequential.cpp:177