@dra2020/baseclient 1.0.159 → 1.0.160

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,10 @@
1
- import * as JsColorMapsData from './jscolormapsdata';
2
- import {Util} from '../all/all'
1
+
2
+ // ColorTable is now generated by make_colortable.py; formerly we used './jscolormapsdata';
3
+ // ColorTable includes "Big palletes" (jet, turbo, inferno, viridis, magma, plasma, greys, bone), whose reverses are generated as needed
4
+ // and Color Brewer palettes (Accent, Blues, BrBG, BuGn, BuPu, CMRmap, Dark2, GnBu, Greens, Greys, OrRd, Oranges, PRGn, Paired, Pastel1,
5
+ // Pastel2, PiYG, PuBu, PuBuGn, PuOr, PuRd, Purples, RdBu, RdGy, RdPu, RdYlBu, RdYlGn, Reds, Set1, Set2, Set3, Spectral,
6
+ // Wistia, YlGn, YlGnBu, YlOrBr, YlOrRd)
7
+ import { ColorTable } from './colortable';
3
8
 
4
9
  export const MaxOrderedColors: number = 50;
5
10
  export const MaxColors: number = MaxOrderedColors * 3; // Tied to orderedColors()
@@ -214,7 +219,6 @@ export const ColorValues: ColorLookup =
214
219
  };
215
220
 
216
221
  // For Demographics scale (4 colors)
