Toggle navigation
全国36城无人区数量
By
范勒个二
2017-03-19 14:45:01
脚本
16
21
作品使用的第三方脚本
/dep/echarts/map/js/china.js
数据管理
上传数据
支持小于 5M 任意格式(csv, xlsx, json, xml, ...)的数据文件
上传后可以通过生成的文件链接异步获取托管的数据。
历史数据
0 条
无历史数据
代码修改记录
信息提示
保存作品
对当前截图不满意?你还可以
上传本地截图
重新截图
作品名称
作品描述
标签
geo
grid
legend
markLine
markPoint
bar
effectScatter
line
lines
map
timeline
title
toolbox
tooltip
visualMap
作品默认版本
最新
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
20:11:45
图表已生成
整理代码
刷新
代码
var data = [ { name: "上海", value: 29780}, { name: "珠海", value: 2186}, { name: "三亚", value: 1135}, { name: "惠州", value: 1973}, { name: "海口", value: 2568}, { name: "合肥", value: 4039}, { name: "南京", value: 6959}, { name: "杭州", value: 5632}, { name: "苏州", value: 6707}, { name: "无锡", value: 3393}, { name: "昆山", value: 1894}, { name: "广州", value: 15769}, { name: "深圳", value: 8259}, { name: "佛山", value: 5741}, { name: "东莞", value: 3030}, { name: "福州", value: 4542}, { name: "厦门", value: 3329}, { name: "南宁", value: 3157}, { name: "郑州", value: 6690}, { name: "武汉", value: 8678}, { name: "长沙", value: 5303}, { name: "南昌", value: 3025}, { name: "北京", value: 20259}, { name: "长春", value: 3016}, { name: "大连", value: 3202}, { name: "沈阳", value: 4540}, { name: "哈尔滨", value: 3141}, { name: "天津", value: 8626}, { name: "济南", value: 4361}, { name: "青岛", value: 6667}, { name: "太原", value: 4080}, { name: "石家庄", value: 6137}, { name: "西安", value: 6991}, { name: "成都", value: 13873}, { name: "重庆", value: 13283}, { name: "昆明", value: 4633}, ]; var geoCoordMap = { "上海": [121.48, 31.22], "珠海": [113.52, 22.3], "三亚": [109.31, 18.14], "惠州": [114.4, 23.09], "海口": [110.35, 20.02], "合肥": [117.27, 31.86], "南京": [118.78, 32.04], "杭州": [120.19, 30.26], "苏州": [120.62, 31.32], "无锡": [120.29, 31.59], "昆山": [120.95, 31.39], "广州": [113.23, 23.16], "深圳": [114.07, 22.62], "佛山": [113.11, 23.05], "东莞": [113.75, 23.04], "福州": [119.3, 26.08], "厦门": [118.1, 24.46], "南宁": [108.33, 22.84], "郑州": [113.65, 34.76], "武汉": [114.31, 30.52], "长沙": [113, 28.21], "南昌": [115.89, 28.68], "北京": [116.46, 39.92], "长春": [125.35, 43.88], "大连": [121.62, 38.92], "沈阳": [123.38, 41.8], "哈尔滨": [126.63, 45.75], "天津": [117.2, 39.13], "济南": [117, 36.65], "青岛": [120.33, 36.07], "太原": [112.53, 37.87], "石家庄": [114.48, 38.03], "西安": [108.95, 34.27], "成都": [104.06, 30.67], "重庆": [106.54, 29.59], "昆明": [102.73, 25.04], }; var convertData = function(data) { var res = []; for (var i = 0; i < data.length; i++) { var geoCoord = geoCoordMap[data[i].name]; if (geoCoord) { res.push({ name: data[i].name, value: geoCoord.concat(data[i].value) }); } } return res; }; var convertedData = [ convertData(data), convertData(data.sort(function(a, b) { return b.value - a.value; }).slice(0, 6)) ]; option = { backgroundColor: '#404a59', animation: true, animationDuration: 1000, animationEasing: 'cubicInOut', animationDurationUpdate: 1000, animationEasingUpdate: 'cubicInOut', title: [{ text: '全国36城“无人区”数', link: 'http://pages.anjuke.com/expert/newexpert.html', subtext: 'data from Anjuke', sublink: 'http://pages.anjuke.com/expert/newexpert.html', left: 'center', textStyle: { color: '#fff' } }, { id: 'statistic', right: 120, top: 40, width: 100, textStyle: { color: '#fff', fontSize: 16 } }], toolbox: { iconStyle: { normal: { borderColor: '#fff' }, emphasis: { borderColor: '#b1e4ff' } }, feature: { dataZoom: {}, brush: { type: ['rect', 'polygon', 'clear'] }, saveAsImage: { show: true } } }, brush: { outOfBrush: { color: '#abc' }, brushStyle: { borderWidth: 2, color: 'rgba(0,0,0,0.2)', borderColor: 'rgba(0,0,0,0.5)', }, seriesIndex: [0, 1], throttleType: 'debounce', throttleDelay: 300, geoIndex: 0 }, geo: { map: 'china', left: '10', right: '35%', center: [117.98561551896913, 31.205000490896193], zoom: 2.5, label: { emphasis: { show: false } }, roam: true, itemStyle: { normal: { areaColor: '#323c48', borderColor: '#111' }, emphasis: { areaColor: '#2a333d' } } }, tooltip: { trigger: 'item' }, grid: { right: 40, top: 100, bottom: 40, width: '30%' }, xAxis: { type: 'value', scale: true, position: 'top', boundaryGap: false, splitLine: { show: false }, axisLine: { show: false }, axisTick: { show: false }, axisLabel: { margin: 2, textStyle: { color: '#aaa' } }, }, yAxis: { type: 'category', name: 'TOP', nameGap: 16, axisLine: { show: false, lineStyle: { color: '#ddd' } }, axisTick: { show: false, lineStyle: { color: '#ddd' } }, axisLabel: { interval: 0, textStyle: { color: '#ddd' } }, data: [] }, series: [{ name: 'pm2.5', type: 'scatter', coordinateSystem: 'geo', data: convertedData[0], symbolSize: function(val) { return Math.max(val[2] / 300, 8); }, label: { normal: { formatter: '{b}', position: 'right', show: false }, emphasis: { show: true } }, itemStyle: { normal: { color: '#ddb926' } } }, { name: 'Top 5', type: 'effectScatter', coordinateSystem: 'geo', data: convertData(data.sort(function (a, b) { return b.value - a.value; }).slice(0, 5)), symbolSize: function (val) { return val[2] / 500; }, showEffectOn: 'render', rippleEffect: { brushType: 'stroke' }, hoverAnimation: true, label: { normal: { formatter: '{b}', position: 'right', show: true } }, itemStyle: { normal: { color: '#ff3300', shadowBlur: 10, shadowColor: '#FF7F00' } }, zlevel: 1 }, { id: 'bar', zlevel: 2, type: 'bar', symbol: 'none', itemStyle: { normal: { color: '#ddb926' } }, data: [] }] }; myChart.on('brushselected', renderBrushed); // myChart.setOption(option); setTimeout(function() { myChart.dispatchAction({ type: 'brush', areas: [{ geoIndex: 0, brushType: 'polygon', coordRange: [ [119.72, 34.85], [119.68, 34.85], [119.5, 34.84], [119.19, 34.77], [118.76, 34.63], [118.6, 34.6], [118.46, 34.6], [118.33, 34.57], [118.05, 34.56], [117.6, 34.56], [117.41, 34.56], [117.25, 34.56], [117.11, 34.56], [117.02, 34.56], [117, 34.56], [116.94, 34.56], [116.94, 34.55], [116.9, 34.5], [116.88, 34.44], [116.88, 34.37], [116.88, 34.33], [116.88, 34.24], [116.92, 34.15], [116.98, 34.09], [117.05, 34.06], [117.19, 33.96], [117.29, 33.9], [117.43, 33.8], [117.49, 33.75], [117.54, 33.68], [117.6, 33.65], [117.62, 33.61], [117.64, 33.59], [117.68, 33.58], [117.7, 33.52], [117.74, 33.5], [117.74, 33.46], [117.8, 33.44], [117.82, 33.41], [117.86, 33.37], [117.9, 33.3], [117.9, 33.28], [117.9, 33.27], [118.09, 32.97], [118.21, 32.7], [118.29, 32.56], [118.31, 32.5], [118.35, 32.46], [118.35, 32.42], [118.35, 32.36], [118.35, 32.34], [118.37, 32.24], [118.37, 32.14], [118.37, 32.09], [118.44, 32.05], [118.46, 32.01], [118.54, 31.98], [118.6, 31.93], [118.68, 31.86], [118.72, 31.8], [118.74, 31.78], [118.76, 31.74], [118.78, 31.7], [118.82, 31.64], [118.82, 31.62], [118.86, 31.58], [118.86, 31.55], [118.88, 31.54], [118.88, 31.52], [118.9, 31.51], [118.91, 31.48], [118.93, 31.43], [118.95, 31.4], [118.97, 31.39], [118.97, 31.37], [118.97, 31.34], [118.97, 31.27], [118.97, 31.21], [118.97, 31.17], [118.97, 31.12], [118.97, 31.02], [118.97, 30.93], [118.97, 30.87], [118.97, 30.85], [118.95, 30.8], [118.95, 30.77], [118.95, 30.76], [118.93, 30.7], [118.91, 30.63], [118.91, 30.61], [118.91, 30.6], [118.9, 30.6], [118.88, 30.54], [118.88, 30.51], [118.86, 30.51], [118.86, 30.46], [118.72, 30.18], [118.68, 30.1], [118.66, 30.07], [118.62, 29.91], [118.56, 29.73], [118.52, 29.63], [118.48, 29.51], [118.44, 29.42], [118.44, 29.32], [118.43, 29.19], [118.43, 29.14], [118.43, 29.08], [118.44, 29.05], [118.46, 29.05], [118.6, 28.95], [118.64, 28.94], [119.07, 28.51], [119.25, 28.41], [119.36, 28.28], [119.46, 28.19], [119.54, 28.13], [119.66, 28.03], [119.78, 28], [119.87, 27.94], [120.03, 27.86], [120.17, 27.79], [120.23, 27.76], [120.3, 27.72], [120.42, 27.66], [120.52, 27.64], [120.58, 27.63], [120.64, 27.63], [120.77, 27.63], [120.89, 27.61], [120.97, 27.6], [121.07, 27.59], [121.15, 27.59], [121.28, 27.59], [121.38, 27.61], [121.56, 27.73], [121.73, 27.89], [122.03, 28.2], [122.3, 28.5], [122.46, 28.72], [122.5, 28.77], [122.54, 28.82], [122.56, 28.82], [122.58, 28.85], [122.6, 28.86], [122.61, 28.91], [122.71, 29.02], [122.73, 29.08], [122.93, 29.44], [122.99, 29.54], [123.03, 29.66], [123.05, 29.73], [123.16, 29.92], [123.24, 30.02], [123.28, 30.13], [123.32, 30.29], [123.36, 30.36], [123.36, 30.55], [123.36, 30.74], [123.36, 31.05], [123.36, 31.14], [123.36, 31.26], [123.38, 31.42], [123.46, 31.74], [123.48, 31.83], [123.48, 31.95], [123.46, 32.09], [123.34, 32.25], [123.22, 32.39], [123.12, 32.46], [123.07, 32.48], [123.05, 32.49], [122.97, 32.53], [122.91, 32.59], [122.83, 32.81], [122.77, 32.87], [122.71, 32.9], [122.56, 32.97], [122.38, 33.05], [122.3, 33.12], [122.26, 33.15], [122.22, 33.21], [122.22, 33.3], [122.22, 33.39], [122.18, 33.44], [122.07, 33.56], [121.99, 33.69], [121.89, 33.78], [121.69, 34.02], [121.66, 34.05], [121.64, 34.08] ] }] }); }, 0); function renderBrushed(params) { var mainSeries = params.batch[0].selected[0]; var selectedItems = []; var categoryData = []; var barData = []; var maxBar = 30; var sum = 0; var count = 0; for (var i = 0; i < mainSeries.dataIndex.length; i++) { var rawIndex = mainSeries.dataIndex[i]; var dataItem = convertedData[0][rawIndex]; var pmValue = dataItem.value[2]; sum += pmValue; count++; selectedItems.push(dataItem); } selectedItems.sort(function(a, b) { return a.value[2] - b.value[2]; }); for (var i = 0; i < Math.min(selectedItems.length, maxBar); i++) { categoryData.push(selectedItems[i].name); barData.push(selectedItems[i].value[2]); } this.setOption({ yAxis: { data: categoryData }, xAxis: { axisLabel: { show: !!count } }, title: { id: 'statistic', text: count ? '平均: ' + (sum / count).toFixed(4) : '' }, series: { id: 'bar', data: barData } }); }