| <!DOCTYPE html> | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one | |
| or more contributor license agreements. See the NOTICE file | |
| distributed with this work for additional information | |
| regarding copyright ownership. The ASF licenses this file | |
| to you under the Apache License, Version 2.0 (the | |
| "License"); you may not use this file except in compliance | |
| with the License. You may obtain a copy of the License at | |
| http://www.apache.org/licenses/LICENSE-2.0 | |
| Unless required by applicable law or agreed to in writing, | |
| software distributed under the License is distributed on an | |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| KIND, either express or implied. See the License for the | |
| specific language governing permissions and limitations | |
| under the License. | |
| --> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <script src="lib/simpleRequire.js"></script> | |
| <script src="lib/config.js"></script> | |
| <script src="lib/jquery.min.js"></script> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <link rel="stylesheet" href="lib/reset.css"> | |
| </head> | |
| <body> | |
| <style> | |
| #main, #main2 { | |
| width: auto; | |
| margin: 100px; | |
| height: 550px; | |
| } | |
| </style> | |
| <div id="main"></div> | |
| <div id="main2"></div> | |
| <script src="data/obama_budget_proposal_2012.tree.js"></script> | |
| <script> | |
| require([ | |
| 'echarts' | |
| ], function (echarts) { | |
| var myChart = echarts.init(document.getElementById('main')); | |
| convertData(window.obama_budget_2012); | |
| function convertData(originList) { | |
| for (var i = 0; i < originList.length; i++) { | |
| var node = originList[i]; | |
| if (node) { | |
| var value = node.value; | |
| value[3] = value[2] > 0 | |
| ? 100 | |
| : value[2] < 0 | |
| ? -100 | |
| : 0; | |
| if (node.children) { | |
| convertData(node.children); | |
| } | |
| } | |
| } | |
| } | |
| function isValidNumber(num) { | |
| return num != null && isFinite(num); | |
| } | |
| myChart.setOption(option = { | |
| title: { | |
| left: 'center', | |
| text: 'Category Mapping', | |
| subtext: 'Growth > 0: green; Growth < 0: red; Growth = 0: grey' | |
| }, | |
| tooltip: { | |
| formatter: function (info) { | |
| var value = info.value; | |
| var amount = value[0]; | |
| amount = isValidNumber(amount) | |
| ? echarts.format.addCommas(amount * 1000) + '$' | |
| : '-'; | |
| var amount2011 = value[1]; | |
| amount2011 = isValidNumber(amount2011) | |
| ? echarts.format.addCommas(amount2011 * 1000) + '$' | |
| : '-'; | |
| var change = value[2]; | |
| change = isValidNumber(change) | |
| ? change.toFixed(2) + '%' | |
| : '-'; | |
| return [ | |
| '<div class="tooltip-title">' + echarts.format.encodeHTML(info.name) + '</div>', | |
| '2012 Amount: ' + amount + '<br>', | |
| '2011 Amount: ' + amount2011 + '<br>', | |
| 'Change From 2011: ' + change | |
| ].join(''); | |
| } | |
| }, | |
| series: [{ | |
| name: 'ALL', | |
| top: 80, | |
| type: 'treemap', | |
| label: { | |
| show: true, | |
| formatter: "{b}", | |
| normal: { | |
| textStyle: { | |
| ellipsis: true | |
| } | |
| } | |
| }, | |
| itemStyle: { | |
| normal: { | |
| borderColor: 'black' | |
| } | |
| }, | |
| visualMin: -100, | |
| visualMax: 100, | |
| visualDimension: 3, | |
| levels: [ | |
| { | |
| itemStyle: { | |
| normal: { | |
| borderWidth: 3, | |
| borderColor: '#333', | |
| gapWidth: 3 | |
| } | |
| } | |
| }, | |
| { | |
| color: ['#942e38', '#aaa', '#269f3c'], | |
| colorMappingBy: 'value', | |
| itemStyle: { | |
| normal: { | |
| gapWidth: 1 | |
| } | |
| } | |
| } | |
| ], | |
| data: window.obama_budget_2012 | |
| }] | |
| }); | |
| }); | |
| </script> | |
| <script> | |
| require([ | |
| 'echarts' | |
| ], function (echarts) { | |
| var myChart = echarts.init(document.getElementById('main2')); | |
| var visualMin = -100; | |
| var visualMax = 100; | |
| var visualMinBound = -40; | |
| var visualMaxBound = 40; | |
| convertData(window.obama_budget_2012); | |
| function convertData(originList) { | |
| var min = Infinity; | |
| var max = -Infinity; | |
| for (var i = 0; i < originList.length; i++) { | |
| var node = originList[i]; | |
| if (node) { | |
| var value = node.value; | |
| value[2] != null && value[2] < min && (min = value[2]); | |
| value[2] != null && value[2] > max && (max = value[2]); | |
| } | |
| } | |
| for (var i = 0; i < originList.length; i++) { | |
| var node = originList[i]; | |
| if (node) { | |
| var value = node.value; | |
| // Scale value for visual effect | |
| if (value[2] != null && value[2] > 0) { | |
| value[3] = echarts.number.linearMap( | |
| value[2], [0, max], [visualMaxBound, visualMax], true | |
| ); | |
| } | |
| else if (value[2] != null && value[2] < 0) { | |
| value[3] = echarts.number.linearMap( | |
| value[2], [min, 0], [visualMin, visualMinBound], true | |
| ); | |
| } | |
| else { | |
| value[3] = 0; | |
| } | |
| if (!isFinite(value[3])) { | |
| value[3] = 0; | |
| } | |
| if (node.children) { | |
| convertData(node.children); | |
| } | |
| } | |
| } | |
| } | |
| function isValidNumber(num) { | |
| return num != null && isFinite(num); | |
| } | |
| myChart.setOption(option = { | |
| title: { | |
| left: 'center', | |
| text: 'Gradient Mapping', | |
| subtext: 'Growth > 0: green; Growth < 0: red; Growth = 0: grey' | |
| }, | |
| tooltip: { | |
| formatter: function (info) { | |
| var value = info.value; | |
| var amount = value[0]; | |
| amount = isValidNumber(amount) | |
| ? echarts.format.addCommas(amount * 1000) + '$' | |
| : '-'; | |
| var amount2011 = value[1]; | |
| amount2011 = isValidNumber(amount2011) | |
| ? echarts.format.addCommas(amount2011 * 1000) + '$' | |
| : '-'; | |
| var change = value[2]; | |
| change = isValidNumber(change) | |
| ? change.toFixed(2) + '%' | |
| : '-'; | |
| return [ | |
| '<div class="tooltip-title">' + echarts.format.encodeHTML(info.name) + '</div>', | |
| '2012 Amount: ' + amount + '<br>', | |
| '2011 Amount: ' + amount2011 + '<br>', | |
| 'Change From 2011: ' + change | |
| ].join(''); | |
| } | |
| }, | |
| series: [{ | |
| name: 'ALL', | |
| top: 80, | |
| type: 'treemap', | |
| label: { | |
| show: true, | |
| formatter: "{b}", | |
| normal: { | |
| textStyle: { | |
| ellipsis: true | |
| } | |
| } | |
| }, | |
| itemStyle: { | |
| normal: { | |
| borderColor: 'black' | |
| } | |
| }, | |
| visualMin: visualMin, | |
| visualMax: visualMax, | |
| visualDimension: 3, | |
| levels: [ | |
| { | |
| itemStyle: { | |
| normal: { | |
| borderWidth: 3, | |
| borderColor: '#333', | |
| gapWidth: 3 | |
| } | |
| } | |
| }, | |
| { | |
| color: ['#942e38', '#aaa', '#269f3c'], | |
| colorMappingBy: 'value', | |
| itemStyle: { | |
| normal: { | |
| gapWidth: 1 | |
| } | |
| } | |
| } | |
| ], | |
| data: window.obama_budget_2012 | |
| }] | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> |