278 lines
11 KiB
HTML
Generated
278 lines
11 KiB
HTML
Generated
<!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">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<script src="lib/simpleRequire.js"></script>
|
||
<script src="lib/config.js"></script>
|
||
<script src="lib/jquery.min.js"></script>
|
||
<script src="lib/facePrint.js"></script>
|
||
<script src="lib/testHelper.js"></script>
|
||
<link rel="stylesheet" href="lib/reset.css">
|
||
</head>
|
||
<body>
|
||
<style>
|
||
.test-title {
|
||
background: #146402;
|
||
color: #fff;
|
||
}
|
||
#main0 {
|
||
height: 500px;
|
||
}
|
||
</style>
|
||
|
||
|
||
<div id="main0"></div>
|
||
|
||
|
||
<script>
|
||
|
||
var chart;
|
||
var myChart;
|
||
var option;
|
||
|
||
require([
|
||
'echarts',
|
||
'data/life-expectancy.json'
|
||
], function (echarts, data) {
|
||
|
||
var myChart = echarts.init(document.getElementById('main0'));
|
||
|
||
|
||
var itemStyle = {
|
||
normal: {
|
||
opacity: 0.8,
|
||
shadowBlur: 10,
|
||
shadowOffsetX: 0,
|
||
shadowOffsetY: 0,
|
||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
||
}
|
||
};
|
||
|
||
var sizeFunction = function (x) {
|
||
var y = Math.sqrt(x / 5e8) + 0.1;
|
||
return y * 80;
|
||
};
|
||
// Schema:
|
||
var schema = [
|
||
{name: 'Income', index: 0, text: '人均收入', unit: '美元'},
|
||
{name: 'LifeExpectancy', index: 1, text: '人均寿命', unit: '岁'},
|
||
{name: 'Population', index: 2, text: '总人口', unit: ''},
|
||
{name: 'Country', index: 3, text: '国家', unit: ''}
|
||
];
|
||
|
||
option = {
|
||
baseOption: {
|
||
timeline: {
|
||
axisType: 'category',
|
||
orient: 'vertical',
|
||
autoPlay: false,
|
||
inverse: true,
|
||
playInterval: 1000,
|
||
left: null,
|
||
right: 0,
|
||
top: 20,
|
||
bottom: 20,
|
||
width: 55,
|
||
height: null,
|
||
label: {
|
||
normal: {
|
||
textStyle: {
|
||
color: '#999'
|
||
}
|
||
},
|
||
emphasis: {
|
||
textStyle: {
|
||
color: '#fff'
|
||
}
|
||
}
|
||
},
|
||
symbol: 'none',
|
||
lineStyle: {
|
||
color: '#555'
|
||
},
|
||
checkpointStyle: {
|
||
color: '#bbb',
|
||
borderColor: '#777',
|
||
borderWidth: 2
|
||
},
|
||
controlStyle: {
|
||
showNextBtn: false,
|
||
showPrevBtn: false,
|
||
normal: {
|
||
color: '#666',
|
||
borderColor: '#666'
|
||
},
|
||
emphasis: {
|
||
color: '#aaa',
|
||
borderColor: '#aaa'
|
||
}
|
||
},
|
||
data: []
|
||
},
|
||
backgroundColor: '#404a59',
|
||
title: [{
|
||
text: data.timeline[0],
|
||
textAlign: 'center',
|
||
left: '63%',
|
||
top: '55%',
|
||
textStyle: {
|
||
fontSize: 100,
|
||
color: 'rgba(255, 255, 255, 0.7)'
|
||
}
|
||
}, {
|
||
text: '各国人均寿命与GDP关系演变',
|
||
left: 'center',
|
||
top: 10,
|
||
textStyle: {
|
||
color: '#aaa',
|
||
fontWeight: 'normal',
|
||
fontSize: 20
|
||
}
|
||
}],
|
||
tooltip: {
|
||
padding: 5,
|
||
backgroundColor: '#222',
|
||
borderColor: '#777',
|
||
borderWidth: 1,
|
||
formatter: function (obj) {
|
||
var value = obj.value;
|
||
return schema[3].text + ':' + value[3] + '<br>'
|
||
+ schema[1].text + ':' + value[1] + schema[1].unit + '<br>'
|
||
+ schema[0].text + ':' + value[0] + schema[0].unit + '<br>'
|
||
+ schema[2].text + ':' + value[2] + '<br>';
|
||
}
|
||
},
|
||
grid: {
|
||
top: 100,
|
||
containLabel: true,
|
||
left: 30,
|
||
right: '110'
|
||
},
|
||
xAxis: {
|
||
type: 'log',
|
||
name: '人均收入',
|
||
max: 100000,
|
||
min: 300,
|
||
nameGap: 25,
|
||
nameLocation: 'middle',
|
||
nameTextStyle: {
|
||
fontSize: 18
|
||
},
|
||
splitLine: {
|
||
show: false
|
||
},
|
||
axisLine: {
|
||
lineStyle: {
|
||
color: '#ccc'
|
||
}
|
||
},
|
||
axisLabel: {
|
||
formatter: '{value} $'
|
||
}
|
||
},
|
||
yAxis: {
|
||
type: 'value',
|
||
name: '平均寿命',
|
||
max: 100,
|
||
nameTextStyle: {
|
||
color: '#ccc',
|
||
fontSize: 18
|
||
},
|
||
axisLine: {
|
||
lineStyle: {
|
||
color: '#ccc'
|
||
}
|
||
},
|
||
splitLine: {
|
||
show: false
|
||
},
|
||
axisLabel: {
|
||
formatter: '{value} 岁'
|
||
}
|
||
},
|
||
visualMap: [
|
||
{
|
||
show: false,
|
||
type: 'piecewise',
|
||
dimension: 3,
|
||
categories: echarts.util.map(data.countries, function (item) {
|
||
return item[2];
|
||
}),
|
||
calculable: true,
|
||
precision: 0.1,
|
||
textGap: 30,
|
||
textStyle: {
|
||
color: '#ccc'
|
||
},
|
||
inRange: {
|
||
color: (function () {
|
||
var colors = ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'];
|
||
return colors.concat(colors);
|
||
})()
|
||
}
|
||
}
|
||
],
|
||
series: [
|
||
{
|
||
type: 'scatter',
|
||
itemStyle: itemStyle,
|
||
// progressive: false,
|
||
data: data.series[0],
|
||
symbolSize: function(val) {
|
||
return sizeFunction(val[2]);
|
||
}
|
||
}
|
||
],
|
||
animationDurationUpdate: 1000,
|
||
animationEasingUpdate: 'quinticInOut'
|
||
},
|
||
options: []
|
||
};
|
||
|
||
for (var n = 0; n < data.timeline.length; n++) {
|
||
option.baseOption.timeline.data.push(data.timeline[n]);
|
||
option.options.push({
|
||
title: {
|
||
show: true,
|
||
'text': data.timeline[n] + ''
|
||
},
|
||
series: {
|
||
name: data.timeline[n],
|
||
type: 'scatter',
|
||
itemStyle: itemStyle,
|
||
data: data.series[n],
|
||
symbolSize: function(val) {
|
||
return sizeFunction(val[2]);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
myChart.setOption(option);
|
||
|
||
});
|
||
|
||
</script>
|
||
</body>
|
||
</html> |