217
- export const CountEthnicFewClassicColors = 4;
218
222
  export const EthnicFewClassicColors = [
219
223
  '#fafafa', //
220
224
  '#aaaaaa', //
@@ -223,7 +227,6 @@ export const EthnicFewClassicColors = [
223
227
  ];
224
228
 
225
229
  // For Partisan Precinct Scale (12 colors)
226
- export const CountPartisanPrecinctClassicColors = 12;
227
230
  export const PartisanPrecinctClassicColors = [
228
231
  '#960018', // Carmine
229
232
  '#FF2020', //
@@ -240,7 +243,6 @@ export const PartisanPrecinctClassicColors = [
240
243
  ];
241
244
 
242
245
  // For Partisan District Scale (12 stops)
243
- export const CountPartisanDistrictClassicColors = 12;
244
246
  export let PartisanDistrictClassicColors = [
245
247
  '#960018', // Carmine
246
248
  '#960018', // .00 <= .40
@@ -257,7 +259,6 @@ export let PartisanDistrictClassicColors = [
257
259
  ];
258
260
 
259
261
  // All Groups Mosaic 16 colors
260
- export const CountEthnicBackgroundColor = 16;
261
262
  export const EthnicBackgroundColor: string[] = [
262
263
  '#c0392b', // solid white
263
264
  '#3498db', // solid black
@@ -279,8 +280,12 @@ export const EthnicBackgroundColor: string[] = [
279
280
 
280
281
  export const defaultDistrictsPalette = 'jet_r';
281
282
 
282
- // Static color tables; lazily populated
283
- let ColorTable: {[key: string]: string[]} = {};
283
+ const BigPalettes: string[] = [
284
+ 'jet_r','turbo_r','inferno_r','viridis_r','magma_r','plasma_r','greys_r','bone_r',
285
+ 'jet','turbo','inferno','viridis','magma','plasma','greys','bone'
286
+ ];
287
+
288
+ // OrderedColorTable is lazily populated
284
289
  let OrderedColorTable: {[key: string]: string[]} = {};
285
290
 
286
291
  export function genColor(i: number, useFirstColor: boolean, palette: string): string
@@ -296,6 +301,9 @@ export function genColor(i: number, useFirstColor: boolean, palette: string): st
296
301
  if (colors.length >= MaxOrderedColors)
297
302
  return colors[(i - 1) % MaxOrderedColors];
298
303
 
304
+ if (BigPalettes.indexOf(palette) < 0) // not a big palette
305
+ return colors[(i - 1) % colors.length];
306
+
299
307
  // Unexpected to get here, but something in case of an error
300
308
  return genDRAColor(i, useFirstColor);
301
309
  }
@@ -330,15 +338,22 @@ const DistrictsColorOrder: number[] =
330
338
  export function orderedColors(palette: string): string[]
331
339
  {
332
340
  const colors = getPalette(palette);
341
+
342
+ // Color Brewer palettes typically have only 8 colors; other palettes have MaxColors (except draclassic, which has 50 and does not call here)
333
343
  if (!OrderedColorTable[palette])
334
344
  {
335
- OrderedColorTable[palette] = [];
336
- for (let i: number = 0; i < MaxColors; i++)
345
+ if (BigPalettes.indexOf(palette) < 0) // not a big palette
346
+ OrderedColorTable[palette] = colors;
347
+ else
337
348
  {
338
- if (palette === 'jet_r' || palette === 'turbo_r')
339
- OrderedColorTable[palette].push(colors[Math.floor(DistrictsColorOrder[i] * 2.5) + 12]);
340
- else
341
- OrderedColorTable[palette].push(colors[DistrictsColorOrder[i] * 3]);
349
+ OrderedColorTable[palette] = [];
350
+ for (let i: number = 0; i < colors.length; i++)
351
+ {
352
+ if (palette === 'jet_r' || palette === 'turbo_r')
353
+ OrderedColorTable[palette].push(colors[Math.floor(DistrictsColorOrder[i] * 2.5) + 12]);
354
+ else
355
+ OrderedColorTable[palette].push(colors[DistrictsColorOrder[i] * 3]);
356
+ }
342
357
  }
343
358
  }
344
359
  return OrderedColorTable[palette];
@@ -361,59 +376,52 @@ export function getPalette(palette: string): string[]
361
376
  // Generate table for palette
362
377
  function getColorTable(palette: string): string[]
363
378
  {
379
+ // Classic palettes are referenced directly in some places, so we define them separately and add a reference to ColorTable for each of them
364
380
  if (palette === 'demographicsclassic')
365
381
  {
366
382
  if (!ColorTable[palette])
367
- {
368
- ColorTable[palette] = [];
369
- for (let i = 0; i < CountEthnicFewClassicColors; i++)
370
- ColorTable[palette].push(EthnicFewClassicColors[i]);
371
- }
383
+ ColorTable[palette] = EthnicFewClassicColors;
372
384
  return ColorTable[palette];
373
385
  }
374
386
  else if (palette === 'partisanclassic')
375
387
  {
376
388
  if (!ColorTable[palette])
377
- {
378
- ColorTable[palette] = [];
379
- for (let i = 0; i < CountPartisanPrecinctClassicColors; i++)
380
- ColorTable[palette].push(PartisanPrecinctClassicColors[i]);
381
- }
389
+ ColorTable[palette] = PartisanPrecinctClassicColors;
382
390
  return ColorTable[palette];
383
391
  }
384
392
  else if (palette === 'partisandistrictsclassic')
385
393
  {
386
394
  if (!ColorTable[palette])
387
- {
388
- ColorTable[palette] = [];
389
- for (let i = 0; i < CountPartisanDistrictClassicColors; i++)
390
- ColorTable[palette].push(PartisanDistrictClassicColors[i]);
391
- }
395
+ ColorTable[palette] = PartisanDistrictClassicColors;
392
396
  return ColorTable[palette];
393
397
  }
394
398
  else if (palette === 'allgroupsclassic')
395
399
  {
396
400
  if (!ColorTable[palette])
397
- {
398
- ColorTable[palette] = [];
399
- for (let i = 0; i < CountEthnicBackgroundColor; i++)
400
- ColorTable[palette].push(EthnicBackgroundColor[i]);
401
- return ColorTable[palette];
402
- }
401
+ ColorTable[palette] = EthnicBackgroundColor;
403
402
  return ColorTable[palette];
404
403
  }
405
404
 
406
- if (allPaletteNames.includes(palette))
407
- {
408
- if (!ColorTable[palette])
409
- ColorTable[palette] = jscolormap(palette, MaxColors);
405
+ if (ColorTable[palette])
410
406
  return ColorTable[palette];
407
+
408
+ if (palette.endsWith('_r'))
409
+ {
410
+ // Reverse palettes are not pre-generated into ColorTable; reverse the pre-generated one and cache it in ColorTable
411
+ const basePalette = palette.substring(0, palette.length - 2);
412
+ if (ColorTable[basePalette])
413
+ {
414
+ ColorTable[palette] = [...ColorTable[basePalette]].reverse();
415
+ return ColorTable[palette];
416
+ }
411
417
  }
412
- else
413
- return ['#ffffff'];
418
+
419
+ console.log(`colors.ts: palette not found: ${palette}`);
420
+ return ['#ffffff'];
414
421
  }
415
422
 
416
423
  // Helpers
424
+ /**** These helpers are now in data_tools/make_colortable.py which generates colortable.ts (9/15/2025) ****
417
425
  function toHexColor(r: number, g: number, b: number): string
418
426
  {
419
427
  return `#${Util.toHex(r)}${Util.toHex(g)}${Util.toHex(b)}`;
@@ -430,182 +438,6 @@ function jscolormap(name: string, shades: number): string[]
430
438
  return result;
431
439
  }
432
440
 
433
- // ****************************************************************
434
- // js-colormaps was made by Timothy Gebhard (https://github.com/timothygebhard/js-colormaps),
435
- // used here under MIT License, and modified for TypeScript
436
-
437
- const allPaletteNames: string[] = [
438
- 'Accent',
439
- 'Accent_r',
440
- 'Blues',
441
- 'Blues_r',
442
- 'BrBG',
443
- 'BrBG_r',
444
- 'BuGn',
445
- 'BuGn_r',
446
- 'BuPu',
447
- 'BuPu_r',
448
- 'CMRmap',
449
- 'CMRmap_r',
450
- 'Dark2',
451
- 'Dark2_r',
452
- 'GnBu',
453
- 'GnBu_r',
454
- 'Greens',
455
- 'Greens_r',
456
- 'Greys',
457
- 'Greys_r',
458
- 'OrRd',
459
- 'OrRd_r',
460
- 'Oranges',
461
- 'Oranges_r',
462
- 'PRGn',
463
- 'PRGn_r',
464
- 'Paired',
465
- 'Paired_r',
466
- 'Pastel1',
467
- 'Pastel1_r',
468
- 'Pastel2',
469
- 'Pastel2_r',
470
- 'PiYG',
471
- 'PiYG_r',
472
- 'PuBu',
473
- 'PuBu_r',
474
- 'PuBuGn',
475
- 'PuBuGn_r',
476
- 'PuOr',
477
- 'PuOr_r',
478
- 'PuRd',
479
- 'PuRd_r',
480
- 'Purples',
481
- 'Purples_r',
482
- 'RdBu',
483
- 'RdBu_r',
484
- 'RdGy',
485
- 'RdGy_r',
486
- 'RdPu',
487
- 'RdPu_r',
488
- 'RdYlBu',
489
- 'RdYlBu_r',
490
- 'RdYlGn',
491
- 'RdYlGn_r',
492
- 'Reds',
493
- 'Reds_r',
494
- 'Set1',
495
- 'Set1_r',
496
- 'Set2',
497
- 'Set2_r',
498
- 'Set3',
499
- 'Set3_r',
500
- 'Spectral',
501
- 'Spectral_r',
502
- 'Wistia',
503
- 'Wistia_r',
504
- 'YlGn',
505
- 'YlGn_r',
506
- 'YlGnBu',
507
- 'YlGnBu_r',
508
- 'YlOrBr',
509
- 'YlOrBr_r',
510
- 'YlOrRd',
511
- 'YlOrRd_r',
512
- 'afmhot',
513
- 'afmhot_r',
514
- 'autumn',
515
- 'autumn_r',
516
- 'binary',
517
- 'binary_r',
518
- 'bone',
519
- 'bone_r',
520
- 'brg',
521
- 'brg_r',
522
- 'bwr',
523
- 'bwr_r',
524
- 'cividis',
525
- 'cividis_r',
526
- 'cool',
527
- 'cool_r',
528
- 'coolwarm',
529
- 'coolwarm_r',
530
- 'copper',
531
- 'copper_r',
532
- 'cubehelix',
533
- 'cubehelix_r',
534
- 'flag',
535
- 'flag_r',
536
- 'gist_earth',
537
- 'gist_earth_r',
538
- 'gist_gray',
539
- 'gist_gray_r',
540
- 'gist_heat',
541
- 'gist_heat_r',
542
- 'gist_ncar',
543
- 'gist_ncar_r',
544
- 'gist_rainbow',
545
- 'gist_rainbow_r',
546
- 'gist_stern',
547
- 'gist_stern_r',
548
- 'gist_yarg',
549
- 'gist_yarg_r',
550
- 'gnuplot',
551
- 'gnuplot_r',
552
- 'gnuplot2',
553
- 'gnuplot2_r',
554
- 'gray',
555
- 'gray_r',
556
- 'hot',
557
- 'hot_r',
558
- 'hsv',
559
- 'hsv_r',
560
- 'inferno',
561
- 'inferno_r',
562
- 'jet',
563
- 'jet_r',
564
- 'magma',
565
- 'magma_r',
566
- 'nipy_spectral',
567
- 'nipy_spectral_r',
568
- 'ocean',
569
- 'ocean_r',
570
- 'pink',
571
- 'pink_r',
572
- 'plasma',
573
- 'plasma_r',
574
- 'prism',
575
- 'prism_r',
576
- 'rainbow',
577
- 'rainbow_r',
578
- 'seismic',
579
- 'seismic_r',
580
- 'spring',
581
- 'spring_r',
582
- 'summer',
583
- 'summer_r',
584
- 'tab10',
585
- 'tab10_r',
586
- 'tab20',
587
- 'tab20_r',
588
- 'tab20b',
589
- 'tab20b_r',
590
- 'tab20c',
591
- 'tab20c_r',
592
- 'terrain',
593
- 'terrain_r',
594
- 'turbo',
595
- 'turbo_r',
596
- 'twilight',
597
- 'twilight_r',
598
- 'twilight_shifted',
599
- 'twilight_shifted_r',
600
- 'viridis',
601
- 'viridis_r',
602
- 'winter',
603
- 'winter_r'];
604
-
605
- /*
606
- Define auxiliary functions for evaluating colormaps
607
- */
608
-
609
441
  function evaluate_cmap(x: number, name: string, reverse: boolean) {
610
442
  /**
611
443
  * Evaluate colormap `name` at some value `x`.
@@ -613,7 +445,7 @@ function evaluate_cmap(x: number, name: string, reverse: boolean) {
613
445
  * @param {string} name - The name of the colormap (see matplotlib documentation).
614
446
  * @reverse {boolean} reverse - Whether or not to reverse the colormap.
615
447
  * @return {list} - A 3-tuple (R, G, B) containing the color assigned to `x`.
616
- */
448
+ *//*
617
449
 
618
450
  // Ensure that the value of `x` is valid (i.e., 0 <= x <= 1)
619
451
  if (!(0 <= x && x <= 1)) {
@@ -666,7 +498,7 @@ function partial(name: string) {
666
498
  return function(x: number) { return evaluate_cmap(x, name, false) };
667
499
  }
668
500
 
669
- }
501
+ } */
670
502
 
671
503
  // End of js-colormaps
672
504
  // *********************************************************
@@ -0,0 +1,38 @@
1
+ export var ColorTable: {[key: string]: string[]} = {
2
+ "Greys": ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
3
+ "bone": ["#000001","#020203","#040405","#050507","#070709","#08080c","#0a0a0e","#0b0b0f","#0d0d12","#0e0e14","#0f0f15","#111118","#13131a","#14141b","#15151e","#171720","#191923","#1a1a24","#1c1c26","#1d1d29","#1e1e2a","#20202c","#22222f","#232330","#242433","#262635","#282837","#292939","#2a2a3b","#2c2c3d","#2d2d3f","#2f2f41","#313144","#313145","#333347","#35354a","#37374c","#38384d","#393950","#3b3b52","#3c3c53","#3e3e56","#3f3f58","#404059","#42425c","#44445e","#464661","#464662","#484864","#4a4a67","#4b4b68","#4d4d6b","#4e4e6d","#4f4f6e","#515171","#535373","#545674","#555775","#575977","#595c79","#5a5d7a","#5b5f7b","#5d627d","#5e637e","#606580","#626881","#636a83","#646b84","#666e86","#687088","#697188","#6a748a","#6c768c","#6d778d","#6f7a8f","#707c90","#727e92","#738093","#758295","#778496","#778697","#798899","#7b8a9b","#7c8c9c","#7e8e9d","#7f919f","#8193a1","#8294a2","#8497a4","#8599a5","#869aa6","#889da8","#8a9faa","#8ba0ab","#8ca3ac","#8ea5ae","#90a7b0","#91a9b1","#93abb2","#94adb4","#95afb5","#97b1b7","#99b3b9","#9ab5b9","#9bb7bb","#9db9bd","#9fbcbf","#a0bdc0","#a1bfc1","#a3c2c3","#a4c3c4","#a6c5c6","#a8c7c7","#aac8c8","#accaca","#afcccc","#b2cece","#b3cece","#b6d0d0","#b9d2d2","#bad3d3","#bdd5d5","#bfd6d6","#c1d7d7","#c4d9d9","#c6dbdb","#c9dcdc","#cadddd","#cddfdf","#d0e1e1","#d1e2e2","#d4e3e3","#d7e5e5","#d8e6e6","#dbe8e8","#deeaea","#e0ebeb","#e2ecec","#e4eeee","#e7f0f0","#e8f1f1","#ebf2f2","#eef4f4","#eff5f5","#f2f7f7","#f5f8f8","#f7fafa","#f9fbfb","#fcfdfd","#feffff"],
4
+ "inferno": ["#000004","#010107","#02010b","#02020d","#030311","#050416","#06051a","#07051c","#090621","#0b0725","#0d0827","#0f092c","#120a31","#130a33","#160b38","#180c3d","#1b0c42","#1d0c44","#200c49","#230c4e","#250c50","#290b54","#2c0b58","#2e0a5a","#310a5d","#350a60","#380962","#3a0964","#3e0966","#410a67","#430a68","#460b69","#490b6a","#4b0c6b","#4e0d6c","#510e6d","#550f6d","#56106d","#59116e","#5d126e","#5e136e","#61146e","#65156e","#66166e","#69176e","#6d186e","#70196e","#711a6e","#741b6e","#781c6d","#791c6d","#7c1e6d","#801f6c","#811f6c","#84206b","#88226a","#8b236a","#8c2369","#902468","#932567","#942667","#972766","#9b2865","#9c2964","#9f2a63","#a22b62","#a62d60","#a72d5f","#aa2f5e","#ad305c","#af315c","#b2325a","#b53458","#b63457","#b93656","#bc3754","#bf3952","#c13a51","#c43c4f","#c63e4d","#c83f4c","#ca404a","#cd4248","#ce4447","#d14644","#d44842","#d64a40","#d74b3f","#da4e3d","#dc503a","#dd5139","#df5437","#e15734","#e35833","#e55b31","#e65e2e","#e8612c","#e9622b","#eb6528","#ed6826","#ed6a24","#ef6d22","#f0701f","#f1721e","#f2751b","#f47819","#f57c16","#f57d15","#f68112","#f78410","#f8860e","#f98a0c","#f98d09","#fa8f08","#fa9307","#fb9706","#fb9a06","#fb9c06","#fca007","#fca40a","#fca60b","#fca90e","#fcad12","#fcaf13","#fcb317","#fbb71c","#fbbb20","#fbbd22","#fac127","#fac52c","#f9c62e","#f9ca33","#f8ce39","#f8d03b","#f7d441","#f6d847","#f5dc4e","#f4de51","#f3e258","#f2e55f","#f2e763","#f2eb6b","#f1ee73","#f1f077","#f2f37f","#f3f688","#f5f890","#f6f994","#f8fc9b","#fbfea3"],
5
+ "jet": ["#000082","#00008b","#000094","#000099","#0000a2","#0000ab","#0000b4","#0000b8","#0000c1","#0000ca","#0000cf","#0000d8","#0000e1","#0000e6","#0000ef","#0000f8","#0000ff","#0000ff","#0000ff","#0006ff","#000aff","#0013ff","#001bff","#001fff","#0026ff","#002eff","#0037ff","#003bff","#0042ff","#004aff","#004fff","#0057ff","#005eff","#0062ff","#006bff","#0073ff","#007aff","#007eff","#0086ff","#008fff","#0093ff","#009aff","#00a2ff","#00a7ff","#00afff","#00b6ff","#00beff","#00c3ff","#00cbff","#00d2ff","#00d6ff","#00dffc","#01e7f6","#04ebf3","#0af2ec","#11fae6","#17ffdf","#1bffdc","#21ffd6","#28ffcf","#2bffcc","#31ffc6","#38ffbf","#3bffbc","#41ffb5","#48ffaf","#4effa9","#51ffa5","#58ff9f","#5eff98","#62ff95","#68ff8f","#6eff88","#72ff85","#78ff7f","#7fff78","#85ff72","#88ff6e","#8fff68","#95ff62","#98ff5e","#9fff58","#a5ff51","#a9ff4e","#afff48","#b5ff41","#bcff3b","#bfff38","#c6ff31","#ccff2b","#cfff28","#d6ff21","#dcff1b","#dfff17","#e6ff11","#ecff0a","#f3fa04","#f6f601","#fcef00","#ffe800","#ffe400","#ffdd00","#ffd500","#ffd100","#ffca00","#ffc300","#ffbb00","#ffb800","#ffb000","#ffa900","#ffa500","#ff9e00","#ff9600","#ff9200","#ff8b00","#ff8400","#ff7c00","#ff7900","#ff7100","#ff6a00","#ff6600","#ff5f00","#ff5700","#ff5400","#ff4c00","#ff4500","#ff3d00","#ff3a00","#ff3200","#ff2b00","#ff2700","#ff2000","#ff1800","#ff1500","#f80d00","#ef0600","#e60000","#e10000","#d80000","#cf0000","#ca0000","#c10000","#b80000","#b40000","#ab0000","#a20000","#990000","#940000","#8b0000","#820000"],
6
+ "magma": ["#000004","#010107","#02010a","#02020c","#030311","#040415","#060519","#07061b","#09071f","#0b0823","#0c0925","#0e0a2a","#100c2e","#110c30","#140e35","#160f39","#180f3e","#1a1041","#1c1145","#1f114a","#20114d","#231152","#261256","#281159","#2b115d","#2e1162","#321066","#331068","#37106c","#3a0f6f","#3c0f70","#3f0f73","#430f75","#450f76","#481078","#4b117a","#4e127b","#50127b","#53137d","#56147d","#58157e","#5b167f","#5e177f","#60187f","#631980","#661b80","#691c81","#6b1c81","#6e1e81","#711f81","#722081","#752181","#792282","#7a2382","#7d2482","#802582","#842681","#852781","#882881","#8c2981","#8d2981","#902a81","#942b80","#952c80","#982d80","#9c2e7f","#9f2f7f","#a1307e","#a4317e","#a7327d","#a9327d","#ac337c","#af347b","#b1357b","#b4367a","#b73779","#bb3878","#bc3977","#c03a76","#c33b75","#c43c74","#c83d73","#cb3f72","#cc3f71","#d04170","#d3426e","#d6446d","#d7456c","#da476a","#dd4969","#de4a68","#e14c66","#e44e65","#e55064","#e75263","#e95561","#ec5860","#ed595f","#ef5c5e","#f05f5d","#f1615d","#f3655c","#f4685c","#f56a5c","#f66d5c","#f7715c","#f8755c","#f8775c","#f97a5d","#fa7e5e","#fa805f","#fb8460","#fb8861","#fc8a62","#fc8d63","#fd9165","#fd9567","#fd9768","#fd9b6a","#fe9e6c","#fea06e","#fea470","#fea872","#fea974","#fead76","#feb179","#feb57c","#feb67d","#feba80","#febe83","#fec085","#fec388","#fec78b","#fec98c","#fecc90","#fed093","#fed496","#fed698","#fdd99b","#fddd9f","#fddfa1","#fde2a4","#fde6a8","#fde8aa","#fdecad","#fcefb1","#fcf3b5","#fcf5b7","#fcf8ba","#fcfcbe"],
7
+ "plasma": ["#0f0787","#15078a","#1a068c","#1c068d","#21068f","#250591","#290593","#2b0594","#2f0595","#320597","#340598","#380499","#3b049b","#3d049b","#40049d","#43039e","#47039f","#4803a0","#4c03a1","#4f02a2","#5102a2","#5402a3","#5701a4","#5801a5","#5c01a5","#5f01a6","#6200a7","#6400a7","#6700a7","#6a00a8","#6b00a8","#6e00a8","#7100a8","#7301a8","#7601a8","#7902a8","#7c02a8","#7d03a8","#8004a7","#8305a7","#8506a7","#8808a6","#8b09a5","#8c0aa5","#8f0da4","#920fa3","#9411a2","#9612a1","#9814a0","#9b169e","#9c189e","#9f1a9c","#a21c9b","#a31d9a","#a51f98","#a82297","#aa2495","#ab2594","#ae2792","#b02a90","#b12b8f","#b42d8e","#b62f8c","#b7308b","#b93389","#bb3587","#bd3785","#be3884","#c03a82","#c23d81","#c33e80","#c5407e","#c7427c","#c8437b","#ca4679","#cc4877","#ce4a75","#cf4b75","#d14e73","#d25071","#d35170","#d5536e","#d7566d","#d8576c","#d9596a","#db5b68","#dc5e66","#dd5f66","#df6164","#e06462","#e16561","#e36760","#e4695e","#e56b5d","#e66d5b","#e86f5a","#e97258","#ea7357","#eb7655","#ec7854","#ed7953","#ee7c51","#ef7e4f","#f0804e","#f1824d","#f2854b","#f38749","#f48948","#f58b47","#f68e45","#f68f44","#f79242","#f89541","#f89640","#f9993e","#fa9c3c","#fb9e3b","#fba03a","#fba338","#fca636","#fca735","#fdaa34","#fdad32","#fdae31","#fdb130","#fdb42e","#feb82d","#feb92c","#febc2b","#febf29","#fdc129","#fdc428","#fdc727","#fdc926","#fccc26","#fccf25","#fbd325","#fbd424","#fad724","#fadb24","#f9dc24","#f8e025","#f7e325","#f7e526","#f6e826","#f4ec27","#f3ef27","#f2f127","#f1f426","#f0f823"],
8
+ "turbo": ["#31143f","#331a4e","#36205c","#372263","#392870","#3b2e7c","#3d3489","#3d378e","#3f3c9a","#4042a4","#4145a9","#424ab3","#434fbc","#4452c1","#4558c9","#455dd1","#4662d8","#4665db","#466ae2","#476fe8","#4772ea","#4777ef","#467cf3","#467ff5","#4684f9","#4589fc","#448dfe","#4390fe","#4195ff","#3f9afe","#3e9dfe","#3ba2fd","#37a7fa","#36a9f9","#32aef6","#2fb3f3","#2bb8ef","#29baec","#26bfe8","#23c4e3","#21c6e1","#1ecadb","#1cced6","#1bd1d4","#19d5ce","#18d8c9","#18dcc4","#18dec1","#18e1bc","#1ae4b7","#1be5b5","#1ee8b0","#21eaab","#24eca8","#28eea2","#2ef09c","#34f396","#37f493","#3ef58c","#45f785","#48f882","#50f97b","#57fb74","#5bfb71","#63fc6a","#6bfd64","#73fe5e","#77fe5b","#7fff55","#86ff4f","#8aff4d","#91ff48","#97fe43","#9afe41","#a0fd3e","#a5fc3b","#abfb39","#adfa38","#b3f836","#b8f735","#baf534","#c0f334","#c5f134","#c7ef34","#ccec34","#d1e935","#d5e635","#d8e536","#dce136","#e0de37","#e2dc38","#e6d838","#ead439","#ebd239","#efce3a","#f2ca3a","#f4c63a","#f6c43a","#f8c03a","#f9bb39","#fab938","#fcb537","#fdb035","#fdad34","#fea832","#fea330","#fe9d2e","#fe9a2d","#fe942a","#fd8e28","#fd8b27","#fc8524","#fb7f21","#fa7c20","#f9761d","#f8701b","#f66a18","#f56717","#f36215","#f05c12","#ef5911","#ed540f","#ea4f0e","#e94d0d","#e6480b","#e3440a","#e04009","#de3e08","#db3a07","#d73606","#d53406","#d13005","#cd2c04","#cb2b04","#c62703","#c22403","#bd2102","#bb1f02","#b61c02","#b01901","#ae1801","#a81501","#a21201","#9f1101","#990e01","#930c01","#8d0a02","#8a0902","#830702","#7c0503"],
9
+ "viridis": ["#440255","#450458","#46075b","#46095c","#470c5f","#470f62","#471265","#481366","#481669","#48196b","#481a6c","#481d6f","#481f71","#482172","#482374","#482676","#482878","#482a79","#472c7b","#472f7d","#47307d","#46327f","#453580","#453681","#453882","#443b83","#433d85","#433e85","#424186","#414387","#414487","#404788","#3f4989","#3e4a89","#3d4c8a","#3c4e8a","#3b518b","#3b528b","#3a548b","#39568c","#38578c","#37598c","#365b8d","#365c8d","#355e8d","#34608d","#33628d","#33638d","#32658e","#31678e","#30688e","#306a8e","#2f6c8e","#2e6d8e","#2d6f8e","#2d718e","#2c738e","#2b748e","#2b768e","#2a788e","#2a798e","#297a8e","#287c8e","#287d8e","#277f8e","#26818e","#25838e","#25848e","#24868e","#24888e","#23898e","#238a8d","#228c8d","#228d8d","#218f8d","#20918c","#20938c","#20948c","#1f968b","#1f988b","#1f998a","#1e9a8a","#1e9c89","#1e9d89","#1f9f88","#1fa187","#20a387","#20a486","#21a685","#22a784","#23a884","#24aa83","#26ac81","#27ad81","#29af80","#2bb17e","#2db27d","#2fb37c","#31b57b","#34b779","#36b878","#39b976","#3cbb75","#3ebc74","#41be72","#45bf70","#49c16e","#4bc26d","#4fc36b","#53c568","#55c667","#59c765","#5dc962","#5fca61","#64cb5e","#68cc5c","#6dce59","#6fce58","#74d055","#79d152","#7bd250","#80d34d","#85d44a","#87d549","#8cd645","#91d742","#97d83f","#99d93d","#9eda3a","#a4db36","#a6db35","#acdc31","#b1dd2e","#b4dd2c","#b9de29","#bedf25","#c4e022","#c6e021","#cce11e","#d1e11c","#d4e21b","#d9e219","#dee318","#e1e318","#e6e419","#ebe51a","#f0e51c","#f2e61d","#f7e620","#fce724"],
10
+ "Accent": ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],
11
+ "Dark2": ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],
12
+ "Paired": ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00"],
13
+ "Pastel1": ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],
14
+ "Pastel2": ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],
15
+ "Set1": ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"],
16
+ "Set2": ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],
17
+ "Set3": ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5"],
18
+ "Blues": ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
19
+ "Greens": ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
20
+ "Oranges": ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
21
+ "Reds": ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
22
+ "Purples": ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
23
+ "BuGn": ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
24
+ "BuPu": ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
25
+ "GnBu": ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
26
+ "OrRd": ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
27
+ "PuBuGn": ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
28
+ "YlGn": ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
29
+ "Spectral": ["#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd"],
30
+ "RdYlBu": ["#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4"],
31
+ "PiYG": ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
32
+ "PRGn": ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
33
+ "RdYlGn": ["#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
34
+ "RdGy": ["#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d"],
35
+ "RdBu": ["#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
36
+ "BrBG": ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e"],
37
+ "PuOr": ["#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788"]
38
+ };