失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > echarts 世界地图标点_关于echarts的那些事(地图标点 折线图 饼图)

echarts 世界地图标点_关于echarts的那些事(地图标点 折线图 饼图)

时间:2023-03-18 01:41:41

相关推荐

echarts 世界地图标点_关于echarts的那些事(地图标点 折线图 饼图)

前记:离上一篇博客的发布已经过去两个月了,这期间总想写点什么,却怎么都写不出来,一直拖到了现在。现在的感觉,不是像这期间一样,想好好整理一番,写一篇好博客,却写不出来。事实发现,随心就好,较好的博客,需要深入的技术,现在能力还不够,只能把所遇到的问题写出来,整理一下就好。周五了,一天过去了一半,利用闲下来的时间,把这些天遇到的问题整理一下吧。

一、地图标点(以青岛地图为例)

地图标点有两种方法(两种地图的展现方式)

准备工作:

下载echarts文件。(下载地址:/download.html)

注意:建议下载完整包,不要自己构建。因为地图要跟冒泡图结合,有些需要东西,自己也不清楚,下个完整包就可以了。

青岛地图下载(下载地址:http://ecomfe.github.io/echarts-map-tool/ 可以自己构建全国各省市地图)

上图给出两种构建地图的方法,特别注意的是引入json数据的时候,使用chrome打开的时候需要搭配跨域环境,请参考以前写的文章/wlpower/p/6370377.html,强调一点,如果方案一实现不了,可以根据这个方法 :

版本号49之后的chrome跨域设置

chrome的版本升到49之后,跨域设置比以前严格了,在打开命令上加--disable-web-security之后还需要给出新的用户个人信息的目录。众所周知chrome是需要用gmail地址登录的浏览器,登录后就会生成一个存储个人信息的目录,保存用户的收藏、历史记录等个人信息。49版本之后,如果设置chrome浏览器为支持跨域模式,需要指定出一个个人信息目录,而不能使用默认的目录,估计是chrome浏览器怕用户勿使用跨域模式泄露自己的个人信息(主要是cookie,很多网站的登录token信息都是保存在cookie里)。

具体做法为:

1.在电脑上新建一个目录,例如:C:\MyChromeDevUserData

2.在属性页面中的目标输入框里加上 --disable-web-security --user-data-dir=C:\MyChromeDevUserData,--user-data-dir的值就是刚才新建的目录。

3.点击应用和确定后关闭属性页面,并打开chrome浏览器。

再次打开chrome,发现有“--disable-web-security”相关的提示,说明chrome又能正常跨域工作了。

标点坐标数据

如果是少数标点,可以到百度地图ApI坐标拾取器查找。

如果是很多个,比如这些:

要是有坐标文件,就很方便,要是没有,只能一个一个找,四千八百多个坐标,我跟我另个同事找了好几天。。。

然后就是Excel表格数据转变成我们需要的格式:

有多种方法,一是:网上有在线Excel转换json格式,可以自动转换,只是坐标数据转换不是所需要的格式。另外的呢,可以跟后端沟通,把Excel上传数据库,然后以json格式传出来。(这些数据困扰了我一天多。。。)

准备工作已经好了,接下来开始页面内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15 var chart = echarts.init(document.getElementById('main'));

16

17 //因为数据比较多,这里只是举例参考

18 var data = [

19 {"name":"青岛威达体育用品有限公司","value":"1000.00"},

20 {"name":"青岛万福食品有限公司","value":"1804.76"},

21 {"name":"青岛帅潮实业有限公司","value":"3000.00"},

22 {"name":"青岛市琴岛电器有限公司","value":"1200.00"},

23 {"name":"青岛普天电器有限公司","value":"6000.00"},

24 {"name":"青岛龙兴机械有限公司","value":"200.00"},

25 {"name":"青岛理研电线电缆有限公司","value":"1000.00"},

26 {"name":"青岛胶南瑞源纸业有限公司","value":"500.00"},

27 {"name":"青岛胶南惠丰机械有限公司","value":"100.00"},

28 {"name":"青岛佳春机械有限公司","value":"500.00"}

29 ];

30 var geoCoordMap = {

31 '青岛威达体育用品有限公司':[120.442145,36.353304],

32 '青岛万福食品有限公司':[120.501856,36.862275],

33 '青岛帅潮实业有限公司':[120.402697,36.218331],

34 '青岛市琴岛电器有限公司':[120.500757,36.417052],

35 '青岛普天电器有限公司':[120.083109,36.295657],

36 '青岛龙兴机械有限公司':[119.778027,36.997143],

37 '青岛理研电线电缆有限公司':[120.510292,36.309673],

38 '青岛胶南瑞源纸业有限公司':[120.02328,35.890329],

39 '青岛胶南惠丰机械有限公司':[119.918591,35.918377],

40 '青岛佳春机械有限公司':[120.010518,36.063161]

41 }

42

43 //获取数据和坐标

44 var convertData= function (data) {

45 var res = [];

46 for (var i = 0; i < data.length; i++) {

47

48 var geoCoord = geoCoordMap[data[i].name];

49

50 if (geoCoord) {

51 res.push({

52 name: data[i].name,

53 value: geoCoord.concat(data[i].value)

54 });

55

56 }

57 }

58 return res;

59 };

60

61 var option = {

62 backgroundColor: '#404a59',

63 title: {

64 text: '青岛市企业分布',

65 left: 'center',

66 textStyle: {

67 color: '#fff'

68 }

69 },

70 //提示框

71 tooltip : {

72 trigger: 'item',

73 formatter: function (params) { //添加数字,否则为坐标

74 //console.log(params.value)

75 return params.name+'

'+'注册资本'+''+':'+''+params.value[2]+''+'万元'

76

77 },

78 padding:[

79 5, // 上

80 10, // 右

81 5, // 下

82 10, // 左

83 ],

84 textStyle:{

85 color: '#fff',

86 fontSize:'13'

87 }

88 },

89 //图例组件

90 legend: {

91 orient: 'horizontal',

92 //相等于left 、top、bottom、right

93 y: 'bottom',

94 x:'right',

95 //这里的数据名称要和series中的name名称一样,否则不显示

96 data:['规上企业'],

97 textStyle: {

98 color: '#fff'

99 }

100 },

101

102 //地图

103 geo: {

104 map: 'qingdao',

105 label: {

106 emphasis: {

107 show: false

108 }

109 },

110 roam: true,

111 itemStyle: {

112 //正常状态下

113 normal: {

114 areaColor: '#323c48',

115 borderColor: '#111'

116 },

117 //选定某一区域下 相当于 hover

118 emphasis: {

119 areaColor: '#2a333d'

120

121 }

122

123 },

124 z:1

125 },

126 //这里数据中主要是冒泡图数据

127 series : [{

128 name: '规上企业',

129 type: 'scatter',

130 coordinateSystem: 'geo',

131 //标点的大小

132 data: convertData(data),

133 symbolSize: function (val) {

134 return val[2] / 30000; //也可以根据这里的数值更改大小 val[2] / x x越小,标点越大

135 },

136 label: {

137 normal: {

138 formatter: '{b}',

139 position: 'right',

140 show: false //根据需求可以更改标点标签是否显示

141 },

142 emphasis: {

143 show: true

144 }

145 },

146 itemStyle: {

147 normal: {

148 color: '#ddb926'

149 }

150 }

151 },

152 {

153 name:'上规企业',

154 type: 'effectScatter',

155 coordinateSystem: 'geo',

156 data: convertData(data.sort(function (a, b) { //这里是多个数据比较大小

157 return b.value - a.value;

158 }).slice(0,1000)), //slice里面的数可以是0 ,意思是全部显示 0,1000 意思是显示这组数据中最大前1000组

159 symbolSize: function (val) {

160 return val[2] / 30000;

161 },

162

163 showEffectOn: 'render',

164 rippleEffect: {

165 brushType: 'stroke'

166 },

167 hoverAnimation: true,

168 label: {

169 normal: {

170 formatter: '{b}',

171 position: 'right',

172 show: false

173 },

174 emphasis: {

175 show: true

176 }

177 },

178 itemStyle: {

179 normal: {

180 color: '#f4e925',

181 shadowBlur: 10,

182 shadowColor: '#333'

183 }

184 }

185

186 }

187

188 ]

189 };

190

191 chart.setOption(option);

192

193

194

效果图如下:

具体的echarts配置请参考echarts文档:/option.html#title

另一种地图标点可以试着做一下哦!

二、折线图

折线图的准备工作只是下载echarts文件。

以下是代码:

1 option = {

2 //这里如果不想用echart自动配置的颜色,可以设定一下

3 color: ['#2ec7c9', '#b7a3de', '#5ab1ef', '#febd87'],

4

5 tooltip: {

6 //触发类型

7 trigger: 'axis'

8 },

9 legend: {

10 data:['交易额','交易笔数','卡均交易额','卡均交易笔数'],

11 top:"3%"

12 },

13 grid: {

14

15 left: '3%',

16 right: '4%',

17 bottom: '10%',

18 containLabel: true

19

20 },

21 toolbox: {

22 feature: {

23 dataView:{

24 iconStyle:{

25 normal:{

26 borderColor:'#d87f3f'

27 }

28 }

29 },

30 restore:{

31 iconStyle:{

32 normal:{

33 borderColor:'#2a95ff'

34 }

35 }

36 },

37

38 magicType: {

39 type: ['line', 'bar'],

40 iconStyle:{

41 normal:{

42 borderColor:'#54c954'

43 }

44 }

45 },

46 //保存图片

47 saveAsImage: {

48 iconStyle:{

49 normal:{

50 borderColor:'#4b0082'

51 }

52 }

53 }

54 },

55 right:'6%',

56 top:'3%'

57 },

58 xAxis: {

59 type: 'category',

60 boundaryGap: false,

61 axisLine:{

62 show:true,

63 //可以给坐标轴设定颜色

64 lineStyle:{

65 color:"#008acd",

66 width:2,

67 type:'solid'

68 }

69 },

70

71 data: ['周一','周二','周三','周四','周五','周六','周日']

72 },

73 yAxis: {

74 type: 'value',

75 axisLine:{

76 show:true,

77 lineStyle:{

78 color:"#008acd",

79 width:2,

80 type:'solid'

81 }

82 },

83 },

84 series: [

85 {

86 name:'交易额',

87 type:'line',

88 stack: '总量',

89 data:[120, 132, 101, 134, 90, 230, 210]

90 },

91 {

92 name:'交易笔数',

93 type:'line',

94 stack: '总量',

95 data:[220, 182, 191, 234, 290, 330, 310]

96 },

97 {

98 name:'卡均交易额',

99 type:'line',

100 stack: '总量',

101 data:[150, 232, 201, 154, 190, 330, 410]

102 },

103 {

104 name:'卡均交易笔数',

105 type:'line',

106 stack: '总量',

107 data:[320, 332, 301, 334, 390, 330, 320]

108 }

109 ]

110 };

值得注意以下:如果想要图表自适应,跟bootstrap连用,千万别忘了这句话:

window.onresize = function(){

myChart.resize();

}

三、饼图

给出这张设计图,难点应该是外面的圈了吧!

这里问了echarts是群里的大神,然后看了配置文档,做了出来,(思想是做了两个饼图,大的是饼图中的圆形图)贴出代码:

1 option = {

2 color :['#2ec7c9','#b6a2de','#5ab1ef','#ffb980','#d87a80','#8d98b3','#e5cf0d','#97b552','#95706d','#dc69aa','#07a2a4'],

3 title : {

4 text: '交易额前10位卡产品',

5 subtext: '单位:万',

6 x:'center'

7 },

8 tooltip : {

9 trigger: 'item',

10 formatter: "{a}

{b} : {c} ({d}%)"

11 },

12

13 series : [

14 {

15 name: '',

16 type: 'pie',

17 radius : '60%',

18 center: ['50%', '50%'],

19 data:[

20 {value:335, name:'卡1'},

21 {value:310, name:'卡2'},

22 {value:234, name:'卡3'},

23 {value:135, name:'卡4'},

24 {value:1548, name:'卡5'},

25 {value:335, name:'卡6'},

26 {value:111, name:'卡7'},

27 {value:222, name:'卡8'},

28 {value:135, name:'卡9'},

29 {value:321, name:'卡10'},

30 {value:135, name:'其他'},

31 ],

32 itemStyle: {

33 emphasis: {

34 shadowBlur: 10,

35 shadowOffsetX: 0,

36 shadowColor: 'rgba(0, 0, 0, 0.5)'

37 }

38 },

39 markArea:{

40 itemStyle:{

41 normal:{

42

43 borderColor:'#000',

44 borderType:'solid'

45 }

46 }

47 }

48 },

49 {

50

51 type: 'pie',

52 //因为是需要圆形,所以提示框之类的都不显示

53 tooltip: {

54 show: false

55 },

56 hoverAnimation: false, //鼠标移入变大

57 radius: ['65%', '65.5%'], //圆心空出的大小

58 itemStyle: {

59 normal: {

60 label: {

61 show: false,

62 position: 'outside'

63 },

64 labelLine: {

65 show: false,

66 length: 100,

67 smooth: 0.5

68 },

69 borderWidth: 5,

70 shadowBlur: 40

71

72

73 }

74 },

75 data: [{

76 value: 0

77

78 }]

79 }

80 ]

81 };

echarts图表很有趣,对数据可视化感兴趣的可以体验体验,看着一些大神做出来的图表,佩服的五体投地。贴张图分享下~

网址:/explore.html#sort=rank~timeframe=all~author=all

如果觉得《echarts 世界地图标点_关于echarts的那些事(地图标点 折线图 饼图)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。