Last active
November 17, 2015 04:49
-
-
Save JulienSansot/11ac4b9b5d027a94ae9b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 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"] | |
| },custom: { | |
| 1: ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"] | |
| },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"] | |
| // } | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <style> | |
| body{ | |
| font-family: sans; | |
| /*padding: 10px;*/ | |
| } | |
| .graph_a svg path{ | |
| stroke: #000; | |
| stroke-width: 1px; | |
| stroke: rgba(0,0,0,0.2); | |
| } | |
| .graph_a svg{ | |
| border: 1px solid #DED8BF; | |
| background-color: #fff; | |
| } | |
| svg { | |
| font: 10px sans-serif; | |
| } | |
| .line { | |
| fill: none; | |
| stroke: #000; | |
| stroke-width: 1.5px; | |
| } | |
| .axis path, | |
| .axis line { | |
| fill: none; | |
| stroke: #000; | |
| shape-rendering: crispEdges; | |
| } | |
| #colors { | |
| background: #ECF0F5; | |
| width: 650px; | |
| } | |
| .palette { | |
| cursor: pointer; | |
| display: inline-block; | |
| vertical-align: bottom; | |
| margin: 2px 0 2px 4px; | |
| padding: 2px; | |
| background: #fff; | |
| border: solid 1px #aaa; | |
| } | |
| .swatch { | |
| display: block; | |
| vertical-align: middle; | |
| width: 25px; | |
| height: 17px; | |
| } | |
| td { | |
| vertical-align: top; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <table> | |
| <tr> | |
| <td> | |
| <div id="graph1" class="graph_a"></div><br> | |
| <div id="graph3" class="graph_a"></div><br> | |
| </td> | |
| <td> | |
| <div id="graph2" class="graph_a"></div><br> | |
| <div id="colors"></div><br> | |
| <div id="graph4" class="graph_a"></div><br> | |
| </td> | |
| </tr> | |
| </table> | |
| <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> | |
| <script src="http://d3js.org/d3.v3.min.js"></script> | |
| <script src="surface3D.js"></script> | |
| <script src="colorbrewer.js"></script> | |
| <script src="script.js"></script> | |
| <script> | |
| </script> | |
| </body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var _colors = ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]; | |
| function getDummyData1(){ | |
| var data = []; | |
| for(var x=-15;x<=15;x++){ | |
| var f0=[]; | |
| data.push(f0); | |
| for(var y=-15;y<=15;y++){ | |
| var height = Math.cos(x/15*Math.PI)*Math.cos(y/15*Math.PI)*60+Math.cos(x/8*Math.PI)*Math.cos(y/10*Math.PI)*40; | |
| f0.push(height); | |
| } | |
| } | |
| return data; | |
| } | |
| var a; | |
| var graph1, graph2, graph3, graph4; | |
| $(function(){ | |
| var ColorCalculator = (function(){ | |
| var d3_scales = {}; | |
| function findMinMax(data){ | |
| var max = null; | |
| var min = null; | |
| var xlength=data.length; | |
| var ylength=data[0].length; | |
| for(var x=0;x<xlength;x++){ | |
| for(var y=0;y<ylength;y++){ | |
| if(max == null || max < data[x][y]) | |
| max = data[x][y]; | |
| if(min == null || min > data[x][y]) | |
| min = data[x][y]; | |
| } | |
| } | |
| return {min:min, max:max}; | |
| } | |
| return { | |
| storeColorDataset: function(datasetName, data, colors){ | |
| var minMax = findMinMax(data); | |
| var colorFunc = d3.scale.linear() | |
| .domain([minMax.min, minMax.max]) | |
| .range([0, colors.length - 1]); | |
| d3_scales[datasetName] = function(d){ | |
| var colorIndex = Math.round(colorFunc(d)); | |
| return colors[colorIndex]; | |
| } | |
| }, | |
| getColor: function(datasetName, d){ | |
| return d3_scales[datasetName](d); | |
| }, | |
| getColorRetriver: function(datasetName){ | |
| return d3_scales[datasetName]; | |
| } | |
| } | |
| })(); | |
| var Graph = function(options){ | |
| var _options = $.extend({ | |
| container: null, | |
| yaw: 0, | |
| pitch: Math.PI / 2, | |
| width: 800, | |
| height: 600, | |
| drag: true, | |
| flat: false | |
| }, options || {}); | |
| var _drag = false; | |
| var _svg = null; | |
| var _md = null; | |
| var _data = null; | |
| function update(data){ | |
| _data = data; | |
| _svg = d3.select(_options.container) | |
| .append('svg') | |
| .attr('height', _options.height) | |
| .attr('width', _options.width); | |
| var group = _svg.append("g"); | |
| _md = group.data([data]) | |
| .surface3D(_options.width, _options.height) | |
| .surfaceHeight(function(d){ | |
| if(_options.flat) | |
| return 0; | |
| return d; | |
| }) | |
| .surfaceColor(function(d){ | |
| var color = options.getColor(d); | |
| var rgb_color = d3.rgb(color); | |
| return "rgb("+parseInt(rgb_color.r)+","+parseInt(rgb_color.g)+","+parseInt(rgb_color.b)+")"; | |
| }); | |
| a = _md; | |
| if(_options.drag) | |
| setupDraging(); | |
| _md.turntable(_options.yaw, _options.pitch); | |
| } | |
| function setupDraging(){ | |
| _svg.on("mousedown",function(){ | |
| _drag = [d3.mouse(this), _options.yaw, _options.pitch]; | |
| }).on("mouseup",function(){ | |
| _drag = false; | |
| }).on("mousemove",function(){ | |
| if(_drag){ | |
| var mouse = d3.mouse(this); | |
| _options.yaw = _drag[1] - (mouse[0] - _drag[0][0])/50; | |
| _options.pitch = _drag[2] + (mouse[1] - _drag[0][1])/50; | |
| _options.pitch = Math.max(-Math.PI/2, Math.min(Math.PI/2, _options.pitch)); | |
| _md.turntable(_options.yaw, _options.pitch); | |
| } | |
| }); | |
| } | |
| return { | |
| update: update, | |
| getData: function(){ return _data;}, | |
| setGetColor: function(func){ | |
| _md.surfaceColor(function(d){ | |
| var color = func(d); | |
| var rgb_color = d3.rgb(color); | |
| return "rgb("+parseInt(rgb_color.r)+","+parseInt(rgb_color.g)+","+parseInt(rgb_color.b)+")"; | |
| }); | |
| } | |
| }; | |
| }; | |
| (function(){ | |
| var data = getDummyData1(); | |
| ColorCalculator.storeColorDataset("dataset1", data, _colors); | |
| graph1 = new Graph({ | |
| container: '#graph1', | |
| drag: false, | |
| flat: true, | |
| getColor: ColorCalculator.getColorRetriver("dataset1") | |
| }); | |
| graph1.update(data); | |
| graph2 = new Graph({ | |
| container: '#graph2', | |
| drag: true, | |
| flat: false, | |
| yaw: 0.3, | |
| pitch: 0.54, | |
| getColor: ColorCalculator.getColorRetriver("dataset1") | |
| }); | |
| graph2.update(data); | |
| })(); | |
| // ------------ CHART 3 | |
| var PathChart = function(colors){ | |
| $("#graph3").html(""); | |
| var nb_circles = 20; | |
| var nb_lines = 80; | |
| var circles = []; | |
| for (var i = 0; i < nb_circles; i++) | |
| circles.push({ | |
| x: Math.random(), | |
| y: Math.random(), | |
| time: Math.random() | |
| }); | |
| var lines = []; | |
| for (i = 0; i < nb_lines; i++){ | |
| var circle1 = circles[Math.floor(Math.random()*(nb_circles))]; | |
| var circle2 = circles[Math.floor(Math.random()*(nb_circles))]; | |
| lines.push({ | |
| x1: circle1.x, | |
| y1: circle1.y, | |
| x2: circle2.x, | |
| y2: circle2.y | |
| }); | |
| } | |
| var max_x = 10; | |
| var max_y = 10; | |
| var margin = { | |
| top: 20, | |
| right: 40, | |
| bottom: 40, | |
| left: 40 | |
| }, | |
| width = 800 - margin.left - margin.right, | |
| height = 600 - margin.top - margin.bottom; | |
| var data = [ | |
| {x:0,y:0, time: 2}, | |
| {x:1,y:8, time: 30}, | |
| {x:6,y:9, time: 10}, | |
| {x:10,y:8, time: 15}, | |
| {x:10,y:4, time: 20}, | |
| {x:8,y:2, time: 40}, | |
| {x:6,y:3, time: 25}, | |
| {x:4,y:3, time: 8}, | |
| {x:1,y:0, time: 3}, | |
| ]; | |
| var maxTime = d3.max(data, function(d) { | |
| return d.time; | |
| }); | |
| var minTime = d3.min(data, function(d) { | |
| return d.time; | |
| }); | |
| var colorFunc = d3.scale.linear() | |
| .domain([1, 0]) | |
| .range([0, colors.length - 1]); | |
| var time_scale = d3.scale.linear() | |
| .domain([0, 1]) | |
| .range([5, height/25]); | |
| var x_scale = d3.scale.linear() | |
| .domain([0, 1]) | |
| .range([0, width]); | |
| var y_scale = d3.scale.linear() | |
| .domain([0, 1]) | |
| .range([height, 0]); | |
| var line = d3.svg.line() | |
| .x(function(d, i) { | |
| return x_scale(d.x); | |
| }) | |
| .y(function(d, i) { | |
| return y_scale(d.y); | |
| }); | |
| var container_style = ""; | |
| container_style += "width:" + (width + margin.left + margin.right) + "px;"; | |
| container_style += "height:" + (height + margin.top + margin.bottom) + "px;"; | |
| var svg = d3.select("#graph3") | |
| .append("div") | |
| .attr("style", container_style) | |
| .append("svg") | |
| .attr("width", width + margin.left + margin.right) | |
| .attr("height", height + margin.top + margin.bottom) | |
| .append("g") | |
| .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); | |
| svg.append("g") | |
| .selectAll("g") | |
| .data(lines) | |
| .enter() | |
| .append("line") | |
| .attr("x1", function(d){ return x_scale(d.x1)}) | |
| .attr("y1", function(d){ return y_scale(d.y1)}) | |
| .attr("x2", function(d){ return x_scale(d.x2)}) | |
| .attr("y2", function(d){ return y_scale(d.y2)}) | |
| .attr("stroke-width", 1) | |
| .attr("stroke", "#ccc"); | |
| svg.append("g") | |
| .selectAll("g") | |
| .data(circles) | |
| .enter() | |
| .append("circle") | |
| .attr("r", function(d){ return time_scale(d.time)}) | |
| .attr("cx", function(d){ return x_scale(d.x)}) | |
| .attr("cy", function(d){ return y_scale(d.y)}) | |
| .style("fill", function(d) { | |
| var colorIndex = Math.round(colorFunc(d.time)); | |
| return colors[colorIndex]; | |
| }); | |
| }; | |
| new PathChart(_colors); | |
| function changeColor(name, colors){ | |
| var colours = colors.reverse(); | |
| ColorCalculator.storeColorDataset("dataset" + name, graph1.getData(), colours); | |
| graph1.setGetColor(ColorCalculator.getColorRetriver("dataset" + name)); | |
| graph2.setGetColor(ColorCalculator.getColorRetriver("dataset" + name)); | |
| new PathChart(colours); | |
| } | |
| d3.select("#colors") | |
| .selectAll(".palette") | |
| .data(d3.entries(colorbrewer)) | |
| .enter().append("span") | |
| .attr("class", "palette") | |
| .attr("title", function(d) { return d.key; }) | |
| .on("click", function(d) { | |
| sets = d3.values(d.value); | |
| changeColor(d.key, sets[sets.length-1]); | |
| // console.log(d3.values(d.value).map(JSON.stringify).join("\n")); | |
| }) | |
| .selectAll(".swatch") | |
| .data(function(d) { return d.value[d3.keys(d.value).map(Number).sort(d3.descending)[0]]; }) | |
| .enter().append("span") | |
| .attr("class", "swatch") | |
| .style("background-color", function(d) { return d; }); | |
| }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function(){ | |
| var Surface=function(node){ | |
| var heightFunction,colorFunction,timer,timer,transformPrecalc=[]; | |
| var displayWidth=300, displayHeight=300, zoom=1; | |
| var trans; | |
| this.setZoom=function(zoomLevel){ | |
| zoom=zoomLevel; | |
| if(timer) clearTimeout(timer); | |
| timer=setTimeout(renderSurface); | |
| }; | |
| var getHeights=function(){ | |
| var data=node.datum(); | |
| var output=[]; | |
| var xlength=data.length; | |
| var ylength=data[0].length; | |
| for(var x=0;x<xlength;x++){ | |
| output.push(t=[]); | |
| for(var y=0;y<ylength;y++){ | |
| var value=heightFunction(data[x][y],x,y); | |
| t.push(value); | |
| } | |
| } | |
| return output; | |
| }; | |
| var transformPoint=function(point){ | |
| var x=transformPrecalc[0]*point[0]+transformPrecalc[1]*point[1]+transformPrecalc[2]*point[2]; | |
| var y=transformPrecalc[3]*point[0]+transformPrecalc[4]*point[1]+transformPrecalc[5]*point[2]; | |
| var z=transformPrecalc[6]*point[0]+transformPrecalc[7]*point[1]+transformPrecalc[8]*point[2]; | |
| return [x,y,z]; | |
| }; | |
| var getTransformedData=function(){ | |
| var data=node.datum(); | |
| // console.log(JSON.stringify(data)); | |
| if(!heightFunction) return [[]]; | |
| var t, output=[]; | |
| var heights=getHeights(); | |
| var xlength=data.length; | |
| var ylength=data[0].length; | |
| for(var x=0;x<xlength;x++){ | |
| output.push(t=[]); | |
| for(var y=0;y<ylength;y++){ | |
| t.push(transformPoint([(x-xlength/2)/(xlength*1.41)*displayWidth*zoom, heights[x][y]*zoom, (y-ylength/2)/(ylength*1.41)*displayWidth*zoom])); | |
| } | |
| } | |
| return output; | |
| }; | |
| var renderSurface=function(){ | |
| var originalData=node.datum(); | |
| var data=getTransformedData(); | |
| var xlength=data.length; | |
| var ylength=data[0].length; | |
| var d0=[]; | |
| var idx=0; | |
| for(var x=0;x<xlength-1;x++){ | |
| for(var y=0;y<ylength-1;y++){ | |
| var depth=data[x][y][2]+data[x+1][y][2]+data[x+1][y+1][2]+data[x][y+1][2]; | |
| d0.push({ | |
| path: | |
| 'M'+(data[x][y][0]+displayWidth/2).toFixed(10)+','+(data[x][y][1]+displayHeight/2).toFixed(10)+ | |
| 'L'+(data[x+1][y][0]+displayWidth/2).toFixed(10)+','+(data[x+1][y][1]+displayHeight/2).toFixed(10)+ | |
| 'L'+(data[x+1][y+1][0]+displayWidth/2).toFixed(10)+','+(data[x+1][y+1][1]+displayHeight/2).toFixed(10)+ | |
| 'L'+(data[x][y+1][0]+displayWidth/2).toFixed(10)+','+(data[x][y+1][1]+displayHeight/2).toFixed(10)+'Z', | |
| depth: depth, data: originalData[x][y] | |
| }); | |
| } | |
| } | |
| // d0.sort(function(a, b){return b.depth-a.depth}); | |
| var dr=node.selectAll('path').data(d0); | |
| dr.enter().append("path"); | |
| if(trans){ | |
| dr=dr.transition().delay(trans.delay()).duration(trans.duration()); | |
| } | |
| dr.attr("d",function(d){return d.path;}); | |
| if(colorFunction){ | |
| dr.attr("fill",function(d){return colorFunction(d.data)}); | |
| } | |
| trans=false; | |
| // console.log("render"); | |
| }; | |
| this.renderSurface=renderSurface; | |
| this.setTurtable=function(yaw, pitch){ | |
| var cosA=Math.cos(pitch); | |
| var sinA=Math.sin(pitch); | |
| var cosB=Math.cos(yaw); | |
| var sinB=Math.sin(yaw); | |
| transformPrecalc[0]=cosB; | |
| transformPrecalc[1]=0; | |
| transformPrecalc[2]=sinB; | |
| transformPrecalc[3]=sinA*sinB; | |
| transformPrecalc[4]=cosA; | |
| transformPrecalc[5]=-sinA*cosB; | |
| transformPrecalc[6]=-sinB*cosA; | |
| transformPrecalc[7]=sinA; | |
| transformPrecalc[8]=cosA*cosB; | |
| if(timer) clearTimeout(timer); | |
| timer=setTimeout(renderSurface); | |
| return this; | |
| }; | |
| // this.setTurtable(0.5,0.5); | |
| this.setTurtable(0, Math.PI / 2); | |
| this.surfaceColor=function(callback){ | |
| colorFunction=callback; | |
| if(timer) clearTimeout(timer); | |
| timer=setTimeout(renderSurface); | |
| return this; | |
| }; | |
| this.surfaceHeight=function(callback){ | |
| heightFunction=callback; | |
| if(timer) clearTimeout(timer); | |
| timer=setTimeout(renderSurface); | |
| return this; | |
| }; | |
| this.transition=function(){ | |
| var transition=d3.selection.prototype.transition.bind(node)(); | |
| colourFunction=null; | |
| heightFunction=null; | |
| transition.surfaceHeight=this.surfaceHeight; | |
| transition.surfaceColor=this.surfaceColor; | |
| trans=transition; | |
| return transition; | |
| }; | |
| this.setHeight=function(height){ | |
| if(height) displayHeight=height; | |
| }; | |
| this.setWidth=function(width){ | |
| if(width) displayWidth=width; | |
| }; | |
| }; | |
| d3.selection.prototype.surface3D=function(width, height){ | |
| if(!this.node().__surface__) this.node().__surface__=new Surface(this); | |
| var surface=this.node().__surface__; | |
| this.turntable=surface.setTurtable; | |
| this.renderSurface=surface.renderSurface; | |
| this.surfaceColor=surface.surfaceColor; | |
| this.surfaceHeight=surface.surfaceHeight; | |
| this.zoom=surface.setZoom; | |
| surface.setHeight(height); | |
| surface.setWidth(width); | |
| this.transition=surface.transition.bind(surface); | |
| return this; | |
| }; | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment