Skip to content

Instantly share code, notes, and snippets.

@guykr
Last active April 15, 2018 13:48
Show Gist options
  • Select an option

  • Save guykr/f21a02f2c83c927c2913 to your computer and use it in GitHub Desktop.

Select an option

Save guykr/f21a02f2c83c927c2913 to your computer and use it in GitHub Desktop.
d3 grouping and filtering
/* This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/). */
.YlGn .q0-3{fill:rgb(247,252,185)}
.YlGn .q1-3{fill:rgb(173,221,142)}
.YlGn .q2-3{fill:rgb(49,163,84)}
.YlGn .q0-4{fill:rgb(255,255,204)}
.YlGn .q1-4{fill:rgb(194,230,153)}
.YlGn .q2-4{fill:rgb(120,198,121)}
.YlGn .q3-4{fill:rgb(35,132,67)}
.YlGn .q0-5{fill:rgb(255,255,204)}
.YlGn .q1-5{fill:rgb(194,230,153)}
.YlGn .q2-5{fill:rgb(120,198,121)}
.YlGn .q3-5{fill:rgb(49,163,84)}
.YlGn .q4-5{fill:rgb(0,104,55)}
.YlGn .q0-6{fill:rgb(255,255,204)}
.YlGn .q1-6{fill:rgb(217,240,163)}
.YlGn .q2-6{fill:rgb(173,221,142)}
.YlGn .q3-6{fill:rgb(120,198,121)}
.YlGn .q4-6{fill:rgb(49,163,84)}
.YlGn .q5-6{fill:rgb(0,104,55)}
.YlGn .q0-7{fill:rgb(255,255,204)}
.YlGn .q1-7{fill:rgb(217,240,163)}
.YlGn .q2-7{fill:rgb(173,221,142)}
.YlGn .q3-7{fill:rgb(120,198,121)}
.YlGn .q4-7{fill:rgb(65,171,93)}
.YlGn .q5-7{fill:rgb(35,132,67)}
.YlGn .q6-7{fill:rgb(0,90,50)}
.YlGn .q0-8{fill:rgb(255,255,229)}
.YlGn .q1-8{fill:rgb(247,252,185)}
.YlGn .q2-8{fill:rgb(217,240,163)}
.YlGn .q3-8{fill:rgb(173,221,142)}
.YlGn .q4-8{fill:rgb(120,198,121)}
.YlGn .q5-8{fill:rgb(65,171,93)}
.YlGn .q6-8{fill:rgb(35,132,67)}
.YlGn .q7-8{fill:rgb(0,90,50)}
.YlGn .q0-9{fill:rgb(255,255,229)}
.YlGn .q1-9{fill:rgb(247,252,185)}
.YlGn .q2-9{fill:rgb(217,240,163)}
.YlGn .q3-9{fill:rgb(173,221,142)}
.YlGn .q4-9{fill:rgb(120,198,121)}
.YlGn .q5-9{fill:rgb(65,171,93)}
.YlGn .q6-9{fill:rgb(35,132,67)}
.YlGn .q7-9{fill:rgb(0,104,55)}
.YlGn .q8-9{fill:rgb(0,69,41)}
.YlGnBu .q0-3{fill:rgb(237,248,177)}
.YlGnBu .q1-3{fill:rgb(127,205,187)}
.YlGnBu .q2-3{fill:rgb(44,127,184)}
.YlGnBu .q0-4{fill:rgb(255,255,204)}
.YlGnBu .q1-4{fill:rgb(161,218,180)}
.YlGnBu .q2-4{fill:rgb(65,182,196)}
.YlGnBu .q3-4{fill:rgb(34,94,168)}
.YlGnBu .q0-5{fill:rgb(255,255,204)}
.YlGnBu .q1-5{fill:rgb(161,218,180)}
.YlGnBu .q2-5{fill:rgb(65,182,196)}
.YlGnBu .q3-5{fill:rgb(44,127,184)}
.YlGnBu .q4-5{fill:rgb(37,52,148)}
.YlGnBu .q0-6{fill:rgb(255,255,204)}
.YlGnBu .q1-6{fill:rgb(199,233,180)}
.YlGnBu .q2-6{fill:rgb(127,205,187)}
.YlGnBu .q3-6{fill:rgb(65,182,196)}
.YlGnBu .q4-6{fill:rgb(44,127,184)}
.YlGnBu .q5-6{fill:rgb(37,52,148)}
.YlGnBu .q0-7{fill:rgb(255,255,204)}
.YlGnBu .q1-7{fill:rgb(199,233,180)}
.YlGnBu .q2-7{fill:rgb(127,205,187)}
.YlGnBu .q3-7{fill:rgb(65,182,196)}
.YlGnBu .q4-7{fill:rgb(29,145,192)}
.YlGnBu .q5-7{fill:rgb(34,94,168)}
.YlGnBu .q6-7{fill:rgb(12,44,132)}
.YlGnBu .q0-8{fill:rgb(255,255,217)}
.YlGnBu .q1-8{fill:rgb(237,248,177)}
.YlGnBu .q2-8{fill:rgb(199,233,180)}
.YlGnBu .q3-8{fill:rgb(127,205,187)}
.YlGnBu .q4-8{fill:rgb(65,182,196)}
.YlGnBu .q5-8{fill:rgb(29,145,192)}
.YlGnBu .q6-8{fill:rgb(34,94,168)}
.YlGnBu .q7-8{fill:rgb(12,44,132)}
.YlGnBu .q0-9{fill:rgb(255,255,217)}
.YlGnBu .q1-9{fill:rgb(237,248,177)}
.YlGnBu .q2-9{fill:rgb(199,233,180)}
.YlGnBu .q3-9{fill:rgb(127,205,187)}
.YlGnBu .q4-9{fill:rgb(65,182,196)}
.YlGnBu .q5-9{fill:rgb(29,145,192)}
.YlGnBu .q6-9{fill:rgb(34,94,168)}
.YlGnBu .q7-9{fill:rgb(37,52,148)}
.YlGnBu .q8-9{fill:rgb(8,29,88)}
.GnBu .q0-3{fill:rgb(224,243,219)}
.GnBu .q1-3{fill:rgb(168,221,181)}
.GnBu .q2-3{fill:rgb(67,162,202)}
.GnBu .q0-4{fill:rgb(240,249,232)}
.GnBu .q1-4{fill:rgb(186,228,188)}
.GnBu .q2-4{fill:rgb(123,204,196)}
.GnBu .q3-4{fill:rgb(43,140,190)}
.GnBu .q0-5{fill:rgb(240,249,232)}
.GnBu .q1-5{fill:rgb(186,228,188)}
.GnBu .q2-5{fill:rgb(123,204,196)}
.GnBu .q3-5{fill:rgb(67,162,202)}
.GnBu .q4-5{fill:rgb(8,104,172)}
.GnBu .q0-6{fill:rgb(240,249,232)}
.GnBu .q1-6{fill:rgb(204,235,197)}
.GnBu .q2-6{fill:rgb(168,221,181)}
.GnBu .q3-6{fill:rgb(123,204,196)}
.GnBu .q4-6{fill:rgb(67,162,202)}
.GnBu .q5-6{fill:rgb(8,104,172)}
.GnBu .q0-7{fill:rgb(240,249,232)}
.GnBu .q1-7{fill:rgb(204,235,197)}
.GnBu .q2-7{fill:rgb(168,221,181)}
.GnBu .q3-7{fill:rgb(123,204,196)}
.GnBu .q4-7{fill:rgb(78,179,211)}
.GnBu .q5-7{fill:rgb(43,140,190)}
.GnBu .q6-7{fill:rgb(8,88,158)}
.GnBu .q0-8{fill:rgb(247,252,240)}
.GnBu .q1-8{fill:rgb(224,243,219)}
.GnBu .q2-8{fill:rgb(204,235,197)}
.GnBu .q3-8{fill:rgb(168,221,181)}
.GnBu .q4-8{fill:rgb(123,204,196)}
.GnBu .q5-8{fill:rgb(78,179,211)}
.GnBu .q6-8{fill:rgb(43,140,190)}
.GnBu .q7-8{fill:rgb(8,88,158)}
.GnBu .q0-9{fill:rgb(247,252,240)}
.GnBu .q1-9{fill:rgb(224,243,219)}
.GnBu .q2-9{fill:rgb(204,235,197)}
.GnBu .q3-9{fill:rgb(168,221,181)}
.GnBu .q4-9{fill:rgb(123,204,196)}
.GnBu .q5-9{fill:rgb(78,179,211)}
.GnBu .q6-9{fill:rgb(43,140,190)}
.GnBu .q7-9{fill:rgb(8,104,172)}
.GnBu .q8-9{fill:rgb(8,64,129)}
.BuGn .q0-3{fill:rgb(229,245,249)}
.BuGn .q1-3{fill:rgb(153,216,201)}
.BuGn .q2-3{fill:rgb(44,162,95)}
.BuGn .q0-4{fill:rgb(237,248,251)}
.BuGn .q1-4{fill:rgb(178,226,226)}
.BuGn .q2-4{fill:rgb(102,194,164)}
.BuGn .q3-4{fill:rgb(35,139,69)}
.BuGn .q0-5{fill:rgb(237,248,251)}
.BuGn .q1-5{fill:rgb(178,226,226)}
.BuGn .q2-5{fill:rgb(102,194,164)}
.BuGn .q3-5{fill:rgb(44,162,95)}
.BuGn .q4-5{fill:rgb(0,109,44)}
.BuGn .q0-6{fill:rgb(237,248,251)}
.BuGn .q1-6{fill:rgb(204,236,230)}
.BuGn .q2-6{fill:rgb(153,216,201)}
.BuGn .q3-6{fill:rgb(102,194,164)}
.BuGn .q4-6{fill:rgb(44,162,95)}
.BuGn .q5-6{fill:rgb(0,109,44)}
.BuGn .q0-7{fill:rgb(237,248,251)}
.BuGn .q1-7{fill:rgb(204,236,230)}
.BuGn .q2-7{fill:rgb(153,216,201)}
.BuGn .q3-7{fill:rgb(102,194,164)}
.BuGn .q4-7{fill:rgb(65,174,118)}
.BuGn .q5-7{fill:rgb(35,139,69)}
.BuGn .q6-7{fill:rgb(0,88,36)}
.BuGn .q0-8{fill:rgb(247,252,253)}
.BuGn .q1-8{fill:rgb(229,245,249)}
.BuGn .q2-8{fill:rgb(204,236,230)}
.BuGn .q3-8{fill:rgb(153,216,201)}
.BuGn .q4-8{fill:rgb(102,194,164)}
.BuGn .q5-8{fill:rgb(65,174,118)}
.BuGn .q6-8{fill:rgb(35,139,69)}
.BuGn .q7-8{fill:rgb(0,88,36)}
.BuGn .q0-9{fill:rgb(247,252,253)}
.BuGn .q1-9{fill:rgb(229,245,249)}
.BuGn .q2-9{fill:rgb(204,236,230)}
.BuGn .q3-9{fill:rgb(153,216,201)}
.BuGn .q4-9{fill:rgb(102,194,164)}
.BuGn .q5-9{fill:rgb(65,174,118)}
.BuGn .q6-9{fill:rgb(35,139,69)}
.BuGn .q7-9{fill:rgb(0,109,44)}
.BuGn .q8-9{fill:rgb(0,68,27)}
.PuBuGn .q0-3{fill:rgb(236,226,240)}
.PuBuGn .q1-3{fill:rgb(166,189,219)}
.PuBuGn .q2-3{fill:rgb(28,144,153)}
.PuBuGn .q0-4{fill:rgb(246,239,247)}
.PuBuGn .q1-4{fill:rgb(189,201,225)}
.PuBuGn .q2-4{fill:rgb(103,169,207)}
.PuBuGn .q3-4{fill:rgb(2,129,138)}
.PuBuGn .q0-5{fill:rgb(246,239,247)}
.PuBuGn .q1-5{fill:rgb(189,201,225)}
.PuBuGn .q2-5{fill:rgb(103,169,207)}
.PuBuGn .q3-5{fill:rgb(28,144,153)}
.PuBuGn .q4-5{fill:rgb(1,108,89)}
.PuBuGn .q0-6{fill:rgb(246,239,247)}
.PuBuGn .q1-6{fill:rgb(208,209,230)}
.PuBuGn .q2-6{fill:rgb(166,189,219)}
.PuBuGn .q3-6{fill:rgb(103,169,207)}
.PuBuGn .q4-6{fill:rgb(28,144,153)}
.PuBuGn .q5-6{fill:rgb(1,108,89)}
.PuBuGn .q0-7{fill:rgb(246,239,247)}
.PuBuGn .q1-7{fill:rgb(208,209,230)}
.PuBuGn .q2-7{fill:rgb(166,189,219)}
.PuBuGn .q3-7{fill:rgb(103,169,207)}
.PuBuGn .q4-7{fill:rgb(54,144,192)}
.PuBuGn .q5-7{fill:rgb(2,129,138)}
.PuBuGn .q6-7{fill:rgb(1,100,80)}
.PuBuGn .q0-8{fill:rgb(255,247,251)}
.PuBuGn .q1-8{fill:rgb(236,226,240)}
.PuBuGn .q2-8{fill:rgb(208,209,230)}
.PuBuGn .q3-8{fill:rgb(166,189,219)}
.PuBuGn .q4-8{fill:rgb(103,169,207)}
.PuBuGn .q5-8{fill:rgb(54,144,192)}
.PuBuGn .q6-8{fill:rgb(2,129,138)}
.PuBuGn .q7-8{fill:rgb(1,100,80)}
.PuBuGn .q0-9{fill:rgb(255,247,251)}
.PuBuGn .q1-9{fill:rgb(236,226,240)}
.PuBuGn .q2-9{fill:rgb(208,209,230)}
.PuBuGn .q3-9{fill:rgb(166,189,219)}
.PuBuGn .q4-9{fill:rgb(103,169,207)}
.PuBuGn .q5-9{fill:rgb(54,144,192)}
.PuBuGn .q6-9{fill:rgb(2,129,138)}
.PuBuGn .q7-9{fill:rgb(1,108,89)}
.PuBuGn .q8-9{fill:rgb(1,70,54)}
.PuBu .q0-3{fill:rgb(236,231,242)}
.PuBu .q1-3{fill:rgb(166,189,219)}
.PuBu .q2-3{fill:rgb(43,140,190)}
.PuBu .q0-4{fill:rgb(241,238,246)}
.PuBu .q1-4{fill:rgb(189,201,225)}
.PuBu .q2-4{fill:rgb(116,169,207)}
.PuBu .q3-4{fill:rgb(5,112,176)}
.PuBu .q0-5{fill:rgb(241,238,246)}
.PuBu .q1-5{fill:rgb(189,201,225)}
.PuBu .q2-5{fill:rgb(116,169,207)}
.PuBu .q3-5{fill:rgb(43,140,190)}
.PuBu .q4-5{fill:rgb(4,90,141)}
.PuBu .q0-6{fill:rgb(241,238,246)}
.PuBu .q1-6{fill:rgb(208,209,230)}
.PuBu .q2-6{fill:rgb(166,189,219)}
.PuBu .q3-6{fill:rgb(116,169,207)}
.PuBu .q4-6{fill:rgb(43,140,190)}
.PuBu .q5-6{fill:rgb(4,90,141)}
.PuBu .q0-7{fill:rgb(241,238,246)}
.PuBu .q1-7{fill:rgb(208,209,230)}
.PuBu .q2-7{fill:rgb(166,189,219)}
.PuBu .q3-7{fill:rgb(116,169,207)}
.PuBu .q4-7{fill:rgb(54,144,192)}
.PuBu .q5-7{fill:rgb(5,112,176)}
.PuBu .q6-7{fill:rgb(3,78,123)}
.PuBu .q0-8{fill:rgb(255,247,251)}
.PuBu .q1-8{fill:rgb(236,231,242)}
.PuBu .q2-8{fill:rgb(208,209,230)}
.PuBu .q3-8{fill:rgb(166,189,219)}
.PuBu .q4-8{fill:rgb(116,169,207)}
.PuBu .q5-8{fill:rgb(54,144,192)}
.PuBu .q6-8{fill:rgb(5,112,176)}
.PuBu .q7-8{fill:rgb(3,78,123)}
.PuBu .q0-9{fill:rgb(255,247,251)}
.PuBu .q1-9{fill:rgb(236,231,242)}
.PuBu .q2-9{fill:rgb(208,209,230)}
.PuBu .q3-9{fill:rgb(166,189,219)}
.PuBu .q4-9{fill:rgb(116,169,207)}
.PuBu .q5-9{fill:rgb(54,144,192)}
.PuBu .q6-9{fill:rgb(5,112,176)}
.PuBu .q7-9{fill:rgb(4,90,141)}
.PuBu .q8-9{fill:rgb(2,56,88)}
.BuPu .q0-3{fill:rgb(224,236,244)}
.BuPu .q1-3{fill:rgb(158,188,218)}
.BuPu .q2-3{fill:rgb(136,86,167)}
.BuPu .q0-4{fill:rgb(237,248,251)}
.BuPu .q1-4{fill:rgb(179,205,227)}
.BuPu .q2-4{fill:rgb(140,150,198)}
.BuPu .q3-4{fill:rgb(136,65,157)}
.BuPu .q0-5{fill:rgb(237,248,251)}
.BuPu .q1-5{fill:rgb(179,205,227)}
.BuPu .q2-5{fill:rgb(140,150,198)}
.BuPu .q3-5{fill:rgb(136,86,167)}
.BuPu .q4-5{fill:rgb(129,15,124)}
.BuPu .q0-6{fill:rgb(237,248,251)}
.BuPu .q1-6{fill:rgb(191,211,230)}
.BuPu .q2-6{fill:rgb(158,188,218)}
.BuPu .q3-6{fill:rgb(140,150,198)}
.BuPu .q4-6{fill:rgb(136,86,167)}
.BuPu .q5-6{fill:rgb(129,15,124)}
.BuPu .q0-7{fill:rgb(237,248,251)}
.BuPu .q1-7{fill:rgb(191,211,230)}
.BuPu .q2-7{fill:rgb(158,188,218)}
.BuPu .q3-7{fill:rgb(140,150,198)}
.BuPu .q4-7{fill:rgb(140,107,177)}
.BuPu .q5-7{fill:rgb(136,65,157)}
.BuPu .q6-7{fill:rgb(110,1,107)}
.BuPu .q0-8{fill:rgb(247,252,253)}
.BuPu .q1-8{fill:rgb(224,236,244)}
.BuPu .q2-8{fill:rgb(191,211,230)}
.BuPu .q3-8{fill:rgb(158,188,218)}
.BuPu .q4-8{fill:rgb(140,150,198)}
.BuPu .q5-8{fill:rgb(140,107,177)}
.BuPu .q6-8{fill:rgb(136,65,157)}
.BuPu .q7-8{fill:rgb(110,1,107)}
.BuPu .q0-9{fill:rgb(247,252,253)}
.BuPu .q1-9{fill:rgb(224,236,244)}
.BuPu .q2-9{fill:rgb(191,211,230)}
.BuPu .q3-9{fill:rgb(158,188,218)}
.BuPu .q4-9{fill:rgb(140,150,198)}
.BuPu .q5-9{fill:rgb(140,107,177)}
.BuPu .q6-9{fill:rgb(136,65,157)}
.BuPu .q7-9{fill:rgb(129,15,124)}
.BuPu .q8-9{fill:rgb(77,0,75)}
.RdPu .q0-3{fill:rgb(253,224,221)}
.RdPu .q1-3{fill:rgb(250,159,181)}
.RdPu .q2-3{fill:rgb(197,27,138)}
.RdPu .q0-4{fill:rgb(254,235,226)}
.RdPu .q1-4{fill:rgb(251,180,185)}
.RdPu .q2-4{fill:rgb(247,104,161)}
.RdPu .q3-4{fill:rgb(174,1,126)}
.RdPu .q0-5{fill:rgb(254,235,226)}
.RdPu .q1-5{fill:rgb(251,180,185)}
.RdPu .q2-5{fill:rgb(247,104,161)}
.RdPu .q3-5{fill:rgb(197,27,138)}
.RdPu .q4-5{fill:rgb(122,1,119)}
.RdPu .q0-6{fill:rgb(254,235,226)}
.RdPu .q1-6{fill:rgb(252,197,192)}
.RdPu .q2-6{fill:rgb(250,159,181)}
.RdPu .q3-6{fill:rgb(247,104,161)}
.RdPu .q4-6{fill:rgb(197,27,138)}
.RdPu .q5-6{fill:rgb(122,1,119)}
.RdPu .q0-7{fill:rgb(254,235,226)}
.RdPu .q1-7{fill:rgb(252,197,192)}
.RdPu .q2-7{fill:rgb(250,159,181)}
.RdPu .q3-7{fill:rgb(247,104,161)}
.RdPu .q4-7{fill:rgb(221,52,151)}
.RdPu .q5-7{fill:rgb(174,1,126)}
.RdPu .q6-7{fill:rgb(122,1,119)}
.RdPu .q0-8{fill:rgb(255,247,243)}
.RdPu .q1-8{fill:rgb(253,224,221)}
.RdPu .q2-8{fill:rgb(252,197,192)}
.RdPu .q3-8{fill:rgb(250,159,181)}
.RdPu .q4-8{fill:rgb(247,104,161)}
.RdPu .q5-8{fill:rgb(221,52,151)}
.RdPu .q6-8{fill:rgb(174,1,126)}
.RdPu .q7-8{fill:rgb(122,1,119)}
.RdPu .q0-9{fill:rgb(255,247,243)}
.RdPu .q1-9{fill:rgb(253,224,221)}
.RdPu .q2-9{fill:rgb(252,197,192)}
.RdPu .q3-9{fill:rgb(250,159,181)}
.RdPu .q4-9{fill:rgb(247,104,161)}
.RdPu .q5-9{fill:rgb(221,52,151)}
.RdPu .q6-9{fill:rgb(174,1,126)}
.RdPu .q7-9{fill:rgb(122,1,119)}
.RdPu .q8-9{fill:rgb(73,0,106)}
.PuRd .q0-3{fill:rgb(231,225,239)}
.PuRd .q1-3{fill:rgb(201,148,199)}
.PuRd .q2-3{fill:rgb(221,28,119)}
.PuRd .q0-4{fill:rgb(241,238,246)}
.PuRd .q1-4{fill:rgb(215,181,216)}
.PuRd .q2-4{fill:rgb(223,101,176)}
.PuRd .q3-4{fill:rgb(206,18,86)}
.PuRd .q0-5{fill:rgb(241,238,246)}
.PuRd .q1-5{fill:rgb(215,181,216)}
.PuRd .q2-5{fill:rgb(223,101,176)}
.PuRd .q3-5{fill:rgb(221,28,119)}
.PuRd .q4-5{fill:rgb(152,0,67)}
.PuRd .q0-6{fill:rgb(241,238,246)}
.PuRd .q1-6{fill:rgb(212,185,218)}
.PuRd .q2-6{fill:rgb(201,148,199)}
.PuRd .q3-6{fill:rgb(223,101,176)}
.PuRd .q4-6{fill:rgb(221,28,119)}
.PuRd .q5-6{fill:rgb(152,0,67)}
.PuRd .q0-7{fill:rgb(241,238,246)}
.PuRd .q1-7{fill:rgb(212,185,218)}
.PuRd .q2-7{fill:rgb(201,148,199)}
.PuRd .q3-7{fill:rgb(223,101,176)}
.PuRd .q4-7{fill:rgb(231,41,138)}
.PuRd .q5-7{fill:rgb(206,18,86)}
.PuRd .q6-7{fill:rgb(145,0,63)}
.PuRd .q0-8{fill:rgb(247,244,249)}
.PuRd .q1-8{fill:rgb(231,225,239)}
.PuRd .q2-8{fill:rgb(212,185,218)}
.PuRd .q3-8{fill:rgb(201,148,199)}
.PuRd .q4-8{fill:rgb(223,101,176)}
.PuRd .q5-8{fill:rgb(231,41,138)}
.PuRd .q6-8{fill:rgb(206,18,86)}
.PuRd .q7-8{fill:rgb(145,0,63)}
.PuRd .q0-9{fill:rgb(247,244,249)}
.PuRd .q1-9{fill:rgb(231,225,239)}
.PuRd .q2-9{fill:rgb(212,185,218)}
.PuRd .q3-9{fill:rgb(201,148,199)}
.PuRd .q4-9{fill:rgb(223,101,176)}
.PuRd .q5-9{fill:rgb(231,41,138)}
.PuRd .q6-9{fill:rgb(206,18,86)}
.PuRd .q7-9{fill:rgb(152,0,67)}
.PuRd .q8-9{fill:rgb(103,0,31)}
.OrRd .q0-3{fill:rgb(254,232,200)}
.OrRd .q1-3{fill:rgb(253,187,132)}
.OrRd .q2-3{fill:rgb(227,74,51)}
.OrRd .q0-4{fill:rgb(254,240,217)}
.OrRd .q1-4{fill:rgb(253,204,138)}
.OrRd .q2-4{fill:rgb(252,141,89)}
.OrRd .q3-4{fill:rgb(215,48,31)}
.OrRd .q0-5{fill:rgb(254,240,217)}
.OrRd .q1-5{fill:rgb(253,204,138)}
.OrRd .q2-5{fill:rgb(252,141,89)}
.OrRd .q3-5{fill:rgb(227,74,51)}
.OrRd .q4-5{fill:rgb(179,0,0)}
.OrRd .q0-6{fill:rgb(254,240,217)}
.OrRd .q1-6{fill:rgb(253,212,158)}
.OrRd .q2-6{fill:rgb(253,187,132)}
.OrRd .q3-6{fill:rgb(252,141,89)}
.OrRd .q4-6{fill:rgb(227,74,51)}
.OrRd .q5-6{fill:rgb(179,0,0)}
.OrRd .q0-7{fill:rgb(254,240,217)}
.OrRd .q1-7{fill:rgb(253,212,158)}
.OrRd .q2-7{fill:rgb(253,187,132)}
.OrRd .q3-7{fill:rgb(252,141,89)}
.OrRd .q4-7{fill:rgb(239,101,72)}
.OrRd .q5-7{fill:rgb(215,48,31)}
.OrRd .q6-7{fill:rgb(153,0,0)}
.OrRd .q0-8{fill:rgb(255,247,236)}
.OrRd .q1-8{fill:rgb(254,232,200)}
.OrRd .q2-8{fill:rgb(253,212,158)}
.OrRd .q3-8{fill:rgb(253,187,132)}
.OrRd .q4-8{fill:rgb(252,141,89)}
.OrRd .q5-8{fill:rgb(239,101,72)}
.OrRd .q6-8{fill:rgb(215,48,31)}
.OrRd .q7-8{fill:rgb(153,0,0)}
.OrRd .q0-9{fill:rgb(255,247,236)}
.OrRd .q1-9{fill:rgb(254,232,200)}
.OrRd .q2-9{fill:rgb(253,212,158)}
.OrRd .q3-9{fill:rgb(253,187,132)}
.OrRd .q4-9{fill:rgb(252,141,89)}
.OrRd .q5-9{fill:rgb(239,101,72)}
.OrRd .q6-9{fill:rgb(215,48,31)}
.OrRd .q7-9{fill:rgb(179,0,0)}
.OrRd .q8-9{fill:rgb(127,0,0)}
.YlOrRd .q0-3{fill:rgb(255,237,160)}
.YlOrRd .q1-3{fill:rgb(254,178,76)}
.YlOrRd .q2-3{fill:rgb(240,59,32)}
.YlOrRd .q0-4{fill:rgb(255,255,178)}
.YlOrRd .q1-4{fill:rgb(254,204,92)}
.YlOrRd .q2-4{fill:rgb(253,141,60)}
.YlOrRd .q3-4{fill:rgb(227,26,28)}
.YlOrRd .q0-5{fill:rgb(255,255,178)}
.YlOrRd .q1-5{fill:rgb(254,204,92)}
.YlOrRd .q2-5{fill:rgb(253,141,60)}
.YlOrRd .q3-5{fill:rgb(240,59,32)}
.YlOrRd .q4-5{fill:rgb(189,0,38)}
.YlOrRd .q0-6{fill:rgb(255,255,178)}
.YlOrRd .q1-6{fill:rgb(254,217,118)}
.YlOrRd .q2-6{fill:rgb(254,178,76)}
.YlOrRd .q3-6{fill:rgb(253,141,60)}
.YlOrRd .q4-6{fill:rgb(240,59,32)}
.YlOrRd .q5-6{fill:rgb(189,0,38)}
.YlOrRd .q0-7{fill:rgb(255,255,178)}
.YlOrRd .q1-7{fill:rgb(254,217,118)}
.YlOrRd .q2-7{fill:rgb(254,178,76)}
.YlOrRd .q3-7{fill:rgb(253,141,60)}
.YlOrRd .q4-7{fill:rgb(252,78,42)}
.YlOrRd .q5-7{fill:rgb(227,26,28)}
.YlOrRd .q6-7{fill:rgb(177,0,38)}
.YlOrRd .q0-8{fill:rgb(255,255,204)}
.YlOrRd .q1-8{fill:rgb(255,237,160)}
.YlOrRd .q2-8{fill:rgb(254,217,118)}
.YlOrRd .q3-8{fill:rgb(254,178,76)}
.YlOrRd .q4-8{fill:rgb(253,141,60)}
.YlOrRd .q5-8{fill:rgb(252,78,42)}
.YlOrRd .q6-8{fill:rgb(227,26,28)}
.YlOrRd .q7-8{fill:rgb(177,0,38)}
.YlOrRd .q0-9{fill:rgb(255,255,204)}
.YlOrRd .q1-9{fill:rgb(255,237,160)}
.YlOrRd .q2-9{fill:rgb(254,217,118)}
.YlOrRd .q3-9{fill:rgb(254,178,76)}
.YlOrRd .q4-9{fill:rgb(253,141,60)}
.YlOrRd .q5-9{fill:rgb(252,78,42)}
.YlOrRd .q6-9{fill:rgb(227,26,28)}
.YlOrRd .q7-9{fill:rgb(189,0,38)}
.YlOrRd .q8-9{fill:rgb(128,0,38)}
.YlOrBr .q0-3{fill:rgb(255,247,188)}
.YlOrBr .q1-3{fill:rgb(254,196,79)}
.YlOrBr .q2-3{fill:rgb(217,95,14)}
.YlOrBr .q0-4{fill:rgb(255,255,212)}
.YlOrBr .q1-4{fill:rgb(254,217,142)}
.YlOrBr .q2-4{fill:rgb(254,153,41)}
.YlOrBr .q3-4{fill:rgb(204,76,2)}
.YlOrBr .q0-5{fill:rgb(255,255,212)}
.YlOrBr .q1-5{fill:rgb(254,217,142)}
.YlOrBr .q2-5{fill:rgb(254,153,41)}
.YlOrBr .q3-5{fill:rgb(217,95,14)}
.YlOrBr .q4-5{fill:rgb(153,52,4)}
.YlOrBr .q0-6{fill:rgb(255,255,212)}
.YlOrBr .q1-6{fill:rgb(254,227,145)}
.YlOrBr .q2-6{fill:rgb(254,196,79)}
.YlOrBr .q3-6{fill:rgb(254,153,41)}
.YlOrBr .q4-6{fill:rgb(217,95,14)}
.YlOrBr .q5-6{fill:rgb(153,52,4)}
.YlOrBr .q0-7{fill:rgb(255,255,212)}
.YlOrBr .q1-7{fill:rgb(254,227,145)}
.YlOrBr .q2-7{fill:rgb(254,196,79)}
.YlOrBr .q3-7{fill:rgb(254,153,41)}
.YlOrBr .q4-7{fill:rgb(236,112,20)}
.YlOrBr .q5-7{fill:rgb(204,76,2)}
.YlOrBr .q6-7{fill:rgb(140,45,4)}
.YlOrBr .q0-8{fill:rgb(255,255,229)}
.YlOrBr .q1-8{fill:rgb(255,247,188)}
.YlOrBr .q2-8{fill:rgb(254,227,145)}
.YlOrBr .q3-8{fill:rgb(254,196,79)}
.YlOrBr .q4-8{fill:rgb(254,153,41)}
.YlOrBr .q5-8{fill:rgb(236,112,20)}
.YlOrBr .q6-8{fill:rgb(204,76,2)}
.YlOrBr .q7-8{fill:rgb(140,45,4)}
.YlOrBr .q0-9{fill:rgb(255,255,229)}
.YlOrBr .q1-9{fill:rgb(255,247,188)}
.YlOrBr .q2-9{fill:rgb(254,227,145)}
.YlOrBr .q3-9{fill:rgb(254,196,79)}
.YlOrBr .q4-9{fill:rgb(254,153,41)}
.YlOrBr .q5-9{fill:rgb(236,112,20)}
.YlOrBr .q6-9{fill:rgb(204,76,2)}
.YlOrBr .q7-9{fill:rgb(153,52,4)}
.YlOrBr .q8-9{fill:rgb(102,37,6)}
.Purples .q0-3{fill:rgb(239,237,245)}
.Purples .q1-3{fill:rgb(188,189,220)}
.Purples .q2-3{fill:rgb(117,107,177)}
.Purples .q0-4{fill:rgb(242,240,247)}
.Purples .q1-4{fill:rgb(203,201,226)}
.Purples .q2-4{fill:rgb(158,154,200)}
.Purples .q3-4{fill:rgb(106,81,163)}
.Purples .q0-5{fill:rgb(242,240,247)}
.Purples .q1-5{fill:rgb(203,201,226)}
.Purples .q2-5{fill:rgb(158,154,200)}
.Purples .q3-5{fill:rgb(117,107,177)}
.Purples .q4-5{fill:rgb(84,39,143)}
.Purples .q0-6{fill:rgb(242,240,247)}
.Purples .q1-6{fill:rgb(218,218,235)}
.Purples .q2-6{fill:rgb(188,189,220)}
.Purples .q3-6{fill:rgb(158,154,200)}
.Purples .q4-6{fill:rgb(117,107,177)}
.Purples .q5-6{fill:rgb(84,39,143)}
.Purples .q0-7{fill:rgb(242,240,247)}
.Purples .q1-7{fill:rgb(218,218,235)}
.Purples .q2-7{fill:rgb(188,189,220)}
.Purples .q3-7{fill:rgb(158,154,200)}
.Purples .q4-7{fill:rgb(128,125,186)}
.Purples .q5-7{fill:rgb(106,81,163)}
.Purples .q6-7{fill:rgb(74,20,134)}
.Purples .q0-8{fill:rgb(252,251,253)}
.Purples .q1-8{fill:rgb(239,237,245)}
.Purples .q2-8{fill:rgb(218,218,235)}
.Purples .q3-8{fill:rgb(188,189,220)}
.Purples .q4-8{fill:rgb(158,154,200)}
.Purples .q5-8{fill:rgb(128,125,186)}
.Purples .q6-8{fill:rgb(106,81,163)}
.Purples .q7-8{fill:rgb(74,20,134)}
.Purples .q0-9{fill:rgb(252,251,253)}
.Purples .q1-9{fill:rgb(239,237,245)}
.Purples .q2-9{fill:rgb(218,218,235)}
.Purples .q3-9{fill:rgb(188,189,220)}
.Purples .q4-9{fill:rgb(158,154,200)}
.Purples .q5-9{fill:rgb(128,125,186)}
.Purples .q6-9{fill:rgb(106,81,163)}
.Purples .q7-9{fill:rgb(84,39,143)}
.Purples .q8-9{fill:rgb(63,0,125)}
.Blues .q0-3{fill:rgb(222,235,247)}
.Blues .q1-3{fill:rgb(158,202,225)}
.Blues .q2-3{fill:rgb(49,130,189)}
.Blues .q0-4{fill:rgb(239,243,255)}
.Blues .q1-4{fill:rgb(189,215,231)}
.Blues .q2-4{fill:rgb(107,174,214)}
.Blues .q3-4{fill:rgb(33,113,181)}
.Blues .q0-5{fill:rgb(239,243,255)}
.Blues .q1-5{fill:rgb(189,215,231)}
.Blues .q2-5{fill:rgb(107,174,214)}
.Blues .q3-5{fill:rgb(49,130,189)}
.Blues .q4-5{fill:rgb(8,81,156)}
.Blues .q0-6{fill:rgb(239,243,255)}
.Blues .q1-6{fill:rgb(198,219,239)}
.Blues .q2-6{fill:rgb(158,202,225)}
.Blues .q3-6{fill:rgb(107,174,214)}
.Blues .q4-6{fill:rgb(49,130,189)}
.Blues .q5-6{fill:rgb(8,81,156)}
.Blues .q0-7{fill:rgb(239,243,255)}
.Blues .q1-7{fill:rgb(198,219,239)}
.Blues .q2-7{fill:rgb(158,202,225)}
.Blues .q3-7{fill:rgb(107,174,214)}
.Blues .q4-7{fill:rgb(66,146,198)}
.Blues .q5-7{fill:rgb(33,113,181)}
.Blues .q6-7{fill:rgb(8,69,148)}
.Blues .q0-8{fill:rgb(247,251,255)}
.Blues .q1-8{fill:rgb(222,235,247)}
.Blues .q2-8{fill:rgb(198,219,239)}
.Blues .q3-8{fill:rgb(158,202,225)}
.Blues .q4-8{fill:rgb(107,174,214)}
.Blues .q5-8{fill:rgb(66,146,198)}
.Blues .q6-8{fill:rgb(33,113,181)}
.Blues .q7-8{fill:rgb(8,69,148)}
.Blues .q0-9{fill:rgb(247,251,255)}
.Blues .q1-9{fill:rgb(222,235,247)}
.Blues .q2-9{fill:rgb(198,219,239)}
.Blues .q3-9{fill:rgb(158,202,225)}
.Blues .q4-9{fill:rgb(107,174,214)}
.Blues .q5-9{fill:rgb(66,146,198)}
.Blues .q6-9{fill:rgb(33,113,181)}
.Blues .q7-9{fill:rgb(8,81,156)}
.Blues .q8-9{fill:rgb(8,48,107)}
.Greens .q0-3{fill:rgb(229,245,224)}
.Greens .q1-3{fill:rgb(161,217,155)}
.Greens .q2-3{fill:rgb(49,163,84)}
.Greens .q0-4{fill:rgb(237,248,233)}
.Greens .q1-4{fill:rgb(186,228,179)}
.Greens .q2-4{fill:rgb(116,196,118)}
.Greens .q3-4{fill:rgb(35,139,69)}
.Greens .q0-5{fill:rgb(237,248,233)}
.Greens .q1-5{fill:rgb(186,228,179)}
.Greens .q2-5{fill:rgb(116,196,118)}
.Greens .q3-5{fill:rgb(49,163,84)}
.Greens .q4-5{fill:rgb(0,109,44)}
.Greens .q0-6{fill:rgb(237,248,233)}
.Greens .q1-6{fill:rgb(199,233,192)}
.Greens .q2-6{fill:rgb(161,217,155)}
.Greens .q3-6{fill:rgb(116,196,118)}
.Greens .q4-6{fill:rgb(49,163,84)}
.Greens .q5-6{fill:rgb(0,109,44)}
.Greens .q0-7{fill:rgb(237,248,233)}
.Greens .q1-7{fill:rgb(199,233,192)}
.Greens .q2-7{fill:rgb(161,217,155)}
.Greens .q3-7{fill:rgb(116,196,118)}
.Greens .q4-7{fill:rgb(65,171,93)}
.Greens .q5-7{fill:rgb(35,139,69)}
.Greens .q6-7{fill:rgb(0,90,50)}
.Greens .q0-8{fill:rgb(247,252,245)}
.Greens .q1-8{fill:rgb(229,245,224)}
.Greens .q2-8{fill:rgb(199,233,192)}
.Greens .q3-8{fill:rgb(161,217,155)}
.Greens .q4-8{fill:rgb(116,196,118)}
.Greens .q5-8{fill:rgb(65,171,93)}
.Greens .q6-8{fill:rgb(35,139,69)}
.Greens .q7-8{fill:rgb(0,90,50)}
.Greens .q0-9{fill:rgb(247,252,245)}
.Greens .q1-9{fill:rgb(229,245,224)}
.Greens .q2-9{fill:rgb(199,233,192)}
.Greens .q3-9{fill:rgb(161,217,155)}
.Greens .q4-9{fill:rgb(116,196,118)}
.Greens .q5-9{fill:rgb(65,171,93)}
.Greens .q6-9{fill:rgb(35,139,69)}
.Greens .q7-9{fill:rgb(0,109,44)}
.Greens .q8-9{fill:rgb(0,68,27)}
.Oranges .q0-3{fill:rgb(254,230,206)}
.Oranges .q1-3{fill:rgb(253,174,107)}
.Oranges .q2-3{fill:rgb(230,85,13)}
.Oranges .q0-4{fill:rgb(254,237,222)}
.Oranges .q1-4{fill:rgb(253,190,133)}
.Oranges .q2-4{fill:rgb(253,141,60)}
.Oranges .q3-4{fill:rgb(217,71,1)}
.Oranges .q0-5{fill:rgb(254,237,222)}
.Oranges .q1-5{fill:rgb(253,190,133)}
.Oranges .q2-5{fill:rgb(253,141,60)}
.Oranges .q3-5{fill:rgb(230,85,13)}
.Oranges .q4-5{fill:rgb(166,54,3)}
.Oranges .q0-6{fill:rgb(254,237,222)}
.Oranges .q1-6{fill:rgb(253,208,162)}
.Oranges .q2-6{fill:rgb(253,174,107)}
.Oranges .q3-6{fill:rgb(253,141,60)}
.Oranges .q4-6{fill:rgb(230,85,13)}
.Oranges .q5-6{fill:rgb(166,54,3)}
.Oranges .q0-7{fill:rgb(254,237,222)}
.Oranges .q1-7{fill:rgb(253,208,162)}
.Oranges .q2-7{fill:rgb(253,174,107)}
.Oranges .q3-7{fill:rgb(253,141,60)}
.Oranges .q4-7{fill:rgb(241,105,19)}
.Oranges .q5-7{fill:rgb(217,72,1)}
.Oranges .q6-7{fill:rgb(140,45,4)}
.Oranges .q0-8{fill:rgb(255,245,235)}
.Oranges .q1-8{fill:rgb(254,230,206)}
.Oranges .q2-8{fill:rgb(253,208,162)}
.Oranges .q3-8{fill:rgb(253,174,107)}
.Oranges .q4-8{fill:rgb(253,141,60)}
.Oranges .q5-8{fill:rgb(241,105,19)}
.Oranges .q6-8{fill:rgb(217,72,1)}
.Oranges .q7-8{fill:rgb(140,45,4)}
.Oranges .q0-9{fill:rgb(255,245,235)}
.Oranges .q1-9{fill:rgb(254,230,206)}
.Oranges .q2-9{fill:rgb(253,208,162)}
.Oranges .q3-9{fill:rgb(253,174,107)}
.Oranges .q4-9{fill:rgb(253,141,60)}
.Oranges .q5-9{fill:rgb(241,105,19)}
.Oranges .q6-9{fill:rgb(217,72,1)}
.Oranges .q7-9{fill:rgb(166,54,3)}
.Oranges .q8-9{fill:rgb(127,39,4)}
.Reds .q0-3{fill:rgb(254,224,210)}
.Reds .q1-3{fill:rgb(252,146,114)}
.Reds .q2-3{fill:rgb(222,45,38)}
.Reds .q0-4{fill:rgb(254,229,217)}
.Reds .q1-4{fill:rgb(252,174,145)}
.Reds .q2-4{fill:rgb(251,106,74)}
.Reds .q3-4{fill:rgb(203,24,29)}
.Reds .q0-5{fill:rgb(254,229,217)}
.Reds .q1-5{fill:rgb(252,174,145)}
.Reds .q2-5{fill:rgb(251,106,74)}
.Reds .q3-5{fill:rgb(222,45,38)}
.Reds .q4-5{fill:rgb(165,15,21)}
.Reds .q0-6{fill:rgb(254,229,217)}
.Reds .q1-6{fill:rgb(252,187,161)}
.Reds .q2-6{fill:rgb(252,146,114)}
.Reds .q3-6{fill:rgb(251,106,74)}
.Reds .q4-6{fill:rgb(222,45,38)}
.Reds .q5-6{fill:rgb(165,15,21)}
.Reds .q0-7{fill:rgb(254,229,217)}
.Reds .q1-7{fill:rgb(252,187,161)}
.Reds .q2-7{fill:rgb(252,146,114)}
.Reds .q3-7{fill:rgb(251,106,74)}
.Reds .q4-7{fill:rgb(239,59,44)}
.Reds .q5-7{fill:rgb(203,24,29)}
.Reds .q6-7{fill:rgb(153,0,13)}
.Reds .q0-8{fill:rgb(255,245,240)}
.Reds .q1-8{fill:rgb(254,224,210)}
.Reds .q2-8{fill:rgb(252,187,161)}
.Reds .q3-8{fill:rgb(252,146,114)}
.Reds .q4-8{fill:rgb(251,106,74)}
.Reds .q5-8{fill:rgb(239,59,44)}
.Reds .q6-8{fill:rgb(203,24,29)}
.Reds .q7-8{fill:rgb(153,0,13)}
.Reds .q0-9{fill:rgb(255,245,240)}
.Reds .q1-9{fill:rgb(254,224,210)}
.Reds .q2-9{fill:rgb(252,187,161)}
.Reds .q3-9{fill:rgb(252,146,114)}
.Reds .q4-9{fill:rgb(251,106,74)}
.Reds .q5-9{fill:rgb(239,59,44)}
.Reds .q6-9{fill:rgb(203,24,29)}
.Reds .q7-9{fill:rgb(165,15,21)}
.Reds .q8-9{fill:rgb(103,0,13)}
.Greys .q0-3{fill:rgb(240,240,240)}
.Greys .q1-3{fill:rgb(189,189,189)}
.Greys .q2-3{fill:rgb(99,99,99)}
.Greys .q0-4{fill:rgb(247,247,247)}
.Greys .q1-4{fill:rgb(204,204,204)}
.Greys .q2-4{fill:rgb(150,150,150)}
.Greys .q3-4{fill:rgb(82,82,82)}
.Greys .q0-5{fill:rgb(247,247,247)}
.Greys .q1-5{fill:rgb(204,204,204)}
.Greys .q2-5{fill:rgb(150,150,150)}
.Greys .q3-5{fill:rgb(99,99,99)}
.Greys .q4-5{fill:rgb(37,37,37)}
.Greys .q0-6{fill:rgb(247,247,247)}
.Greys .q1-6{fill:rgb(217,217,217)}
.Greys .q2-6{fill:rgb(189,189,189)}
.Greys .q3-6{fill:rgb(150,150,150)}
.Greys .q4-6{fill:rgb(99,99,99)}
.Greys .q5-6{fill:rgb(37,37,37)}
.Greys .q0-7{fill:rgb(247,247,247)}
.Greys .q1-7{fill:rgb(217,217,217)}
.Greys .q2-7{fill:rgb(189,189,189)}
.Greys .q3-7{fill:rgb(150,150,150)}
.Greys .q4-7{fill:rgb(115,115,115)}
.Greys .q5-7{fill:rgb(82,82,82)}
.Greys .q6-7{fill:rgb(37,37,37)}
.Greys .q0-8{fill:rgb(255,255,255)}
.Greys .q1-8{fill:rgb(240,240,240)}
.Greys .q2-8{fill:rgb(217,217,217)}
.Greys .q3-8{fill:rgb(189,189,189)}
.Greys .q4-8{fill:rgb(150,150,150)}
.Greys .q5-8{fill:rgb(115,115,115)}
.Greys .q6-8{fill:rgb(82,82,82)}
.Greys .q7-8{fill:rgb(37,37,37)}
.Greys .q0-9{fill:rgb(255,255,255)}
.Greys .q1-9{fill:rgb(240,240,240)}
.Greys .q2-9{fill:rgb(217,217,217)}
.Greys .q3-9{fill:rgb(189,189,189)}
.Greys .q4-9{fill:rgb(150,150,150)}
.Greys .q5-9{fill:rgb(115,115,115)}
.Greys .q6-9{fill:rgb(82,82,82)}
.Greys .q7-9{fill:rgb(37,37,37)}
.Greys .q8-9{fill:rgb(0,0,0)}
.PuOr .q0-3{fill:rgb(241,163,64)}
.PuOr .q1-3{fill:rgb(247,247,247)}
.PuOr .q2-3{fill:rgb(153,142,195)}
.PuOr .q0-4{fill:rgb(230,97,1)}
.PuOr .q1-4{fill:rgb(253,184,99)}
.PuOr .q2-4{fill:rgb(178,171,210)}
.PuOr .q3-4{fill:rgb(94,60,153)}
.PuOr .q0-5{fill:rgb(230,97,1)}
.PuOr .q1-5{fill:rgb(253,184,99)}
.PuOr .q2-5{fill:rgb(247,247,247)}
.PuOr .q3-5{fill:rgb(178,171,210)}
.PuOr .q4-5{fill:rgb(94,60,153)}
.PuOr .q0-6{fill:rgb(179,88,6)}
.PuOr .q1-6{fill:rgb(241,163,64)}
.PuOr .q2-6{fill:rgb(254,224,182)}
.PuOr .q3-6{fill:rgb(216,218,235)}
.PuOr .q4-6{fill:rgb(153,142,195)}
.PuOr .q5-6{fill:rgb(84,39,136)}
.PuOr .q0-7{fill:rgb(179,88,6)}
.PuOr .q1-7{fill:rgb(241,163,64)}
.PuOr .q2-7{fill:rgb(254,224,182)}
.PuOr .q3-7{fill:rgb(247,247,247)}
.PuOr .q4-7{fill:rgb(216,218,235)}
.PuOr .q5-7{fill:rgb(153,142,195)}
.PuOr .q6-7{fill:rgb(84,39,136)}
.PuOr .q0-8{fill:rgb(179,88,6)}
.PuOr .q1-8{fill:rgb(224,130,20)}
.PuOr .q2-8{fill:rgb(253,184,99)}
.PuOr .q3-8{fill:rgb(254,224,182)}
.PuOr .q4-8{fill:rgb(216,218,235)}
.PuOr .q5-8{fill:rgb(178,171,210)}
.PuOr .q6-8{fill:rgb(128,115,172)}
.PuOr .q7-8{fill:rgb(84,39,136)}
.PuOr .q0-9{fill:rgb(179,88,6)}
.PuOr .q1-9{fill:rgb(224,130,20)}
.PuOr .q2-9{fill:rgb(253,184,99)}
.PuOr .q3-9{fill:rgb(254,224,182)}
.PuOr .q4-9{fill:rgb(247,247,247)}
.PuOr .q5-9{fill:rgb(216,218,235)}
.PuOr .q6-9{fill:rgb(178,171,210)}
.PuOr .q7-9{fill:rgb(128,115,172)}
.PuOr .q8-9{fill:rgb(84,39,136)}
.PuOr .q0-10{fill:rgb(127,59,8)}
.PuOr .q1-10{fill:rgb(179,88,6)}
.PuOr .q2-10{fill:rgb(224,130,20)}
.PuOr .q3-10{fill:rgb(253,184,99)}
.PuOr .q4-10{fill:rgb(254,224,182)}
.PuOr .q5-10{fill:rgb(216,218,235)}
.PuOr .q6-10{fill:rgb(178,171,210)}
.PuOr .q7-10{fill:rgb(128,115,172)}
.PuOr .q8-10{fill:rgb(84,39,136)}
.PuOr .q9-10{fill:rgb(45,0,75)}
.PuOr .q0-11{fill:rgb(127,59,8)}
.PuOr .q1-11{fill:rgb(179,88,6)}
.PuOr .q2-11{fill:rgb(224,130,20)}
.PuOr .q3-11{fill:rgb(253,184,99)}
.PuOr .q4-11{fill:rgb(254,224,182)}
.PuOr .q5-11{fill:rgb(247,247,247)}
.PuOr .q6-11{fill:rgb(216,218,235)}
.PuOr .q7-11{fill:rgb(178,171,210)}
.PuOr .q8-11{fill:rgb(128,115,172)}
.PuOr .q9-11{fill:rgb(84,39,136)}
.PuOr .q10-11{fill:rgb(45,0,75)}
.BrBG .q0-3{fill:rgb(216,179,101)}
.BrBG .q1-3{fill:rgb(245,245,245)}
.BrBG .q2-3{fill:rgb(90,180,172)}
.BrBG .q0-4{fill:rgb(166,97,26)}
.BrBG .q1-4{fill:rgb(223,194,125)}
.BrBG .q2-4{fill:rgb(128,205,193)}
.BrBG .q3-4{fill:rgb(1,133,113)}
.BrBG .q0-5{fill:rgb(166,97,26)}
.BrBG .q1-5{fill:rgb(223,194,125)}
.BrBG .q2-5{fill:rgb(245,245,245)}
.BrBG .q3-5{fill:rgb(128,205,193)}
.BrBG .q4-5{fill:rgb(1,133,113)}
.BrBG .q0-6{fill:rgb(140,81,10)}
.BrBG .q1-6{fill:rgb(216,179,101)}
.BrBG .q2-6{fill:rgb(246,232,195)}
.BrBG .q3-6{fill:rgb(199,234,229)}
.BrBG .q4-6{fill:rgb(90,180,172)}
.BrBG .q5-6{fill:rgb(1,102,94)}
.BrBG .q0-7{fill:rgb(140,81,10)}
.BrBG .q1-7{fill:rgb(216,179,101)}
.BrBG .q2-7{fill:rgb(246,232,195)}
.BrBG .q3-7{fill:rgb(245,245,245)}
.BrBG .q4-7{fill:rgb(199,234,229)}
.BrBG .q5-7{fill:rgb(90,180,172)}
.BrBG .q6-7{fill:rgb(1,102,94)}
.BrBG .q0-8{fill:rgb(140,81,10)}
.BrBG .q1-8{fill:rgb(191,129,45)}
.BrBG .q2-8{fill:rgb(223,194,125)}
.BrBG .q3-8{fill:rgb(246,232,195)}
.BrBG .q4-8{fill:rgb(199,234,229)}
.BrBG .q5-8{fill:rgb(128,205,193)}
.BrBG .q6-8{fill:rgb(53,151,143)}
.BrBG .q7-8{fill:rgb(1,102,94)}
.BrBG .q0-9{fill:rgb(140,81,10)}
.BrBG .q1-9{fill:rgb(191,129,45)}
.BrBG .q2-9{fill:rgb(223,194,125)}
.BrBG .q3-9{fill:rgb(246,232,195)}
.BrBG .q4-9{fill:rgb(245,245,245)}
.BrBG .q5-9{fill:rgb(199,234,229)}
.BrBG .q6-9{fill:rgb(128,205,193)}
.BrBG .q7-9{fill:rgb(53,151,143)}
.BrBG .q8-9{fill:rgb(1,102,94)}
.BrBG .q0-10{fill:rgb(84,48,5)}
.BrBG .q1-10{fill:rgb(140,81,10)}
.BrBG .q2-10{fill:rgb(191,129,45)}
.BrBG .q3-10{fill:rgb(223,194,125)}
.BrBG .q4-10{fill:rgb(246,232,195)}
.BrBG .q5-10{fill:rgb(199,234,229)}
.BrBG .q6-10{fill:rgb(128,205,193)}
.BrBG .q7-10{fill:rgb(53,151,143)}
.BrBG .q8-10{fill:rgb(1,102,94)}
.BrBG .q9-10{fill:rgb(0,60,48)}
.BrBG .q0-11{fill:rgb(84,48,5)}
.BrBG .q1-11{fill:rgb(140,81,10)}
.BrBG .q2-11{fill:rgb(191,129,45)}
.BrBG .q3-11{fill:rgb(223,194,125)}
.BrBG .q4-11{fill:rgb(246,232,195)}
.BrBG .q5-11{fill:rgb(245,245,245)}
.BrBG .q6-11{fill:rgb(199,234,229)}
.BrBG .q7-11{fill:rgb(128,205,193)}
.BrBG .q8-11{fill:rgb(53,151,143)}
.BrBG .q9-11{fill:rgb(1,102,94)}
.BrBG .q10-11{fill:rgb(0,60,48)}
.PRGn .q0-3{fill:rgb(175,141,195)}
.PRGn .q1-3{fill:rgb(247,247,247)}
.PRGn .q2-3{fill:rgb(127,191,123)}
.PRGn .q0-4{fill:rgb(123,50,148)}
.PRGn .q1-4{fill:rgb(194,165,207)}
.PRGn .q2-4{fill:rgb(166,219,160)}
.PRGn .q3-4{fill:rgb(0,136,55)}
.PRGn .q0-5{fill:rgb(123,50,148)}
.PRGn .q1-5{fill:rgb(194,165,207)}
.PRGn .q2-5{fill:rgb(247,247,247)}
.PRGn .q3-5{fill:rgb(166,219,160)}
.PRGn .q4-5{fill:rgb(0,136,55)}
.PRGn .q0-6{fill:rgb(118,42,131)}
.PRGn .q1-6{fill:rgb(175,141,195)}
.PRGn .q2-6{fill:rgb(231,212,232)}
.PRGn .q3-6{fill:rgb(217,240,211)}
.PRGn .q4-6{fill:rgb(127,191,123)}
.PRGn .q5-6{fill:rgb(27,120,55)}
.PRGn .q0-7{fill:rgb(118,42,131)}
.PRGn .q1-7{fill:rgb(175,141,195)}
.PRGn .q2-7{fill:rgb(231,212,232)}
.PRGn .q3-7{fill:rgb(247,247,247)}
.PRGn .q4-7{fill:rgb(217,240,211)}
.PRGn .q5-7{fill:rgb(127,191,123)}
.PRGn .q6-7{fill:rgb(27,120,55)}
.PRGn .q0-8{fill:rgb(118,42,131)}
.PRGn .q1-8{fill:rgb(153,112,171)}
.PRGn .q2-8{fill:rgb(194,165,207)}
.PRGn .q3-8{fill:rgb(231,212,232)}
.PRGn .q4-8{fill:rgb(217,240,211)}
.PRGn .q5-8{fill:rgb(166,219,160)}
.PRGn .q6-8{fill:rgb(90,174,97)}
.PRGn .q7-8{fill:rgb(27,120,55)}
.PRGn .q0-9{fill:rgb(118,42,131)}
.PRGn .q1-9{fill:rgb(153,112,171)}
.PRGn .q2-9{fill:rgb(194,165,207)}
.PRGn .q3-9{fill:rgb(231,212,232)}
.PRGn .q4-9{fill:rgb(247,247,247)}
.PRGn .q5-9{fill:rgb(217,240,211)}
.PRGn .q6-9{fill:rgb(166,219,160)}
.PRGn .q7-9{fill:rgb(90,174,97)}
.PRGn .q8-9{fill:rgb(27,120,55)}
.PRGn .q0-10{fill:rgb(64,0,75)}
.PRGn .q1-10{fill:rgb(118,42,131)}
.PRGn .q2-10{fill:rgb(153,112,171)}
.PRGn .q3-10{fill:rgb(194,165,207)}
.PRGn .q4-10{fill:rgb(231,212,232)}
.PRGn .q5-10{fill:rgb(217,240,211)}
.PRGn .q6-10{fill:rgb(166,219,160)}
.PRGn .q7-10{fill:rgb(90,174,97)}
.PRGn .q8-10{fill:rgb(27,120,55)}
.PRGn .q9-10{fill:rgb(0,68,27)}
.PRGn .q0-11{fill:rgb(64,0,75)}
.PRGn .q1-11{fill:rgb(118,42,131)}
.PRGn .q2-11{fill:rgb(153,112,171)}
.PRGn .q3-11{fill:rgb(194,165,207)}
.PRGn .q4-11{fill:rgb(231,212,232)}
.PRGn .q5-11{fill:rgb(247,247,247)}
.PRGn .q6-11{fill:rgb(217,240,211)}
.PRGn .q7-11{fill:rgb(166,219,160)}
.PRGn .q8-11{fill:rgb(90,174,97)}
.PRGn .q9-11{fill:rgb(27,120,55)}
.PRGn .q10-11{fill:rgb(0,68,27)}
.PiYG .q0-3{fill:rgb(233,163,201)}
.PiYG .q1-3{fill:rgb(247,247,247)}
.PiYG .q2-3{fill:rgb(161,215,106)}
.PiYG .q0-4{fill:rgb(208,28,139)}
.PiYG .q1-4{fill:rgb(241,182,218)}
.PiYG .q2-4{fill:rgb(184,225,134)}
.PiYG .q3-4{fill:rgb(77,172,38)}
.PiYG .q0-5{fill:rgb(208,28,139)}
.PiYG .q1-5{fill:rgb(241,182,218)}
.PiYG .q2-5{fill:rgb(247,247,247)}
.PiYG .q3-5{fill:rgb(184,225,134)}
.PiYG .q4-5{fill:rgb(77,172,38)}
.PiYG .q0-6{fill:rgb(197,27,125)}
.PiYG .q1-6{fill:rgb(233,163,201)}
.PiYG .q2-6{fill:rgb(253,224,239)}
.PiYG .q3-6{fill:rgb(230,245,208)}
.PiYG .q4-6{fill:rgb(161,215,106)}
.PiYG .q5-6{fill:rgb(77,146,33)}
.PiYG .q0-7{fill:rgb(197,27,125)}
.PiYG .q1-7{fill:rgb(233,163,201)}
.PiYG .q2-7{fill:rgb(253,224,239)}
.PiYG .q3-7{fill:rgb(247,247,247)}
.PiYG .q4-7{fill:rgb(230,245,208)}
.PiYG .q5-7{fill:rgb(161,215,106)}
.PiYG .q6-7{fill:rgb(77,146,33)}
.PiYG .q0-8{fill:rgb(197,27,125)}
.PiYG .q1-8{fill:rgb(222,119,174)}
.PiYG .q2-8{fill:rgb(241,182,218)}
.PiYG .q3-8{fill:rgb(253,224,239)}
.PiYG .q4-8{fill:rgb(230,245,208)}
.PiYG .q5-8{fill:rgb(184,225,134)}
.PiYG .q6-8{fill:rgb(127,188,65)}
.PiYG .q7-8{fill:rgb(77,146,33)}
.PiYG .q0-9{fill:rgb(197,27,125)}
.PiYG .q1-9{fill:rgb(222,119,174)}
.PiYG .q2-9{fill:rgb(241,182,218)}
.PiYG .q3-9{fill:rgb(253,224,239)}
.PiYG .q4-9{fill:rgb(247,247,247)}
.PiYG .q5-9{fill:rgb(230,245,208)}
.PiYG .q6-9{fill:rgb(184,225,134)}
.PiYG .q7-9{fill:rgb(127,188,65)}
.PiYG .q8-9{fill:rgb(77,146,33)}
.PiYG .q0-10{fill:rgb(142,1,82)}
.PiYG .q1-10{fill:rgb(197,27,125)}
.PiYG .q2-10{fill:rgb(222,119,174)}
.PiYG .q3-10{fill:rgb(241,182,218)}
.PiYG .q4-10{fill:rgb(253,224,239)}
.PiYG .q5-10{fill:rgb(230,245,208)}
.PiYG .q6-10{fill:rgb(184,225,134)}
.PiYG .q7-10{fill:rgb(127,188,65)}
.PiYG .q8-10{fill:rgb(77,146,33)}
.PiYG .q9-10{fill:rgb(39,100,25)}
.PiYG .q0-11{fill:rgb(142,1,82)}
.PiYG .q1-11{fill:rgb(197,27,125)}
.PiYG .q2-11{fill:rgb(222,119,174)}
.PiYG .q3-11{fill:rgb(241,182,218)}
.PiYG .q4-11{fill:rgb(253,224,239)}
.PiYG .q5-11{fill:rgb(247,247,247)}
.PiYG .q6-11{fill:rgb(230,245,208)}
.PiYG .q7-11{fill:rgb(184,225,134)}
.PiYG .q8-11{fill:rgb(127,188,65)}
.PiYG .q9-11{fill:rgb(77,146,33)}
.PiYG .q10-11{fill:rgb(39,100,25)}
.RdBu .q0-3{fill:rgb(239,138,98)}
.RdBu .q1-3{fill:rgb(247,247,247)}
.RdBu .q2-3{fill:rgb(103,169,207)}
.RdBu .q0-4{fill:rgb(202,0,32)}
.RdBu .q1-4{fill:rgb(244,165,130)}
.RdBu .q2-4{fill:rgb(146,197,222)}
.RdBu .q3-4{fill:rgb(5,113,176)}
.RdBu .q0-5{fill:rgb(202,0,32)}
.RdBu .q1-5{fill:rgb(244,165,130)}
.RdBu .q2-5{fill:rgb(247,247,247)}
.RdBu .q3-5{fill:rgb(146,197,222)}
.RdBu .q4-5{fill:rgb(5,113,176)}
.RdBu .q0-6{fill:rgb(178,24,43)}
.RdBu .q1-6{fill:rgb(239,138,98)}
.RdBu .q2-6{fill:rgb(253,219,199)}
.RdBu .q3-6{fill:rgb(209,229,240)}
.RdBu .q4-6{fill:rgb(103,169,207)}
.RdBu .q5-6{fill:rgb(33,102,172)}
.RdBu .q0-7{fill:rgb(178,24,43)}
.RdBu .q1-7{fill:rgb(239,138,98)}
.RdBu .q2-7{fill:rgb(253,219,199)}
.RdBu .q3-7{fill:rgb(247,247,247)}
.RdBu .q4-7{fill:rgb(209,229,240)}
.RdBu .q5-7{fill:rgb(103,169,207)}
.RdBu .q6-7{fill:rgb(33,102,172)}
.RdBu .q0-8{fill:rgb(178,24,43)}
.RdBu .q1-8{fill:rgb(214,96,77)}
.RdBu .q2-8{fill:rgb(244,165,130)}
.RdBu .q3-8{fill:rgb(253,219,199)}
.RdBu .q4-8{fill:rgb(209,229,240)}
.RdBu .q5-8{fill:rgb(146,197,222)}
.RdBu .q6-8{fill:rgb(67,147,195)}
.RdBu .q7-8{fill:rgb(33,102,172)}
.RdBu .q0-9{fill:rgb(178,24,43)}
.RdBu .q1-9{fill:rgb(214,96,77)}
.RdBu .q2-9{fill:rgb(244,165,130)}
.RdBu .q3-9{fill:rgb(253,219,199)}
.RdBu .q4-9{fill:rgb(247,247,247)}
.RdBu .q5-9{fill:rgb(209,229,240)}
.RdBu .q6-9{fill:rgb(146,197,222)}
.RdBu .q7-9{fill:rgb(67,147,195)}
.RdBu .q8-9{fill:rgb(33,102,172)}
.RdBu .q0-10{fill:rgb(103,0,31)}
.RdBu .q1-10{fill:rgb(178,24,43)}
.RdBu .q2-10{fill:rgb(214,96,77)}
.RdBu .q3-10{fill:rgb(244,165,130)}
.RdBu .q4-10{fill:rgb(253,219,199)}
.RdBu .q5-10{fill:rgb(209,229,240)}
.RdBu .q6-10{fill:rgb(146,197,222)}
.RdBu .q7-10{fill:rgb(67,147,195)}
.RdBu .q8-10{fill:rgb(33,102,172)}
.RdBu .q9-10{fill:rgb(5,48,97)}
.RdBu .q0-11{fill:rgb(103,0,31)}
.RdBu .q1-11{fill:rgb(178,24,43)}
.RdBu .q2-11{fill:rgb(214,96,77)}
.RdBu .q3-11{fill:rgb(244,165,130)}
.RdBu .q4-11{fill:rgb(253,219,199)}
.RdBu .q5-11{fill:rgb(247,247,247)}
.RdBu .q6-11{fill:rgb(209,229,240)}
.RdBu .q7-11{fill:rgb(146,197,222)}
.RdBu .q8-11{fill:rgb(67,147,195)}
.RdBu .q9-11{fill:rgb(33,102,172)}
.RdBu .q10-11{fill:rgb(5,48,97)}
.RdGy .q0-3{fill:rgb(239,138,98)}
.RdGy .q1-3{fill:rgb(255,255,255)}
.RdGy .q2-3{fill:rgb(153,153,153)}
.RdGy .q0-4{fill:rgb(202,0,32)}
.RdGy .q1-4{fill:rgb(244,165,130)}
.RdGy .q2-4{fill:rgb(186,186,186)}
.RdGy .q3-4{fill:rgb(64,64,64)}
.RdGy .q0-5{fill:rgb(202,0,32)}
.RdGy .q1-5{fill:rgb(244,165,130)}
.RdGy .q2-5{fill:rgb(255,255,255)}
.RdGy .q3-5{fill:rgb(186,186,186)}
.RdGy .q4-5{fill:rgb(64,64,64)}
.RdGy .q0-6{fill:rgb(178,24,43)}
.RdGy .q1-6{fill:rgb(239,138,98)}
.RdGy .q2-6{fill:rgb(253,219,199)}
.RdGy .q3-6{fill:rgb(224,224,224)}
.RdGy .q4-6{fill:rgb(153,153,153)}
.RdGy .q5-6{fill:rgb(77,77,77)}
.RdGy .q0-7{fill:rgb(178,24,43)}
.RdGy .q1-7{fill:rgb(239,138,98)}
.RdGy .q2-7{fill:rgb(253,219,199)}
.RdGy .q3-7{fill:rgb(255,255,255)}
.RdGy .q4-7{fill:rgb(224,224,224)}
.RdGy .q5-7{fill:rgb(153,153,153)}
.RdGy .q6-7{fill:rgb(77,77,77)}
.RdGy .q0-8{fill:rgb(178,24,43)}
.RdGy .q1-8{fill:rgb(214,96,77)}
.RdGy .q2-8{fill:rgb(244,165,130)}
.RdGy .q3-8{fill:rgb(253,219,199)}
.RdGy .q4-8{fill:rgb(224,224,224)}
.RdGy .q5-8{fill:rgb(186,186,186)}
.RdGy .q6-8{fill:rgb(135,135,135)}
.RdGy .q7-8{fill:rgb(77,77,77)}
.RdGy .q0-9{fill:rgb(178,24,43)}
.RdGy .q1-9{fill:rgb(214,96,77)}
.RdGy .q2-9{fill:rgb(244,165,130)}
.RdGy .q3-9{fill:rgb(253,219,199)}
.RdGy .q4-9{fill:rgb(255,255,255)}
.RdGy .q5-9{fill:rgb(224,224,224)}
.RdGy .q6-9{fill:rgb(186,186,186)}
.RdGy .q7-9{fill:rgb(135,135,135)}
.RdGy .q8-9{fill:rgb(77,77,77)}
.RdGy .q0-10{fill:rgb(103,0,31)}
.RdGy .q1-10{fill:rgb(178,24,43)}
.RdGy .q2-10{fill:rgb(214,96,77)}
.RdGy .q3-10{fill:rgb(244,165,130)}
.RdGy .q4-10{fill:rgb(253,219,199)}
.RdGy .q5-10{fill:rgb(224,224,224)}
.RdGy .q6-10{fill:rgb(186,186,186)}
.RdGy .q7-10{fill:rgb(135,135,135)}
.RdGy .q8-10{fill:rgb(77,77,77)}
.RdGy .q9-10{fill:rgb(26,26,26)}
.RdGy .q0-11{fill:rgb(103,0,31)}
.RdGy .q1-11{fill:rgb(178,24,43)}
.RdGy .q2-11{fill:rgb(214,96,77)}
.RdGy .q3-11{fill:rgb(244,165,130)}
.RdGy .q4-11{fill:rgb(253,219,199)}
.RdGy .q5-11{fill:rgb(255,255,255)}
.RdGy .q6-11{fill:rgb(224,224,224)}
.RdGy .q7-11{fill:rgb(186,186,186)}
.RdGy .q8-11{fill:rgb(135,135,135)}
.RdGy .q9-11{fill:rgb(77,77,77)}
.RdGy .q10-11{fill:rgb(26,26,26)}
.RdYlBu .q0-3{fill:rgb(252,141,89)}
.RdYlBu .q1-3{fill:rgb(255,255,191)}
.RdYlBu .q2-3{fill:rgb(145,191,219)}
.RdYlBu .q0-4{fill:rgb(215,25,28)}
.RdYlBu .q1-4{fill:rgb(253,174,97)}
.RdYlBu .q2-4{fill:rgb(171,217,233)}
.RdYlBu .q3-4{fill:rgb(44,123,182)}
.RdYlBu .q0-5{fill:rgb(215,25,28)}
.RdYlBu .q1-5{fill:rgb(253,174,97)}
.RdYlBu .q2-5{fill:rgb(255,255,191)}
.RdYlBu .q3-5{fill:rgb(171,217,233)}
.RdYlBu .q4-5{fill:rgb(44,123,182)}
.RdYlBu .q0-6{fill:rgb(215,48,39)}
.RdYlBu .q1-6{fill:rgb(252,141,89)}
.RdYlBu .q2-6{fill:rgb(254,224,144)}
.RdYlBu .q3-6{fill:rgb(224,243,248)}
.RdYlBu .q4-6{fill:rgb(145,191,219)}
.RdYlBu .q5-6{fill:rgb(69,117,180)}
.RdYlBu .q0-7{fill:rgb(215,48,39)}
.RdYlBu .q1-7{fill:rgb(252,141,89)}
.RdYlBu .q2-7{fill:rgb(254,224,144)}
.RdYlBu .q3-7{fill:rgb(255,255,191)}
.RdYlBu .q4-7{fill:rgb(224,243,248)}
.RdYlBu .q5-7{fill:rgb(145,191,219)}
.RdYlBu .q6-7{fill:rgb(69,117,180)}
.RdYlBu .q0-8{fill:rgb(215,48,39)}
.RdYlBu .q1-8{fill:rgb(244,109,67)}
.RdYlBu .q2-8{fill:rgb(253,174,97)}
.RdYlBu .q3-8{fill:rgb(254,224,144)}
.RdYlBu .q4-8{fill:rgb(224,243,248)}
.RdYlBu .q5-8{fill:rgb(171,217,233)}
.RdYlBu .q6-8{fill:rgb(116,173,209)}
.RdYlBu .q7-8{fill:rgb(69,117,180)}
.RdYlBu .q0-9{fill:rgb(215,48,39)}
.RdYlBu .q1-9{fill:rgb(244,109,67)}
.RdYlBu .q2-9{fill:rgb(253,174,97)}
.RdYlBu .q3-9{fill:rgb(254,224,144)}
.RdYlBu .q4-9{fill:rgb(255,255,191)}
.RdYlBu .q5-9{fill:rgb(224,243,248)}
.RdYlBu .q6-9{fill:rgb(171,217,233)}
.RdYlBu .q7-9{fill:rgb(116,173,209)}
.RdYlBu .q8-9{fill:rgb(69,117,180)}
.RdYlBu .q0-10{fill:rgb(165,0,38)}
.RdYlBu .q1-10{fill:rgb(215,48,39)}
.RdYlBu .q2-10{fill:rgb(244,109,67)}
.RdYlBu .q3-10{fill:rgb(253,174,97)}
.RdYlBu .q4-10{fill:rgb(254,224,144)}
.RdYlBu .q5-10{fill:rgb(224,243,248)}
.RdYlBu .q6-10{fill:rgb(171,217,233)}
.RdYlBu .q7-10{fill:rgb(116,173,209)}
.RdYlBu .q8-10{fill:rgb(69,117,180)}
.RdYlBu .q9-10{fill:rgb(49,54,149)}
.RdYlBu .q0-11{fill:rgb(165,0,38)}
.RdYlBu .q1-11{fill:rgb(215,48,39)}
.RdYlBu .q2-11{fill:rgb(244,109,67)}
.RdYlBu .q3-11{fill:rgb(253,174,97)}
.RdYlBu .q4-11{fill:rgb(254,224,144)}
.RdYlBu .q5-11{fill:rgb(255,255,191)}
.RdYlBu .q6-11{fill:rgb(224,243,248)}
.RdYlBu .q7-11{fill:rgb(171,217,233)}
.RdYlBu .q8-11{fill:rgb(116,173,209)}
.RdYlBu .q9-11{fill:rgb(69,117,180)}
.RdYlBu .q10-11{fill:rgb(49,54,149)}
.Spectral .q0-3{fill:rgb(252,141,89)}
.Spectral .q1-3{fill:rgb(255,255,191)}
.Spectral .q2-3{fill:rgb(153,213,148)}
.Spectral .q0-4{fill:rgb(215,25,28)}
.Spectral .q1-4{fill:rgb(253,174,97)}
.Spectral .q2-4{fill:rgb(171,221,164)}
.Spectral .q3-4{fill:rgb(43,131,186)}
.Spectral .q0-5{fill:rgb(215,25,28)}
.Spectral .q1-5{fill:rgb(253,174,97)}
.Spectral .q2-5{fill:rgb(255,255,191)}
.Spectral .q3-5{fill:rgb(171,221,164)}
.Spectral .q4-5{fill:rgb(43,131,186)}
.Spectral .q0-6{fill:rgb(213,62,79)}
.Spectral .q1-6{fill:rgb(252,141,89)}
.Spectral .q2-6{fill:rgb(254,224,139)}
.Spectral .q3-6{fill:rgb(230,245,152)}
.Spectral .q4-6{fill:rgb(153,213,148)}
.Spectral .q5-6{fill:rgb(50,136,189)}
.Spectral .q0-7{fill:rgb(213,62,79)}
.Spectral .q1-7{fill:rgb(252,141,89)}
.Spectral .q2-7{fill:rgb(254,224,139)}
.Spectral .q3-7{fill:rgb(255,255,191)}
.Spectral .q4-7{fill:rgb(230,245,152)}
.Spectral .q5-7{fill:rgb(153,213,148)}
.Spectral .q6-7{fill:rgb(50,136,189)}
.Spectral .q0-8{fill:rgb(213,62,79)}
.Spectral .q1-8{fill:rgb(244,109,67)}
.Spectral .q2-8{fill:rgb(253,174,97)}
.Spectral .q3-8{fill:rgb(254,224,139)}
.Spectral .q4-8{fill:rgb(230,245,152)}
.Spectral .q5-8{fill:rgb(171,221,164)}
.Spectral .q6-8{fill:rgb(102,194,165)}
.Spectral .q7-8{fill:rgb(50,136,189)}
.Spectral .q0-9{fill:rgb(213,62,79)}
.Spectral .q1-9{fill:rgb(244,109,67)}
.Spectral .q2-9{fill:rgb(253,174,97)}
.Spectral .q3-9{fill:rgb(254,224,139)}
.Spectral .q4-9{fill:rgb(255,255,191)}
.Spectral .q5-9{fill:rgb(230,245,152)}
.Spectral .q6-9{fill:rgb(171,221,164)}
.Spectral .q7-9{fill:rgb(102,194,165)}
.Spectral .q8-9{fill:rgb(50,136,189)}
.Spectral .q0-10{fill:rgb(158,1,66)}
.Spectral .q1-10{fill:rgb(213,62,79)}
.Spectral .q2-10{fill:rgb(244,109,67)}
.Spectral .q3-10{fill:rgb(253,174,97)}
.Spectral .q4-10{fill:rgb(254,224,139)}
.Spectral .q5-10{fill:rgb(230,245,152)}
.Spectral .q6-10{fill:rgb(171,221,164)}
.Spectral .q7-10{fill:rgb(102,194,165)}
.Spectral .q8-10{fill:rgb(50,136,189)}
.Spectral .q9-10{fill:rgb(94,79,162)}
.Spectral .q0-11{fill:rgb(158,1,66)}
.Spectral .q1-11{fill:rgb(213,62,79)}
.Spectral .q2-11{fill:rgb(244,109,67)}
.Spectral .q3-11{fill:rgb(253,174,97)}
.Spectral .q4-11{fill:rgb(254,224,139)}
.Spectral .q5-11{fill:rgb(255,255,191)}
.Spectral .q6-11{fill:rgb(230,245,152)}
.Spectral .q7-11{fill:rgb(171,221,164)}
.Spectral .q8-11{fill:rgb(102,194,165)}
.Spectral .q9-11{fill:rgb(50,136,189)}
.Spectral .q10-11{fill:rgb(94,79,162)}
.RdYlGn .q0-3{fill:rgb(252,141,89)}
.RdYlGn .q1-3{fill:rgb(255,255,191)}
.RdYlGn .q2-3{fill:rgb(145,207,96)}
.RdYlGn .q0-4{fill:rgb(215,25,28)}
.RdYlGn .q1-4{fill:rgb(253,174,97)}
.RdYlGn .q2-4{fill:rgb(166,217,106)}
.RdYlGn .q3-4{fill:rgb(26,150,65)}
.RdYlGn .q0-5{fill:rgb(215,25,28)}
.RdYlGn .q1-5{fill:rgb(253,174,97)}
.RdYlGn .q2-5{fill:rgb(255,255,191)}
.RdYlGn .q3-5{fill:rgb(166,217,106)}
.RdYlGn .q4-5{fill:rgb(26,150,65)}
.RdYlGn .q0-6{fill:rgb(215,48,39)}
.RdYlGn .q1-6{fill:rgb(252,141,89)}
.RdYlGn .q2-6{fill:rgb(254,224,139)}
.RdYlGn .q3-6{fill:rgb(217,239,139)}
.RdYlGn .q4-6{fill:rgb(145,207,96)}
.RdYlGn .q5-6{fill:rgb(26,152,80)}
.RdYlGn .q0-7{fill:rgb(215,48,39)}
.RdYlGn .q1-7{fill:rgb(252,141,89)}
.RdYlGn .q2-7{fill:rgb(254,224,139)}
.RdYlGn .q3-7{fill:rgb(255,255,191)}
.RdYlGn .q4-7{fill:rgb(217,239,139)}
.RdYlGn .q5-7{fill:rgb(145,207,96)}
.RdYlGn .q6-7{fill:rgb(26,152,80)}
.RdYlGn .q0-8{fill:rgb(215,48,39)}
.RdYlGn .q1-8{fill:rgb(244,109,67)}
.RdYlGn .q2-8{fill:rgb(253,174,97)}
.RdYlGn .q3-8{fill:rgb(254,224,139)}
.RdYlGn .q4-8{fill:rgb(217,239,139)}
.RdYlGn .q5-8{fill:rgb(166,217,106)}
.RdYlGn .q6-8{fill:rgb(102,189,99)}
.RdYlGn .q7-8{fill:rgb(26,152,80)}
.RdYlGn .q0-9{fill:rgb(215,48,39)}
.RdYlGn .q1-9{fill:rgb(244,109,67)}
.RdYlGn .q2-9{fill:rgb(253,174,97)}
.RdYlGn .q3-9{fill:rgb(254,224,139)}
.RdYlGn .q4-9{fill:rgb(255,255,191)}
.RdYlGn .q5-9{fill:rgb(217,239,139)}
.RdYlGn .q6-9{fill:rgb(166,217,106)}
.RdYlGn .q7-9{fill:rgb(102,189,99)}
.RdYlGn .q8-9{fill:rgb(26,152,80)}
.RdYlGn .q0-10{fill:rgb(165,0,38)}
.RdYlGn .q1-10{fill:rgb(215,48,39)}
.RdYlGn .q2-10{fill:rgb(244,109,67)}
.RdYlGn .q3-10{fill:rgb(253,174,97)}
.RdYlGn .q4-10{fill:rgb(254,224,139)}
.RdYlGn .q5-10{fill:rgb(217,239,139)}
.RdYlGn .q6-10{fill:rgb(166,217,106)}
.RdYlGn .q7-10{fill:rgb(102,189,99)}
.RdYlGn .q8-10{fill:rgb(26,152,80)}
.RdYlGn .q9-10{fill:rgb(0,104,55)}
.RdYlGn .q0-11{fill:rgb(165,0,38)}
.RdYlGn .q1-11{fill:rgb(215,48,39)}
.RdYlGn .q2-11{fill:rgb(244,109,67)}
.RdYlGn .q3-11{fill:rgb(253,174,97)}
.RdYlGn .q4-11{fill:rgb(254,224,139)}
.RdYlGn .q5-11{fill:rgb(255,255,191)}
.RdYlGn .q6-11{fill:rgb(217,239,139)}
.RdYlGn .q7-11{fill:rgb(166,217,106)}
.RdYlGn .q8-11{fill:rgb(102,189,99)}
.RdYlGn .q9-11{fill:rgb(26,152,80)}
.RdYlGn .q10-11{fill:rgb(0,104,55)}
.Accent .q0-3{fill:rgb(127,201,127)}
.Accent .q1-3{fill:rgb(190,174,212)}
.Accent .q2-3{fill:rgb(253,192,134)}
.Accent .q0-4{fill:rgb(127,201,127)}
.Accent .q1-4{fill:rgb(190,174,212)}
.Accent .q2-4{fill:rgb(253,192,134)}
.Accent .q3-4{fill:rgb(255,255,153)}
.Accent .q0-5{fill:rgb(127,201,127)}
.Accent .q1-5{fill:rgb(190,174,212)}
.Accent .q2-5{fill:rgb(253,192,134)}
.Accent .q3-5{fill:rgb(255,255,153)}
.Accent .q4-5{fill:rgb(56,108,176)}
.Accent .q0-6{fill:rgb(127,201,127)}
.Accent .q1-6{fill:rgb(190,174,212)}
.Accent .q2-6{fill:rgb(253,192,134)}
.Accent .q3-6{fill:rgb(255,255,153)}
.Accent .q4-6{fill:rgb(56,108,176)}
.Accent .q5-6{fill:rgb(240,2,127)}
.Accent .q0-7{fill:rgb(127,201,127)}
.Accent .q1-7{fill:rgb(190,174,212)}
.Accent .q2-7{fill:rgb(253,192,134)}
.Accent .q3-7{fill:rgb(255,255,153)}
.Accent .q4-7{fill:rgb(56,108,176)}
.Accent .q5-7{fill:rgb(240,2,127)}
.Accent .q6-7{fill:rgb(191,91,23)}
.Accent .q0-8{fill:rgb(127,201,127)}
.Accent .q1-8{fill:rgb(190,174,212)}
.Accent .q2-8{fill:rgb(253,192,134)}
.Accent .q3-8{fill:rgb(255,255,153)}
.Accent .q4-8{fill:rgb(56,108,176)}
.Accent .q5-8{fill:rgb(240,2,127)}
.Accent .q6-8{fill:rgb(191,91,23)}
.Accent .q7-8{fill:rgb(102,102,102)}
.Dark2 .q0-3{fill:rgb(27,158,119)}
.Dark2 .q1-3{fill:rgb(217,95,2)}
.Dark2 .q2-3{fill:rgb(117,112,179)}
.Dark2 .q0-4{fill:rgb(27,158,119)}
.Dark2 .q1-4{fill:rgb(217,95,2)}
.Dark2 .q2-4{fill:rgb(117,112,179)}
.Dark2 .q3-4{fill:rgb(231,41,138)}
.Dark2 .q0-5{fill:rgb(27,158,119)}
.Dark2 .q1-5{fill:rgb(217,95,2)}
.Dark2 .q2-5{fill:rgb(117,112,179)}
.Dark2 .q3-5{fill:rgb(231,41,138)}
.Dark2 .q4-5{fill:rgb(102,166,30)}
.Dark2 .q0-6{fill:rgb(27,158,119)}
.Dark2 .q1-6{fill:rgb(217,95,2)}
.Dark2 .q2-6{fill:rgb(117,112,179)}
.Dark2 .q3-6{fill:rgb(231,41,138)}
.Dark2 .q4-6{fill:rgb(102,166,30)}
.Dark2 .q5-6{fill:rgb(230,171,2)}
.Dark2 .q0-7{fill:rgb(27,158,119)}
.Dark2 .q1-7{fill:rgb(217,95,2)}
.Dark2 .q2-7{fill:rgb(117,112,179)}
.Dark2 .q3-7{fill:rgb(231,41,138)}
.Dark2 .q4-7{fill:rgb(102,166,30)}
.Dark2 .q5-7{fill:rgb(230,171,2)}
.Dark2 .q6-7{fill:rgb(166,118,29)}
.Dark2 .q0-8{fill:rgb(27,158,119)}
.Dark2 .q1-8{fill:rgb(217,95,2)}
.Dark2 .q2-8{fill:rgb(117,112,179)}
.Dark2 .q3-8{fill:rgb(231,41,138)}
.Dark2 .q4-8{fill:rgb(102,166,30)}
.Dark2 .q5-8{fill:rgb(230,171,2)}
.Dark2 .q6-8{fill:rgb(166,118,29)}
.Dark2 .q7-8{fill:rgb(102,102,102)}
.Paired .q0-3{fill:rgb(166,206,227)}
.Paired .q1-3{fill:rgb(31,120,180)}
.Paired .q2-3{fill:rgb(178,223,138)}
.Paired .q0-4{fill:rgb(166,206,227)}
.Paired .q1-4{fill:rgb(31,120,180)}
.Paired .q2-4{fill:rgb(178,223,138)}
.Paired .q3-4{fill:rgb(51,160,44)}
.Paired .q0-5{fill:rgb(166,206,227)}
.Paired .q1-5{fill:rgb(31,120,180)}
.Paired .q2-5{fill:rgb(178,223,138)}
.Paired .q3-5{fill:rgb(51,160,44)}
.Paired .q4-5{fill:rgb(251,154,153)}
.Paired .q0-6{fill:rgb(166,206,227)}
.Paired .q1-6{fill:rgb(31,120,180)}
.Paired .q2-6{fill:rgb(178,223,138)}
.Paired .q3-6{fill:rgb(51,160,44)}
.Paired .q4-6{fill:rgb(251,154,153)}
.Paired .q5-6{fill:rgb(227,26,28)}
.Paired .q0-7{fill:rgb(166,206,227)}
.Paired .q1-7{fill:rgb(31,120,180)}
.Paired .q2-7{fill:rgb(178,223,138)}
.Paired .q3-7{fill:rgb(51,160,44)}
.Paired .q4-7{fill:rgb(251,154,153)}
.Paired .q5-7{fill:rgb(227,26,28)}
.Paired .q6-7{fill:rgb(253,191,111)}
.Paired .q0-8{fill:rgb(166,206,227)}
.Paired .q1-8{fill:rgb(31,120,180)}
.Paired .q2-8{fill:rgb(178,223,138)}
.Paired .q3-8{fill:rgb(51,160,44)}
.Paired .q4-8{fill:rgb(251,154,153)}
.Paired .q5-8{fill:rgb(227,26,28)}
.Paired .q6-8{fill:rgb(253,191,111)}
.Paired .q7-8{fill:rgb(255,127,0)}
.Paired .q0-9{fill:rgb(166,206,227)}
.Paired .q1-9{fill:rgb(31,120,180)}
.Paired .q2-9{fill:rgb(178,223,138)}
.Paired .q3-9{fill:rgb(51,160,44)}
.Paired .q4-9{fill:rgb(251,154,153)}
.Paired .q5-9{fill:rgb(227,26,28)}
.Paired .q6-9{fill:rgb(253,191,111)}
.Paired .q7-9{fill:rgb(255,127,0)}
.Paired .q8-9{fill:rgb(202,178,214)}
.Paired .q0-10{fill:rgb(166,206,227)}
.Paired .q1-10{fill:rgb(31,120,180)}
.Paired .q2-10{fill:rgb(178,223,138)}
.Paired .q3-10{fill:rgb(51,160,44)}
.Paired .q4-10{fill:rgb(251,154,153)}
.Paired .q5-10{fill:rgb(227,26,28)}
.Paired .q6-10{fill:rgb(253,191,111)}
.Paired .q7-10{fill:rgb(255,127,0)}
.Paired .q8-10{fill:rgb(202,178,214)}
.Paired .q9-10{fill:rgb(106,61,154)}
.Paired .q0-11{fill:rgb(166,206,227)}
.Paired .q1-11{fill:rgb(31,120,180)}
.Paired .q2-11{fill:rgb(178,223,138)}
.Paired .q3-11{fill:rgb(51,160,44)}
.Paired .q4-11{fill:rgb(251,154,153)}
.Paired .q5-11{fill:rgb(227,26,28)}
.Paired .q6-11{fill:rgb(253,191,111)}
.Paired .q7-11{fill:rgb(255,127,0)}
.Paired .q8-11{fill:rgb(202,178,214)}
.Paired .q9-11{fill:rgb(106,61,154)}
.Paired .q10-11{fill:rgb(255,255,153)}
.Paired .q0-12{fill:rgb(166,206,227)}
.Paired .q1-12{fill:rgb(31,120,180)}
.Paired .q2-12{fill:rgb(178,223,138)}
.Paired .q3-12{fill:rgb(51,160,44)}
.Paired .q4-12{fill:rgb(251,154,153)}
.Paired .q5-12{fill:rgb(227,26,28)}
.Paired .q6-12{fill:rgb(253,191,111)}
.Paired .q7-12{fill:rgb(255,127,0)}
.Paired .q8-12{fill:rgb(202,178,214)}
.Paired .q9-12{fill:rgb(106,61,154)}
.Paired .q10-12{fill:rgb(255,255,153)}
.Paired .q11-12{fill:rgb(177,89,40)}
.Pastel1 .q0-3{fill:rgb(251,180,174)}
.Pastel1 .q1-3{fill:rgb(179,205,227)}
.Pastel1 .q2-3{fill:rgb(204,235,197)}
.Pastel1 .q0-4{fill:rgb(251,180,174)}
.Pastel1 .q1-4{fill:rgb(179,205,227)}
.Pastel1 .q2-4{fill:rgb(204,235,197)}
.Pastel1 .q3-4{fill:rgb(222,203,228)}
.Pastel1 .q0-5{fill:rgb(251,180,174)}
.Pastel1 .q1-5{fill:rgb(179,205,227)}
.Pastel1 .q2-5{fill:rgb(204,235,197)}
.Pastel1 .q3-5{fill:rgb(222,203,228)}
.Pastel1 .q4-5{fill:rgb(254,217,166)}
.Pastel1 .q0-6{fill:rgb(251,180,174)}
.Pastel1 .q1-6{fill:rgb(179,205,227)}
.Pastel1 .q2-6{fill:rgb(204,235,197)}
.Pastel1 .q3-6{fill:rgb(222,203,228)}
.Pastel1 .q4-6{fill:rgb(254,217,166)}
.Pastel1 .q5-6{fill:rgb(255,255,204)}
.Pastel1 .q0-7{fill:rgb(251,180,174)}
.Pastel1 .q1-7{fill:rgb(179,205,227)}
.Pastel1 .q2-7{fill:rgb(204,235,197)}
.Pastel1 .q3-7{fill:rgb(222,203,228)}
.Pastel1 .q4-7{fill:rgb(254,217,166)}
.Pastel1 .q5-7{fill:rgb(255,255,204)}
.Pastel1 .q6-7{fill:rgb(229,216,189)}
.Pastel1 .q0-8{fill:rgb(251,180,174)}
.Pastel1 .q1-8{fill:rgb(179,205,227)}
.Pastel1 .q2-8{fill:rgb(204,235,197)}
.Pastel1 .q3-8{fill:rgb(222,203,228)}
.Pastel1 .q4-8{fill:rgb(254,217,166)}
.Pastel1 .q5-8{fill:rgb(255,255,204)}
.Pastel1 .q6-8{fill:rgb(229,216,189)}
.Pastel1 .q7-8{fill:rgb(253,218,236)}
.Pastel1 .q0-9{fill:rgb(251,180,174)}
.Pastel1 .q1-9{fill:rgb(179,205,227)}
.Pastel1 .q2-9{fill:rgb(204,235,197)}
.Pastel1 .q3-9{fill:rgb(222,203,228)}
.Pastel1 .q4-9{fill:rgb(254,217,166)}
.Pastel1 .q5-9{fill:rgb(255,255,204)}
.Pastel1 .q6-9{fill:rgb(229,216,189)}
.Pastel1 .q7-9{fill:rgb(253,218,236)}
.Pastel1 .q8-9{fill:rgb(242,242,242)}
.Pastel2 .q0-3{fill:rgb(179,226,205)}
.Pastel2 .q1-3{fill:rgb(253,205,172)}
.Pastel2 .q2-3{fill:rgb(203,213,232)}
.Pastel2 .q0-4{fill:rgb(179,226,205)}
.Pastel2 .q1-4{fill:rgb(253,205,172)}
.Pastel2 .q2-4{fill:rgb(203,213,232)}
.Pastel2 .q3-4{fill:rgb(244,202,228)}
.Pastel2 .q0-5{fill:rgb(179,226,205)}
.Pastel2 .q1-5{fill:rgb(253,205,172)}
.Pastel2 .q2-5{fill:rgb(203,213,232)}
.Pastel2 .q3-5{fill:rgb(244,202,228)}
.Pastel2 .q4-5{fill:rgb(230,245,201)}
.Pastel2 .q0-6{fill:rgb(179,226,205)}
.Pastel2 .q1-6{fill:rgb(253,205,172)}
.Pastel2 .q2-6{fill:rgb(203,213,232)}
.Pastel2 .q3-6{fill:rgb(244,202,228)}
.Pastel2 .q4-6{fill:rgb(230,245,201)}
.Pastel2 .q5-6{fill:rgb(255,242,174)}
.Pastel2 .q0-7{fill:rgb(179,226,205)}
.Pastel2 .q1-7{fill:rgb(253,205,172)}
.Pastel2 .q2-7{fill:rgb(203,213,232)}
.Pastel2 .q3-7{fill:rgb(244,202,228)}
.Pastel2 .q4-7{fill:rgb(230,245,201)}
.Pastel2 .q5-7{fill:rgb(255,242,174)}
.Pastel2 .q6-7{fill:rgb(241,226,204)}
.Pastel2 .q0-8{fill:rgb(179,226,205)}
.Pastel2 .q1-8{fill:rgb(253,205,172)}
.Pastel2 .q2-8{fill:rgb(203,213,232)}
.Pastel2 .q3-8{fill:rgb(244,202,228)}
.Pastel2 .q4-8{fill:rgb(230,245,201)}
.Pastel2 .q5-8{fill:rgb(255,242,174)}
.Pastel2 .q6-8{fill:rgb(241,226,204)}
.Pastel2 .q7-8{fill:rgb(204,204,204)}
.Set1 .q0-3{fill:rgb(228,26,28)}
.Set1 .q1-3{fill:rgb(55,126,184)}
.Set1 .q2-3{fill:rgb(77,175,74)}
.Set1 .q0-4{fill:rgb(228,26,28)}
.Set1 .q1-4{fill:rgb(55,126,184)}
.Set1 .q2-4{fill:rgb(77,175,74)}
.Set1 .q3-4{fill:rgb(152,78,163)}
.Set1 .q0-5{fill:rgb(228,26,28)}
.Set1 .q1-5{fill:rgb(55,126,184)}
.Set1 .q2-5{fill:rgb(77,175,74)}
.Set1 .q3-5{fill:rgb(152,78,163)}
.Set1 .q4-5{fill:rgb(255,127,0)}
.Set1 .q0-6{fill:rgb(228,26,28)}
.Set1 .q1-6{fill:rgb(55,126,184)}
.Set1 .q2-6{fill:rgb(77,175,74)}
.Set1 .q3-6{fill:rgb(152,78,163)}
.Set1 .q4-6{fill:rgb(255,127,0)}
.Set1 .q5-6{fill:rgb(255,255,51)}
.Set1 .q0-7{fill:rgb(228,26,28)}
.Set1 .q1-7{fill:rgb(55,126,184)}
.Set1 .q2-7{fill:rgb(77,175,74)}
.Set1 .q3-7{fill:rgb(152,78,163)}
.Set1 .q4-7{fill:rgb(255,127,0)}
.Set1 .q5-7{fill:rgb(255,255,51)}
.Set1 .q6-7{fill:rgb(166,86,40)}
.Set1 .q0-8{fill:rgb(228,26,28)}
.Set1 .q1-8{fill:rgb(55,126,184)}
.Set1 .q2-8{fill:rgb(77,175,74)}
.Set1 .q3-8{fill:rgb(152,78,163)}
.Set1 .q4-8{fill:rgb(255,127,0)}
.Set1 .q5-8{fill:rgb(255,255,51)}
.Set1 .q6-8{fill:rgb(166,86,40)}
.Set1 .q7-8{fill:rgb(247,129,191)}
.Set1 .q0-9{fill:rgb(228,26,28)}
.Set1 .q1-9{fill:rgb(55,126,184)}
.Set1 .q2-9{fill:rgb(77,175,74)}
.Set1 .q3-9{fill:rgb(152,78,163)}
.Set1 .q4-9{fill:rgb(255,127,0)}
.Set1 .q5-9{fill:rgb(255,255,51)}
.Set1 .q6-9{fill:rgb(166,86,40)}
.Set1 .q7-9{fill:rgb(247,129,191)}
.Set1 .q8-9{fill:rgb(153,153,153)}
.Set2 .q0-3{fill:rgb(102,194,165)}
.Set2 .q1-3{fill:rgb(252,141,98)}
.Set2 .q2-3{fill:rgb(141,160,203)}
.Set2 .q0-4{fill:rgb(102,194,165)}
.Set2 .q1-4{fill:rgb(252,141,98)}
.Set2 .q2-4{fill:rgb(141,160,203)}
.Set2 .q3-4{fill:rgb(231,138,195)}
.Set2 .q0-5{fill:rgb(102,194,165)}
.Set2 .q1-5{fill:rgb(252,141,98)}
.Set2 .q2-5{fill:rgb(141,160,203)}
.Set2 .q3-5{fill:rgb(231,138,195)}
.Set2 .q4-5{fill:rgb(166,216,84)}
.Set2 .q0-6{fill:rgb(102,194,165)}
.Set2 .q1-6{fill:rgb(252,141,98)}
.Set2 .q2-6{fill:rgb(141,160,203)}
.Set2 .q3-6{fill:rgb(231,138,195)}
.Set2 .q4-6{fill:rgb(166,216,84)}
.Set2 .q5-6{fill:rgb(255,217,47)}
.Set2 .q0-7{fill:rgb(102,194,165)}
.Set2 .q1-7{fill:rgb(252,141,98)}
.Set2 .q2-7{fill:rgb(141,160,203)}
.Set2 .q3-7{fill:rgb(231,138,195)}
.Set2 .q4-7{fill:rgb(166,216,84)}
.Set2 .q5-7{fill:rgb(255,217,47)}
.Set2 .q6-7{fill:rgb(229,196,148)}
.Set2 .q0-8{fill:rgb(102,194,165)}
.Set2 .q1-8{fill:rgb(252,141,98)}
.Set2 .q2-8{fill:rgb(141,160,203)}
.Set2 .q3-8{fill:rgb(231,138,195)}
.Set2 .q4-8{fill:rgb(166,216,84)}
.Set2 .q5-8{fill:rgb(255,217,47)}
.Set2 .q6-8{fill:rgb(229,196,148)}
.Set2 .q7-8{fill:rgb(179,179,179)}
.Set3 .q0-3{fill:rgb(141,211,199)}
.Set3 .q1-3{fill:rgb(255,255,179)}
.Set3 .q2-3{fill:rgb(190,186,218)}
.Set3 .q0-4{fill:rgb(141,211,199)}
.Set3 .q1-4{fill:rgb(255,255,179)}
.Set3 .q2-4{fill:rgb(190,186,218)}
.Set3 .q3-4{fill:rgb(251,128,114)}
.Set3 .q0-5{fill:rgb(141,211,199)}
.Set3 .q1-5{fill:rgb(255,255,179)}
.Set3 .q2-5{fill:rgb(190,186,218)}
.Set3 .q3-5{fill:rgb(251,128,114)}
.Set3 .q4-5{fill:rgb(128,177,211)}
.Set3 .q0-6{fill:rgb(141,211,199)}
.Set3 .q1-6{fill:rgb(255,255,179)}
.Set3 .q2-6{fill:rgb(190,186,218)}
.Set3 .q3-6{fill:rgb(251,128,114)}
.Set3 .q4-6{fill:rgb(128,177,211)}
.Set3 .q5-6{fill:rgb(253,180,98)}
.Set3 .q0-7{fill:rgb(141,211,199)}
.Set3 .q1-7{fill:rgb(255,255,179)}
.Set3 .q2-7{fill:rgb(190,186,218)}
.Set3 .q3-7{fill:rgb(251,128,114)}
.Set3 .q4-7{fill:rgb(128,177,211)}
.Set3 .q5-7{fill:rgb(253,180,98)}
.Set3 .q6-7{fill:rgb(179,222,105)}
.Set3 .q0-8{fill:rgb(141,211,199)}
.Set3 .q1-8{fill:rgb(255,255,179)}
.Set3 .q2-8{fill:rgb(190,186,218)}
.Set3 .q3-8{fill:rgb(251,128,114)}
.Set3 .q4-8{fill:rgb(128,177,211)}
.Set3 .q5-8{fill:rgb(253,180,98)}
.Set3 .q6-8{fill:rgb(179,222,105)}
.Set3 .q7-8{fill:rgb(252,205,229)}
.Set3 .q0-9{fill:rgb(141,211,199)}
.Set3 .q1-9{fill:rgb(255,255,179)}
.Set3 .q2-9{fill:rgb(190,186,218)}
.Set3 .q3-9{fill:rgb(251,128,114)}
.Set3 .q4-9{fill:rgb(128,177,211)}
.Set3 .q5-9{fill:rgb(253,180,98)}
.Set3 .q6-9{fill:rgb(179,222,105)}
.Set3 .q7-9{fill:rgb(252,205,229)}
.Set3 .q8-9{fill:rgb(217,217,217)}
.Set3 .q0-10{fill:rgb(141,211,199)}
.Set3 .q1-10{fill:rgb(255,255,179)}
.Set3 .q2-10{fill:rgb(190,186,218)}
.Set3 .q3-10{fill:rgb(251,128,114)}
.Set3 .q4-10{fill:rgb(128,177,211)}
.Set3 .q5-10{fill:rgb(253,180,98)}
.Set3 .q6-10{fill:rgb(179,222,105)}
.Set3 .q7-10{fill:rgb(252,205,229)}
.Set3 .q8-10{fill:rgb(217,217,217)}
.Set3 .q9-10{fill:rgb(188,128,189)}
.Set3 .q0-11{fill:rgb(141,211,199)}
.Set3 .q1-11{fill:rgb(255,255,179)}
.Set3 .q2-11{fill:rgb(190,186,218)}
.Set3 .q3-11{fill:rgb(251,128,114)}
.Set3 .q4-11{fill:rgb(128,177,211)}
.Set3 .q5-11{fill:rgb(253,180,98)}
.Set3 .q6-11{fill:rgb(179,222,105)}
.Set3 .q7-11{fill:rgb(252,205,229)}
.Set3 .q8-11{fill:rgb(217,217,217)}
.Set3 .q9-11{fill:rgb(188,128,189)}
.Set3 .q10-11{fill:rgb(204,235,197)}
.Set3 .q0-12{fill:rgb(141,211,199)}
.Set3 .q1-12{fill:rgb(255,255,179)}
.Set3 .q2-12{fill:rgb(190,186,218)}
.Set3 .q3-12{fill:rgb(251,128,114)}
.Set3 .q4-12{fill:rgb(128,177,211)}
.Set3 .q5-12{fill:rgb(253,180,98)}
.Set3 .q6-12{fill:rgb(179,222,105)}
.Set3 .q7-12{fill:rgb(252,205,229)}
.Set3 .q8-12{fill:rgb(217,217,217)}
.Set3 .q9-12{fill:rgb(188,128,189)}
.Set3 .q10-12{fill:rgb(204,235,197)}
.Set3 .q11-12{fill:rgb(255,237,111)}
// This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/).
var colorbrewer = {YlGn: {
3: ["#f7fcb9","#addd8e","#31a354"],
4: ["#ffffcc","#c2e699","#78c679","#238443"],
5: ["#ffffcc","#c2e699","#78c679","#31a354","#006837"],
6: ["#ffffcc","#d9f0a3","#addd8e","#78c679","#31a354","#006837"],
7: ["#ffffcc","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
8: ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
9: ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"]
},YlGnBu: {
3: ["#edf8b1","#7fcdbb","#2c7fb8"],
4: ["#ffffcc","#a1dab4","#41b6c4","#225ea8"],
5: ["#ffffcc","#a1dab4","#41b6c4","#2c7fb8","#253494"],
6: ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#2c7fb8","#253494"],
7: ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
8: ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
9: ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]
},GnBu: {
3: ["#e0f3db","#a8ddb5","#43a2ca"],
4: ["#f0f9e8","#bae4bc","#7bccc4","#2b8cbe"],
5: ["#f0f9e8","#bae4bc","#7bccc4","#43a2ca","#0868ac"],
6: ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#43a2ca","#0868ac"],
7: ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
8: ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
9: ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"]
},BuGn: {
3: ["#e5f5f9","#99d8c9","#2ca25f"],
4: ["#edf8fb","#b2e2e2","#66c2a4","#238b45"],
5: ["#edf8fb","#b2e2e2","#66c2a4","#2ca25f","#006d2c"],
6: ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#2ca25f","#006d2c"],
7: ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
8: ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
9: ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"]
},PuBuGn: {
3: ["#ece2f0","#a6bddb","#1c9099"],
4: ["#f6eff7","#bdc9e1","#67a9cf","#02818a"],
5: ["#f6eff7","#bdc9e1","#67a9cf","#1c9099","#016c59"],
6: ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#1c9099","#016c59"],
7: ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
8: ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
9: ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"]
},PuBu: {
3: ["#ece7f2","#a6bddb","#2b8cbe"],
4: ["#f1eef6","#bdc9e1","#74a9cf","#0570b0"],
5: ["#f1eef6","#bdc9e1","#74a9cf","#2b8cbe","#045a8d"],
6: ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#2b8cbe","#045a8d"],
7: ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
8: ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
9: ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"]
},BuPu: {
3: ["#e0ecf4","#9ebcda","#8856a7"],
4: ["#edf8fb","#b3cde3","#8c96c6","#88419d"],
5: ["#edf8fb","#b3cde3","#8c96c6","#8856a7","#810f7c"],
6: ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8856a7","#810f7c"],
7: ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
8: ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
9: ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"]
},RdPu: {
3: ["#fde0dd","#fa9fb5","#c51b8a"],
4: ["#feebe2","#fbb4b9","#f768a1","#ae017e"],
5: ["#feebe2","#fbb4b9","#f768a1","#c51b8a","#7a0177"],
6: ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#c51b8a","#7a0177"],
7: ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
8: ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
9: ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"]
},PuRd: {
3: ["#e7e1ef","#c994c7","#dd1c77"],
4: ["#f1eef6","#d7b5d8","#df65b0","#ce1256"],
5: ["#f1eef6","#d7b5d8","#df65b0","#dd1c77","#980043"],
6: ["#f1eef6","#d4b9da","#c994c7","#df65b0","#dd1c77","#980043"],
7: ["#f1eef6","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
8: ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
9: ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"]
},OrRd: {
3: ["#fee8c8","#fdbb84","#e34a33"],
4: ["#fef0d9","#fdcc8a","#fc8d59","#d7301f"],
5: ["#fef0d9","#fdcc8a","#fc8d59","#e34a33","#b30000"],
6: ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#e34a33","#b30000"],
7: ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
8: ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
9: ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"]
},YlOrRd: {
3: ["#ffeda0","#feb24c","#f03b20"],
4: ["#ffffb2","#fecc5c","#fd8d3c","#e31a1c"],
5: ["#ffffb2","#fecc5c","#fd8d3c","#f03b20","#bd0026"],
6: ["#ffffb2","#fed976","#feb24c","#fd8d3c","#f03b20","#bd0026"],
7: ["#ffffb2","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
8: ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
9: ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"]
},YlOrBr: {
3: ["#fff7bc","#fec44f","#d95f0e"],
4: ["#ffffd4","#fed98e","#fe9929","#cc4c02"],
5: ["#ffffd4","#fed98e","#fe9929","#d95f0e","#993404"],
6: ["#ffffd4","#fee391","#fec44f","#fe9929","#d95f0e","#993404"],
7: ["#ffffd4","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
8: ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
9: ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"]
},Purples: {
3: ["#efedf5","#bcbddc","#756bb1"],
4: ["#f2f0f7","#cbc9e2","#9e9ac8","#6a51a3"],
5: ["#f2f0f7","#cbc9e2","#9e9ac8","#756bb1","#54278f"],
6: ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#756bb1","#54278f"],
7: ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
8: ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
9: ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"]
},Blues: {
3: ["#deebf7","#9ecae1","#3182bd"],
4: ["#eff3ff","#bdd7e7","#6baed6","#2171b5"],
5: ["#eff3ff","#bdd7e7","#6baed6","#3182bd","#08519c"],
6: ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#3182bd","#08519c"],
7: ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
8: ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
9: ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]
},Greens: {
3: ["#e5f5e0","#a1d99b","#31a354"],
4: ["#edf8e9","#bae4b3","#74c476","#238b45"],
5: ["#edf8e9","#bae4b3","#74c476","#31a354","#006d2c"],
6: ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#31a354","#006d2c"],
7: ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
8: ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
9: ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"]
},Oranges: {
3: ["#fee6ce","#fdae6b","#e6550d"],
4: ["#feedde","#fdbe85","#fd8d3c","#d94701"],
5: ["#feedde","#fdbe85","#fd8d3c","#e6550d","#a63603"],
6: ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#e6550d","#a63603"],
7: ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
8: ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
9: ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"]
},Reds: {
3: ["#fee0d2","#fc9272","#de2d26"],
4: ["#fee5d9","#fcae91","#fb6a4a","#cb181d"],
5: ["#fee5d9","#fcae91","#fb6a4a","#de2d26","#a50f15"],
6: ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#de2d26","#a50f15"],
7: ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
8: ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
9: ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]
},Greys: {
3: ["#f0f0f0","#bdbdbd","#636363"],
4: ["#f7f7f7","#cccccc","#969696","#525252"],
5: ["#f7f7f7","#cccccc","#969696","#636363","#252525"],
6: ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#636363","#252525"],
7: ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
8: ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
9: ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]
},PuOr: {
3: ["#f1a340","#f7f7f7","#998ec3"],
4: ["#e66101","#fdb863","#b2abd2","#5e3c99"],
5: ["#e66101","#fdb863","#f7f7f7","#b2abd2","#5e3c99"],
6: ["#b35806","#f1a340","#fee0b6","#d8daeb","#998ec3","#542788"],
7: ["#b35806","#f1a340","#fee0b6","#f7f7f7","#d8daeb","#998ec3","#542788"],
8: ["#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788"],
9: ["#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788"],
10: ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],
11: ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"]
},BrBG: {
3: ["#d8b365","#f5f5f5","#5ab4ac"],
4: ["#a6611a","#dfc27d","#80cdc1","#018571"],
5: ["#a6611a","#dfc27d","#f5f5f5","#80cdc1","#018571"],
6: ["#8c510a","#d8b365","#f6e8c3","#c7eae5","#5ab4ac","#01665e"],
7: ["#8c510a","#d8b365","#f6e8c3","#f5f5f5","#c7eae5","#5ab4ac","#01665e"],
8: ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e"],
9: ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e"],
10: ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],
11: ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"]
},PRGn: {
3: ["#af8dc3","#f7f7f7","#7fbf7b"],
4: ["#7b3294","#c2a5cf","#a6dba0","#008837"],
5: ["#7b3294","#c2a5cf","#f7f7f7","#a6dba0","#008837"],
6: ["#762a83","#af8dc3","#e7d4e8","#d9f0d3","#7fbf7b","#1b7837"],
7: ["#762a83","#af8dc3","#e7d4e8","#f7f7f7","#d9f0d3","#7fbf7b","#1b7837"],
8: ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
9: ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
10: ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],
11: ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"]
},PiYG: {
3: ["#e9a3c9","#f7f7f7","#a1d76a"],
4: ["#d01c8b","#f1b6da","#b8e186","#4dac26"],
5: ["#d01c8b","#f1b6da","#f7f7f7","#b8e186","#4dac26"],
6: ["#c51b7d","#e9a3c9","#fde0ef","#e6f5d0","#a1d76a","#4d9221"],
7: ["#c51b7d","#e9a3c9","#fde0ef","#f7f7f7","#e6f5d0","#a1d76a","#4d9221"],
8: ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
9: ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
10: ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],
11: ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"]
},RdBu: {
3: ["#ef8a62","#f7f7f7","#67a9cf"],
4: ["#ca0020","#f4a582","#92c5de","#0571b0"],
5: ["#ca0020","#f4a582","#f7f7f7","#92c5de","#0571b0"],
6: ["#b2182b","#ef8a62","#fddbc7","#d1e5f0","#67a9cf","#2166ac"],
7: ["#b2182b","#ef8a62","#fddbc7","#f7f7f7","#d1e5f0","#67a9cf","#2166ac"],
8: ["#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
9: ["#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
10: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],
11: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]
},RdGy: {
3: ["#ef8a62","#ffffff","#999999"],
4: ["#ca0020","#f4a582","#bababa","#404040"],
5: ["#ca0020","#f4a582","#ffffff","#bababa","#404040"],
6: ["#b2182b","#ef8a62","#fddbc7","#e0e0e0","#999999","#4d4d4d"],
7: ["#b2182b","#ef8a62","#fddbc7","#ffffff","#e0e0e0","#999999","#4d4d4d"],
8: ["#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d"],
9: ["#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d"],
10: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],
11: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"]
},RdYlBu: {
3: ["#fc8d59","#ffffbf","#91bfdb"],
4: ["#d7191c","#fdae61","#abd9e9","#2c7bb6"],
5: ["#d7191c","#fdae61","#ffffbf","#abd9e9","#2c7bb6"],
6: ["#d73027","#fc8d59","#fee090","#e0f3f8","#91bfdb","#4575b4"],
7: ["#d73027","#fc8d59","#fee090","#ffffbf","#e0f3f8","#91bfdb","#4575b4"],
8: ["#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4"],
9: ["#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4"],
10: ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],
11: ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"]
},Spectral: {
3: ["#fc8d59","#ffffbf","#99d594"],
4: ["#d7191c","#fdae61","#abdda4","#2b83ba"],
5: ["#d7191c","#fdae61","#ffffbf","#abdda4","#2b83ba"],
6: ["#d53e4f","#fc8d59","#fee08b","#e6f598","#99d594","#3288bd"],
7: ["#d53e4f","#fc8d59","#fee08b","#ffffbf","#e6f598","#99d594","#3288bd"],
8: ["#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd"],
9: ["#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd"],
10: ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],
11: ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]
},RdYlGn: {
3: ["#fc8d59","#ffffbf","#91cf60"],
4: ["#d7191c","#fdae61","#a6d96a","#1a9641"],
5: ["#d7191c","#fdae61","#ffffbf","#a6d96a","#1a9641"],
6: ["#d73027","#fc8d59","#fee08b","#d9ef8b","#91cf60","#1a9850"],
7: ["#d73027","#fc8d59","#fee08b","#ffffbf","#d9ef8b","#91cf60","#1a9850"],
8: ["#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
9: ["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
10: ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],
11: ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]
},Accent: {
3: ["#7fc97f","#beaed4","#fdc086"],
4: ["#7fc97f","#beaed4","#fdc086","#ffff99"],
5: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0"],
6: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f"],
7: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17"],
8: ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"]
},Dark2: {
3: ["#1b9e77","#d95f02","#7570b3"],
4: ["#1b9e77","#d95f02","#7570b3","#e7298a"],
5: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e"],
6: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02"],
7: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],
8: ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"]
},Paired: {
3: ["#a6cee3","#1f78b4","#b2df8a"],
4: ["#a6cee3","#1f78b4","#b2df8a","#33a02c"],
5: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99"],
6: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c"],
7: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f"],
8: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00"],
9: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6"],
10: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a"],
11: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99"],
12: ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"]
},Pastel1: {
3: ["#fbb4ae","#b3cde3","#ccebc5"],
4: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4"],
5: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6"],
6: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc"],
7: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd"],
8: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],
9: ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]
},Pastel2: {
3: ["#b3e2cd","#fdcdac","#cbd5e8"],
4: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4"],
5: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9"],
6: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae"],
7: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],
8: ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"]
},Set1: {
3: ["#e41a1c","#377eb8","#4daf4a"],
4: ["#e41a1c","#377eb8","#4daf4a","#984ea3"],
5: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"],
6: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33"],
7: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628"],
8: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"],
9: ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"]
},Set2: {
3: ["#66c2a5","#fc8d62","#8da0cb"],
4: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3"],
5: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854"],
6: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f"],
7: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494"],
8: ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"]
},Set3: {
3: ["#8dd3c7","#ffffb3","#bebada"],
4: ["#8dd3c7","#ffffb3","#bebada","#fb8072"],
5: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3"],
6: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462"],
7: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69"],
8: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5"],
9: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9"],
10: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],
11: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5"],
12: ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"]
}};
(function() {
var DEBUG = false;
d3.layout.grid = function() {
var mode = "equal",
layout = _distributeEqually,
x = d3.scale.ordinal(),
y = d3.scale.ordinal(),
size = [1, 1],
actualSize = [0, 0],
nodeSize = false,
bands = false,
padding = [0, 0],
cols, rows;
function grid(nodes) {
return layout(nodes);
}
function _distributeEqually(nodes) {
var i = -1,
n = nodes.length,
_cols = cols ? cols : 0,
_rows = rows ? rows : 0,
col, row;
// FIXME: make explicit rows/cols exclusive? Or find a smart way to deal with overflows (repeat?)
// FIXME: when rows are set, fill top-to-bottom (make test with 5 data points and 4 rows)
if (_rows && !_cols) {
_cols = Math.ceil(n / _rows)
} else {
_cols || (_cols = Math.ceil(Math.sqrt(n)));
_rows || (_rows = Math.ceil(n / _cols));
}
if (nodeSize) {
x.domain(d3.range(_cols)).range(d3.range(0, (size[0] + padding[0]) * _cols, size[0] + padding[0]));
y.domain(d3.range(_rows)).range(d3.range(0, (size[1] + padding[1]) * _rows, size[1] + padding[1]));
actualSize[0] = bands ? x(_cols - 1) + size[0] : x(_cols - 1);
actualSize[1] = bands ? y(_rows - 1) + size[1] : y(_rows - 1);
} else if (bands) {
x.domain(d3.range(_cols)).rangeBands([0, size[0]], padding[0], 0);
y.domain(d3.range(_rows)).rangeBands([0, size[1]], padding[1], 0);
actualSize[0] = x.rangeBand();
actualSize[1] = y.rangeBand();
} else {
x.domain(d3.range(_cols)).rangePoints([0, size[0]]);
y.domain(d3.range(_rows)).rangePoints([0, size[1]]);
actualSize[0] = x(1);
actualSize[1] = y(1);
}
if (DEBUG) console.log('cols/rows', _cols, _rows);
while (++i < n) {
col = i % _cols;
row = Math.floor(i / _cols);
if (DEBUG) console.log(i, col, row);
nodes[i].x = x(col);
nodes[i].y = y(row);
}
return nodes;
}
// grid.mode = function(value) {
// if (!arguments.length) return mode;
// switch(mode = value) {
// case "equal":
// layout = _distributeEqually;
// break;
// }
// return grid;
// }
grid.size = function(value) {
if (!arguments.length) return nodeSize ? actualSize : size;
actualSize = [0, 0];
nodeSize = (size = value) == null;
return grid;
}
grid.nodeSize = function(value) {
if (!arguments.length) return nodeSize ? size : actualSize;
actualSize = [0, 0];
nodeSize = (size = value) != null;
return grid;
}
grid.rows = function(value) {
if (!arguments.length) return rows;
rows = value;
return grid;
}
grid.cols = function(value) {
if (!arguments.length) return cols;
cols = value;
return grid;
}
grid.bands = function() {
bands = true;
return grid;
}
grid.points = function() {
bands = false;
return grid;
}
grid.padding = function(value) {
if (!arguments.length) return padding;
padding = value;
return grid;
}
return grid;
};
})();
// d3.tip
// Copyright (c) 2013 Justin Palmer
//
// Tooltips for d3.js SVG visualizations
// Public - contructs a new tooltip
//
// Returns a tip
d3.tip = function() {
var direction = d3_tip_direction,
offset = d3_tip_offset,
html = d3_tip_html,
node = initNode(),
svg = null,
point = null,
target = null
function tip(vis) {
svg = getSVGNode(vis)
point = svg.createSVGPoint()
document.body.appendChild(node)
}
// Public - show the tooltip on the screen
//
// Returns a tip
tip.show = function() {
var args = Array.prototype.slice.call(arguments)
if(args[args.length - 1] instanceof SVGElement) target = args.pop()
var content = html.apply(this, args),
poffset = offset.apply(this, args),
dir = direction.apply(this, args),
nodel = d3.select(node), i = 0,
coords
nodel.html(content)
.style({ opacity: 1, 'pointer-events': 'all' })
while(i--) nodel.classed(directions[i], false)
coords = direction_callbacks.get(dir).apply(this)
nodel.classed(dir, true).style({
top: (coords.top + poffset[0]) + 'px',
left: (coords.left + poffset[1]) + 'px'
})
return tip
}
// Public - hide the tooltip
//
// Returns a tip
tip.hide = function() {
nodel = d3.select(node)
nodel.style({ opacity: 0, 'pointer-events': 'none' })
return tip
}
// Public: Proxy attr calls to the d3 tip container. Sets or gets attribute value.
//
// n - name of the attribute
// v - value of the attribute
//
// Returns tip or attribute value
tip.attr = function(n, v) {
if (arguments.length < 2 && typeof n === 'string') {
return d3.select(node).attr(n)
} else {
var args = Array.prototype.slice.call(arguments)
d3.selection.prototype.attr.apply(d3.select(node), args)
}
return tip
}
// Public: Proxy style calls to the d3 tip container. Sets or gets a style value.
//
// n - name of the property
// v - value of the property
//
// Returns tip or style property value
tip.style = function(n, v) {
if (arguments.length < 2 && typeof n === 'string') {
return d3.select(node).style(n)
} else {
var args = Array.prototype.slice.call(arguments)
d3.selection.prototype.style.apply(d3.select(node), args)
}
return tip
}
// Public: Set or get the direction of the tooltip
//
// v - One of n(north), s(south), e(east), or w(west), nw(northwest),
// sw(southwest), ne(northeast) or se(southeast)
//
// Returns tip or direction
tip.direction = function(v) {
if (!arguments.length) return direction
direction = v == null ? v : d3.functor(v)
return tip
}
// Public: Sets or gets the offset of the tip
//
// v - Array of [x, y] offset
//
// Returns offset or
tip.offset = function(v) {
if (!arguments.length) return offset
offset = v == null ? v : d3.functor(v)
return tip
}
// Public: sets or gets the html value of the tooltip
//
// v - String value of the tip
//
// Returns html value or tip
tip.html = function(v) {
if (!arguments.length) return html
html = v == null ? v : d3.functor(v)
return tip
}
function d3_tip_direction() { return 'n' }
function d3_tip_offset() { return [0, 0] }
function d3_tip_html() { return ' ' }
var direction_callbacks = d3.map({
n: direction_n,
s: direction_s,
e: direction_e,
w: direction_w,
nw: direction_nw,
ne: direction_ne,
sw: direction_sw,
se: direction_se
}),
directions = direction_callbacks.keys()
function direction_n() {
var bbox = getScreenBBox()
return {
top: bbox.n.y - node.offsetHeight,
left: bbox.n.x - node.offsetWidth / 2
}
}
function direction_s() {
var bbox = getScreenBBox()
return {
top: bbox.s.y,
left: bbox.s.x - node.offsetWidth / 2
}
}
function direction_e() {
var bbox = getScreenBBox()
return {
top: bbox.e.y - node.offsetHeight / 2,
left: bbox.e.x
}
}
function direction_w() {
var bbox = getScreenBBox()
return {
top: bbox.w.y - node.offsetHeight / 2,
left: bbox.w.x - node.offsetWidth
}
}
function direction_nw() {
var bbox = getScreenBBox()
return {
top: bbox.nw.y - node.offsetHeight,
left: bbox.nw.x - node.offsetWidth
}
}
function direction_ne() {
var bbox = getScreenBBox()
return {
top: bbox.ne.y - node.offsetHeight,
left: bbox.ne.x
}
}
function direction_sw() {
var bbox = getScreenBBox()
return {
top: bbox.sw.y,
left: bbox.sw.x - node.offsetWidth
}
}
function direction_se() {
var bbox = getScreenBBox()
return {
top: bbox.se.y,
left: bbox.e.x
}
}
function initNode() {
var node = d3.select(document.createElement('div'))
node.style({
position: 'absolute',
opacity: 0,
pointerEvents: 'none',
boxSizing: 'border-box'
})
return node.node()
}
function getSVGNode(el) {
el = el.node()
if(el.tagName.toLowerCase() == 'svg')
return el
return el.ownerSVGElement
}
// Private - gets the screen coordinates of a shape
//
// Given a shape on the screen, will return an SVGPoint for the directions
// n(north), s(south), e(east), w(west), ne(northeast), se(southeast), nw(northwest),
// sw(southwest).
//
// +-+-+
// | |
// + +
// | |
// +-+-+
//
// Returns an Object {n, s, e, w, nw, sw, ne, se}
function getScreenBBox() {
var targetel = target || d3.event.target,
bbox = {},
matrix = targetel.getScreenCTM(),
tbbox = targetel.getBBox(),
width = tbbox.width,
height = tbbox.height,
x = tbbox.x,
y = tbbox.y,
scrollTop = document.documentElement.scrollTop || document.body.scrollTop,
scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
point.x = x + scrollLeft
point.y = y + scrollTop
bbox.nw = point.matrixTransform(matrix)
point.x += width
bbox.ne = point.matrixTransform(matrix)
point.y += height
bbox.se = point.matrixTransform(matrix)
point.x -= width
bbox.sw = point.matrixTransform(matrix)
point.y -= height / 2
bbox.w = point.matrixTransform(matrix)
point.x += width
bbox.e = point.matrixTransform(matrix)
point.x -= width / 2
point.y -= height / 2
bbox.n = point.matrixTransform(matrix)
point.y += height
bbox.s = point.matrixTransform(matrix)
return bbox
}
return tip
};
(function() {
d3.fisheye = {
scale: function(scaleType) {
return d3_fisheye_scale(scaleType(), 3, 0);
},
circular: function() {
var radius = 200,
distortion = 2,
k0,
k1,
focus = [0, 0];
function fisheye(d) {
var dx = d.x - focus[0],
dy = d.y - focus[1],
dd = Math.sqrt(dx * dx + dy * dy);
if (!dd || dd >= radius) return {x: d.x, y: d.y, z: dd >= radius ? 1 : 10};
var k = k0 * (1 - Math.exp(-dd * k1)) / dd * .75 + .25;
return {x: focus[0] + dx * k, y: focus[1] + dy * k, z: Math.min(k, 10)};
}
function rescale() {
k0 = Math.exp(distortion);
k0 = k0 / (k0 - 1) * radius;
k1 = distortion / radius;
return fisheye;
}
fisheye.radius = function(_) {
if (!arguments.length) return radius;
radius = +_;
return rescale();
};
fisheye.distortion = function(_) {
if (!arguments.length) return distortion;
distortion = +_;
return rescale();
};
fisheye.focus = function(_) {
if (!arguments.length) return focus;
focus = _;
return fisheye;
};
return rescale();
}
};
function d3_fisheye_scale(scale, d, a) {
function fisheye(_) {
var x = scale(_),
left = x < a,
range = d3.extent(scale.range()),
min = range[0],
max = range[1],
m = left ? a - min : max - a;
if (m == 0) m = max - min;
return (left ? -1 : 1) * m * (d + 1) / (d + (m / Math.abs(x - a))) + a;
}
fisheye.distortion = function(_) {
if (!arguments.length) return d;
d = +_;
return fisheye;
};
fisheye.focus = function(_) {
if (!arguments.length) return a;
a = +_;
return fisheye;
};
fisheye.copy = function() {
return d3_fisheye_scale(scale.copy(), d, a);
};
fisheye.nice = scale.nice;
fisheye.ticks = scale.ticks;
fisheye.tickFormat = scale.tickFormat;
return d3.rebind(fisheye, scale, "domain", "range");
}
})();
<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
<title>Entities Map</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.8.0/lodash.js"></script>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/d3/3.5.2/d3.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3-legend/1.5.0/d3-legend.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.33/browser.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.1/js/standalone/selectize.min.js"></script>
<script src="./d3.grid.js"></script>
<script src="./d3.tip.v0.6.3.js" type="text/javascript"></script>
<script src="./colorbrewer.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.1/css/selectize.min.css">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'>
<style>
* {
font-family: 'Open Sans', sans-serif;
}
.chart {
height: 500px;
width: 100%;
}
.vm:hover {
opacity: 0.8;
cursor: pointer;
}
.vm {
transition: transform 0.1s;
}
.vm.active {
fill: #aaa;
}
.axis text {
font-size: 10px;
font-family: 'Open Sans', sans-serif;
text-transform: uppercase
}
.header:hover {
opacity: 1;
}
.header {
position: relative;
margin-bottom: 30px;
padding: 10px;
padding-top: 30px;
background-color: #ECEBEB;
opacity: 0.3;
transition: opacity 0.2s ease;
}
.header > div {
margin: 5px 0
}
.header h2 {
margin: 0;
position: absolute;
top: 10px;
right: 10px;
}
.header .status {
position: absolute;
bottom: 10px;
right: 10px;
font-size: 10px;
}
.header label {
font-size: 14px;
display: inline-block;
}
.header input {
width: 158px;
font-size: 13px;
padding: 7px;
}
body.dark {
background: black;
}
.dark .chart {
background: black;
}
.dark .axis text {
fill: white;
}
.dark .axis line,
.dark .axis path {
stroke: white !important;
}
button {
padding: 10px;
margin-top: 10px;
margin-right: 10px;
font-size: 14px;
}
.active {
stroke: black;
}
.background {
fill: none;
pointer-events: all;
}
.group {
pointer-events: none;
}
.rect text:hover {
text-decoration: underline;
cursor: pointer;
}
.group-title {
text-transform: uppercase;
}
text.legendTitle {
text-transform: uppercase;
}
.selectize-input {
width: 250px;
}
.group-level-1 text {
font-size: 70%;
}
.group-level-2 text {
font-size: 50%;
}
.clear-filter, .clear-grouping {
font-size: 12px;
text-decoration: underline;
cursor: pointer;
display: block;
}
.field {
display: inline-block;
vertical-align: top;
margin-left: 10px
}
.d3-tip {
line-height: 1;
font-weight: bold;
padding: 12px;
background: rgba(0, 0, 0, 0.8);
color: #fff;
font-size: 12px;
border-radius: 2px;
}
/* Creates a small triangle extender for the tooltip */
.d3-tip:after {
box-sizing: border-box;
display: inline;
font-size: 10px;
width: 100%;
line-height: 1;
color: rgba(0, 0, 0, 0.8);
content: "\25BC";
position: absolute;
text-align: center;
}
/* Style northward tooltips differently */
.d3-tip.n:after {
margin: -1px 0 0 0;
top: 100%;
left: 0;
}
</style>
</head>
<body>
<script type="text/babel">
var VMS = 1000;
var TENANTS = 10;
var MIN_ALPHA = 0.00586;
var DURATION = 1000;
var BIG_T = 1;
var SMALL_T = 2;
var WIDTH = 600;
var HEIGHT = 1000;
var MARGIN = 30;
var PADDING = 30;
var RIGHT_PADDING = 150;
var VM_MIN_SIZE = 10;
var MAX_COLS = 20;
var FILTER = "";
var GROUPING = [];
var COLORING = "cpu";
var maxItems = 500;
var statusValues = ["up", "warning", "error"];
var colors = _.drop(colorbrewer.Blues[9], 3);
var status_colors = [colorbrewer.RdYlGn[11][10], colorbrewer.RdYlGn[11][3], colorbrewer.RdYlGn[11][0]];
var heatmapColour = d3.scale.linear()
.domain(d3.range(0, 1, 1.0 / (colors.length)))
.range(colors);
var coloringScale = d3.scale.linear().range([0, 1]);
var statusScale = d3.scale.ordinal().domain(statusValues).range(status_colors);
var tip = d3.tip()
.attr('class', 'd3-tip')
.offset([-10, 0])
.html(function (d) {
var c = d3.lab(color(d, "status")).brighter(1.5);
return "<span style='color:"+c+"'>" + d.id + "</span>";
});
var color = (d, coloring) => {
coloring = coloring ? coloring : COLORING;
if (coloring == "status") {
return statusScale(d[coloring])
} else {
return heatmapColour(coloringScale(d[coloring]))
}
};
color.getScale = () => {
if (COLORING == "status") {
return statusScale
} else {
return d3.scale.quantize().domain(coloringScale.domain()).range(heatmapColour.range());
}
};
var update_coloring = (value) => {
COLORING = value || "cpu";
switch (COLORING) {
case "cpu":
coloringScale.domain([2, 64]);
break;
case "ram":
coloringScale.domain([1000, 64000]);
break;
case "volumes":
coloringScale.domain([10, 4000]);
break;
// case "status":
// coloringScale.domain(["up", "down", "error"]).range([0, 0.5, 1]);
// heatmapColour = d3.scale.linear()
// .domain(d3.range(0, 1, 1.0 / (status_colors.length)))
// .range(status_colors)
// break;
}
render()
};
var update_filtering = () => {
FILTER = d3.select(".filter-by-input").property("value");
render();
};
var set_status = (status) => { d3.select(".status").html(status || "idle") };
d3.select(".filter-by-input").on("keyup", _.debounce(update_filtering, 500));
var genVms = () => {
function gen_val(min, max, tenant_id) {
if (tenant_id === BIG_T) {
min = max * 0.8;
} else if (tenant_id === SMALL_T) {
max = min * 2;
} else if (tenant_id % 2 === 0) {
if (Math.random() < 0.9) {
min = max * 0.5
}
} else {
if (Math.random() < 0.5) {
min = max * 0.3;
max = max * 0.8;
}
}
return _.random(min, max)
}
function tenant() {
return _.random(1, TENANTS);
}
function vm(index) {
var tenant_id = tenant();
var cpu = gen_val(2, 64, tenant_id);
var ram = gen_val(1000, 64000, tenant_id);
var volumes = gen_val(10, 4000);
var network = gen_val(1, 120, tenant_id);
var tag = "regular";
var status = _.sample(statusValues);
if (status == "error") {
cpu = ram = volumes = network = 0;
}
if (cpu > 60) {
tag = "high cpu"
}
if (ram > 60000) {
tag = "high memory"
}
if (volumes > 3500) {
tag = "high storage"
}
return {
id: "vm-" + index,
tenant: "tenant-" + tenant_id,
cpu: cpu,
ram: ram,
status: status,
volumes: volumes,
network: network,
tag: tag
};
}
var result = [];
for (var i = 0; i < VMS; i++) {
result.push(vm(i))
}
return result
};
var centered;
var vmSize;
var g_width, g_height, x_offset, y_offset;
var clicked = function(d) {
if (d.truncated) return;
var x, y, k;
var g = d3.select(".vms");
// TODO : centering does not work when grouping is enabled/disabled - one of them breaks
if (!centered) {
var wrapperBB = g.node().getBBox();
g_width = wrapperBB.width;
g_height = wrapperBB.height;
x_offset = wrapperBB.x;
y_offset = wrapperBB.y;
}
if (d && centered !== d) {
k = 250 / d.width;
x = d._x ;//+ vmSize / 2;
y = d._y ; //+ vmSize / 2;
centered = d;
} else {
x = g_width / 2;
y = g_height / 2 - MARGIN;
k = 1;
centered = null;
}
g.selectAll(".vm")
.classed("active", centered && function(d) { return d === centered; });
d3.select(".wrapper").transition()
.duration(750)
.attr("transform", "translate(" + g_width / 2 + "," + g_height / 2 + ")scale(" + k + ")translate(" + -x + "," + (-y)+ ")")
.style("stroke-width", 1.5 / k + "px");
};
var radius = d3.scale.linear().range([5, 10]).domain([2, 64]);
var svg = d3.select('.chart')
.append('svg')
.style('margin', '0 auto')
.style('display', 'block')
.attr('width', "90%")
.attr('height', HEIGHT + MARGIN);
svg.call(tip);
var bg = svg.append("rect")
.attr("class", "background")
.attr('width', "90%")
.on("click", clicked)
.attr('height', HEIGHT);
WIDTH = svg.node().getBoundingClientRect().width;
var wrapper = svg.append("g").attr("class", "wrapper").attr("transform", "translate(" + 0 + "," + 30 + ")");
wrapper.append("g").attr("class", "groups"); //.attr("transform", "translate(" + 0 + "," + PADDING / 2 + ")");
wrapper.append("g").attr("class", "vms");
var legendGroup = wrapper.append("g").attr("class", "legend").attr("transform", "translate(" + (WIDTH - RIGHT_PADDING + 10) + "," + 0 + ")");
var vm_data = genVms();
var legend = d3.legend.color()
.labelFormat(d3.format(".0f"))
.title(COLORING);
var isGroup = function (item) {
return Boolean(item) && Boolean(item[0]) && Boolean(item[0].values)
};
var calculateGrids = function(groups, size, offset, nodeSize, cols, padding, parent) {
if (groups.length == 0) {
return
}
if (!offset) {
offset = {
x: 0,
y: 0
}
}
if (!padding) {
padding = 0;
}
var groupsGrid;
if (size) {
// calc groups grid based on size
groupsGrid = d3.layout.grid()
.bands()
.size([size.width, size.height])
.padding([0.1, 0.1]);
} else {
groupsGrid = d3.layout.grid()
.bands()
.nodeSize([nodeSize, nodeSize])
.cols(cols)
.padding([padding, padding]);
}
// apply grid
groupsGrid(groups);
var groupSize = groupsGrid.nodeSize();
var innerPadding;
if (groups[0].key == "undefined") {
innerPadding = {
x: groupSize[0] * 0.1,
y: groupSize[0] * 0.1
}
} else {
innerPadding = {
x: groupSize[0] * 0.1,
y: groupSize[1] * 0.2
}
}
groups = groups.map(function(group) {
group._x = group.x + offset.x;
group._y = group.y + offset.y;
group.width = groupSize[0];
group.height = groupSize[1];
group.inner_padding = innerPadding;
group._parent = parent;
return group
});
// sort to get largest group
groups = _.sortBy(groups, function (group) {
return -_.size(group.values)
});
// calc values grid
// var valuesGridSize = Math.min.apply(null, groupsGrid.nodeSize());
if (isGroup(groups)) {
var valueGridSize = [groupSize[0] - innerPadding.x, groupSize[1] - innerPadding.y];
var valuesGrid = d3.layout.grid()
.bands()
.size(valueGridSize)
.padding([0.1, 0.1]);
// apply values grid
valuesGrid(groups[0].values);
var valueSize = Math.min.apply(null, valuesGrid.nodeSize());
var valuePadding = groups[0].values.length > 1 ? groups[0].values[1].x - valuesGrid.nodeSize()[0] : 0;
var valueCols = Math.round(valuesGrid.size()[0] / (valueSize + valuePadding));
var valueCenterPadding = (valueGridSize[0] - (valueCols * (valueSize + valuePadding))) / 2;
groups.forEach(function(group) {
if (group.values) {
if (!isGroup(group.values)) {
group.values = _.sortBy(group.values, function(d) {
return d[COLORING]
})
}
var valuesOffset = {
x: group._x + innerPadding.x/2 + valueCenterPadding/2,
y: group._y + innerPadding.y - innerPadding.x/2
};
calculateGrids(group.values, null, valuesOffset, valueSize, valueCols, valuePadding, group )
}
})
}
};
var renderGroups = function(groups, level) {
var groupsContainer = svg.select(".groups .group-level-" + level);
if (groupsContainer.size() == 0) {
groupsContainer = svg.select(".groups").append("g").attr("class", "group-level-" + level)
}
var groupsUpdate = groupsContainer.selectAll(".rect").data(groups, (d) => d.key );
var groupsEnter = groupsUpdate.enter().append("g")
.attr("class", "rect")
.attr("transform", function (d) {
return "translate(" + (d._x) + "," + d._y + ")"
});
groupsEnter.append("rect")
.attr("class", "group")
.attr("width", (d) => d.width)
.attr("height", (d) => d.height)
.style("fill", function (d, i) {
if (d.key != "undefined") {
// return "hsla(193,31%,87%,1)";
return "rgba(167, 181, 185, 0.2)";
} else {
return "none"
}
})
.style("opacity", 1e-6);
groupsEnter.append("text")
.attr("class", "group-title")
.attr("transform", function (d) {
return "translate(" + (d.width / 2) + "," + (d.inner_padding.y/2.5) + ")"
})
.style("text-anchor", "middle")
.on("click", function (d) {
$(".group-by-input")[0].selectize.removeItem(GROUPING[level]);
$(".filter-by-input").val(this.textContent);
update_filtering();
});
groupsUpdate.transition().duration(DURATION)
.attr("transform", function (d) {
return "translate(" + (d._x) + "," + d._y + ")"
})
.select(".group")
.attr("width", (d) => d.width)
.attr("height", (d) => d.height)
.style("opacity", 1);
groupsUpdate.each(function (d, i) {
d3.select(this).select(".group-title")
.text(d.key != "undefined" ? d.key.split("|").pop() : "")
.attr("transform", function (d) {
return "translate(" + (d.width / 2) + "," + (d.inner_padding.y/2.5) + ")"
})
});
groupsUpdate.exit()
.transition().duration(DURATION)
.style("opacity", 1e-6)
.remove();
};
var upDownTween = function(middleValue, endValue) {
return function(d, i, currentValue) {
var value = _.isFunction(middleValue) ? middleValue.apply(this, arguments) : middleValue;
var up = d3.interpolate(currentValue, value);
var down = d3.interpolate(value, endValue);
return function(t) {
return t <= 0.5 ? up(t) : down(t)
}
}
};
var renderValues = function(values) {
var vms = d3.select(".vms").selectAll(".vm").data(_.filter(values, (v) => !v.truncated), function (d) {
return d.id
});
vms.enter().append("rect")
// .attr("transform", "matrix(1,0,0,1,0,0)")
.attr("transform", "skewY(0) translate(0,0)")
.attr("class", "vm")
.attr("fill", function (d) {
return "white"
})
.attr("width", 0)
.attr("height", 0)
.attr("x", (d) => d._x)
.attr("y", (d) => d._y)
.on("click", clicked)
.on('mouseover', tip.show)
.on('mouseout', tip.hide)
.style("fill-opacity", 1e-6);
vms.transition().duration(DURATION)
.style("fill-opacity", (d) => d.truncated ? 1e-6 : 1)
.attr("x", (d) => d._x)
.attr("y", (d) => d._y)
.attr("width", (d) => d.width)
.attr("height", (d) => d.height)
.attr("fill", function (d, i) {
return color(d);
})
.attrTween("transform", upDownTween(function(d, i){
var amount = 0;
var correction = 0;
if ( Number(d3.select(this).attr("x")) != d._x ) {
amount = 30;
amount = i % 2 == 0 ? amount : -amount;
correction = -1 * Math.tan(amount * Math.PI / 180) * d._x; // Thanks Shahar
}
return "skewY(" + amount + ") translate(0, "+ correction +")";
}, "skewY(0) translate(0, 0)"))
vms.exit()
.transition().duration(DURATION)
.attr("width", 0)
.attr("height", 0)
.style("fill-opacity", 1e-6)
.attr("fill", "white")
.remove();
var truncated = d3.select(".vms").selectAll(".truncated").data(_.filter(values, (v) => v.truncated), (d) => d._parent.key)
var truncatedEnter = truncated.enter()
.append("g")
.attr("class", "truncated")
.attr("transform", (d) => `translate(${d._parent._x + d._parent.width / 2}, ${d._parent._y + d._parent.height / 2})`)
.style("opacity", 1e-6)
.style("font-size", 1)
.style("text-anchor", "middle");
truncatedEnter.each(function(d) {
debugger
var text = d3.select(this).append("text")
.attr("x", 0)
.attr("y", 0);
text.append("tspan")
.attr("x", 0)
.text("too many items to show (" + d.originalSize +")");
text.append("tspan")
.attr("x", 0)
.attr("dy", 20)
.text("try ");
text.append("tspan")
.style("fill", "rgb(66, 146, 198)")
.style("text-decoration", "underline")
.style("cursor", "pointer")
.text("filtering")
.on("click.strato", () => {
$(".filter-by-input").val("tenant-7");
update_filtering();
})
text.append("tspan")
.text(" or something");
})
truncated
.transition().duration(DURATION)
.attr("transform", (d) => `translate(${d._parent._x + d._parent.width / 2}, ${d._parent._y + d._parent.height / 2})`)
.style("opacity", 1)
.style("font-size", 14)
truncated.exit()
.transition().duration(DURATION)
.style("font-size", 1)
.style("opacity", 1e-6)
.remove()
}
var renderData = function (data, level) {
level = level || 0;
if (isGroup(data)) {
data.forEach(function (group) {
group.values.forEach(function (value) {
if (value.key) {
value.key = group.key + "|" + value.key
}
})
});
renderGroups(data, level);
renderData(_(data).pluck("values").flatten().value(), level + 1)
} else {
renderValues(data);
}
};
var renderLegend = () => {
legendGroup.html("");
var legendScale = color.getScale();
legend
.title(COLORING)
.scale(legendScale);
legendGroup.call(legend);
};
var rendering = false;
var truncateGroups = (data) => {
data.forEach((g, i) => {
if (g.values.length > maxItems) {
const groupSize = g.values.length;
let truncated = g.values.pop();
truncated = Object.assign({}, truncated, {
id: truncated.id + "_truncated",
truncated: true,
originalSize: groupSize,
})
g.values = [truncated];
}
if (isGroup(g.values)) {
truncateGroups(g.values)
}
})
}
var render = () => {
renderLegend();
var filteredData = _(vm_data).filter(function(vm) {
return vm.tenant.indexOf(FILTER) > -1 || vm.status.indexOf(FILTER) > -1 || vm.tag.indexOf(FILTER) > -1
});
var nest = d3.nest();
GROUPING.forEach(function (groupValue) {
nest.key(function (d) {
return d[groupValue]
}).sortKeys(d3.ascending)
});
var groupsData = nest.entries(filteredData.value());
if (!isGroup(groupsData)) {
groupsData = [{
key: "undefined",
values: groupsData
}]
}
truncateGroups(groupsData);
calculateGrids(groupsData, {
width: WIDTH - RIGHT_PADDING,
height: HEIGHT - PADDING
});
renderData(groupsData);
};
var update_grouping = (value) => {
var oldGrouping = GROUPING;
if (_.isArray(value)) {
GROUPING = value;
} else {
if (value) {
GROUPING = [value]
} else {
GROUPING = []
}
}
if (oldGrouping.length > GROUPING.length) {
for (var i = oldGrouping.length; i >= GROUPING.length; i-- ) {
renderGroups([], i)
}
}
render()
};
update_coloring();
$(function() {
$(".group-by-input").selectize({
plugins: ['remove_button'],
onChange: update_grouping
});
$(".color-by-input").selectize({
onChange: update_coloring
});
$(".clear-filter").on("click", function() {
$(".filter-by-input").val("");
update_filtering();
});
$(".clear-grouping").on("click", function() {
$(".group-by-input")[0].selectize.clear();
update_grouping();
})
$(".max-items").on("input", function(e) {
maxItems = Number(e.target.value);
render();
})
})
</script>
<div class="header">
<div class="field">
<label for="">Group By</label>
<select name="group-by" class="group-by-input" multiple>
<option value="">No Grouping</option>
<option value="tenant">Tenant</option>
<option value="tag">Tag</option>
<option value="status">Status</option>
</select>
<span class="clear-grouping">clear grouping</span>
</div>
<div class="field">
<label for="">Color By</label>
<select name="color-by" class="color-by-input">
<option value="cpu">CPU</option>
<option value="ram">Memory</option>
<option value="volumes">Storage</option>
<option value="status">Status</option>
</select>
</div>
<div class="field">
<label for="">Filter By</label>
<div class="">
<input type="text" name="filter-by" class="filter-by-input">
<span class="clear-filter">clear filters</span>
</div>
</div>
<div class="field">
<label for="">Max Items Displayed</label>
<div class="">
<input type="number" name="max-items" class="max-items" value="500" min="1">
</div>
</div>
<h2>Entities Map</h2>
</div>
<div class="chart">
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment