经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
echarts 饼图 + 全屏显示
来源:cnblogs  作者:&执念  时间:2019/6/21 9:11:55  对本文有异议

效果图:

 

代码:

  1. 1 <!DOCTYPE html>
  2. 2 <html lang="en">
  3. 3 <head>
  4. 4 <meta charset="UTF-8">
  5. 5 <title>饼图</title>
  6. 6 <script src="js/jquery-2.2.3.min.js"></script>
  7. 7 <script src="./js/echarts.min.js"></script>
  8. 8 <style>
  9. 9 #demo {
  10. 10 width: 450px;
  11. 11 height: 300px;
  12. 12 }
  13. 13
  14. 14 #fullScreenMask {
  15. 15 position: fixed;
  16. 16 top: 0;
  17. 17 left: 0;
  18. 18 width: 100%;
  19. 19 height: 100%;
  20. 20 display: none;
  21. 21 background-color: #ffffff;
  22. 22 }
  23. 23
  24. 24 #fullScreen {
  25. 25 width: 100%;
  26. 26 height: 100%;
  27. 27 }
  28. 28 </style>
  29. 29 </head>
  30. 30 <body>
  31. 31 <!-- ECharts 准备一个具备大小(宽高)的 DOM -->
  32. 32 <div id="demo"></div>
  33. 33
  34. 34 <!--全屏显示的容器-->
  35. 35 <div id="fullScreenMask">
  36. 36 <div id="fullScreen"></div>
  37. 37 </div>
  38. 38
  39. 39 </body>
  40. 40 <script>
  41. 41 /*
  42. 42 * 知识点:
  43. 43 * 1、自定义工具按钮 全屏显示(在图表右上角)
  44. 44 * 2、图例名称过长拼接省略号
  45. 45 * 3、生成随机颜色
  46. 46 *
  47. 47 * 存在问题:
  48. 48 * 视觉引导线及标签名称过长 超出视图范围 如部门名称很长的这个情况
  49. 49 * 解决办法:
  50. 50 * 增加全屏显示功能 且小图表只开启前五项
  51. 51 * */
  52. 52
  53. 53
  54. 54 //初始化一个 echarts 实例
  55. 55 var chart = echarts.init(document.getElementById('demo'));
  56. 56 //声明一个 全屏显示的echarts图表
  57. 57 var chartScreen = null;
  58. 58 //指定图表的配置项和数据
  59. 59 var option = {
  60. 60 backgroundColor: 'rgba(70, 131, 254, .3)',
  61. 61 tooltip: {
  62. 62 trigger: 'item',
  63. 63 formatter: "{a} <br/>{b}: {c}"+ '' +" ({d}%)" //饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)
  64. 64 },
  65. 65 legend: {
  66. 66 icon: 'rect',
  67. 67 itemWidth: 12,
  68. 68 itemHeight: 12,
  69. 69 type: 'scroll',
  70. 70 textStyle:{
  71. 71 color:'#ffffff',
  72. 72 fontSize:12
  73. 73 },
  74. 74 orient: 'vertical',
  75. 75 data:[],
  76. 76 selected:{},
  77. 77
  78. 78 right: 10,
  79. 79 top: 30,
  80. 80 bottom: 20,
  81. 81
  82. 82 formatter: function (name) {
  83. 83 return echarts.format.truncateText(name, 90, '14px Microsoft Yahei', '');//图例名称过长拼接省略号
  84. 84 },
  85. 85 tooltip: {
  86. 86 show: true
  87. 87 }
  88. 88 },
  89. 89 toolbox: {// 工具栏
  90. 90 itemSize:16,
  91. 91 showTitle:false,
  92. 92 right:24,
  93. 93 feature: {
  94. 94 myTool: {//自定义工具 myTool
  95. 95 show: true,
  96. 96 title: '全屏显示',
  97. 97 icon: "image://" + "./css/icon/full-screen-default.png",//此处 图片路径前面必须加字符串 "image://"
  98. 98 onclick: function (){
  99. 99 //生成全屏显示的图表
  100. 100 if (setFullScreenToolBox(option)) {
  101. 101 getChartData(chartScreen,false);
  102. 102 }
  103. 103 }
  104. 104 }
  105. 105 }
  106. 106 },
  107. 107 series: [
  108. 108 {
  109. 109 name:'人员部署',
  110. 110 type:'pie',
  111. 111 barWidth: '30%',
  112. 112 radius: ['50%', '70%'],
  113. 113 center:['40%', '50%'],
  114. 114 label: {
  115. 115 emphasis: {
  116. 116 show: true,
  117. 117 textStyle: {
  118. 118 fontSize: '14',
  119. 119 fontWeight: 'bold'
  120. 120 }
  121. 121 }
  122. 122 },
  123. 123 labelLine: {
  124. 124 normal: {
  125. 125 show: true
  126. 126 },
  127. 127 emphasis: {
  128. 128 show: true,
  129. 129 fontWeight: 'bold'
  130. 130 }
  131. 131 },
  132. 132 itemStyle:{
  133. 133 normal:{
  134. 134 color:function(params) {//生成随机颜色
  135. 135 var colorList = ['#E09C19','#E63234','#6AC3F1','#DD6B25','#D4E019','#009944','#6A8DF1','#C535A8','#6D54E9','#67E682','#E954CF','#CAF161'];
  136. 136 return params.dataIndex >= colorList.length-1 ? "#"+Math.floor(Math.random()*(256*256*256-1)).toString(16):colorList[params.dataIndex];
  137. 137
  138. 138 },
  139. 139 }
  140. 140 },
  141. 141 data:[]
  142. 142 }
  143. 143 ]
  144. 144 };
  145. 145
  146. 146 //使用刚指定的配置项和数据显示图表。
  147. 147 chart.setOption(option);
  148. 148 //插入图表数据
  149. 149 getChartData(chart,true) ;
  150. 150
  151. 151
  152. 152 /*
  153. 153 * 获取图表数据并插入
  154. 154 * @param chart 需要插入数据的图表
  155. 155 * @param bool 是否只显示前五项
  156. 156 * */
  157. 157 function getChartData(chart,bool) {
  158. 158 // $.ajax({
  159. 159 // url: '/api/...',
  160. 160 // data: {},
  161. 161 // type: "POST",
  162. 162 // dataType: 'json',
  163. 163 // success: function(result){
  164. 164 var result = {
  165. 165 data:[
  166. 166 {
  167. 167 count: 5,
  168. 168 name: "部门一",
  169. 169 },
  170. 170 {
  171. 171 count: 15,
  172. 172 name: "很长名字的部门很长名字的部门很长名字的部门",
  173. 173 },
  174. 174 {
  175. 175 count: 5,
  176. 176 name: "部门二",
  177. 177 },
  178. 178 {
  179. 179 count: 5,
  180. 180 name: "部门三",
  181. 181 },
  182. 182 {
  183. 183 count: 55,
  184. 184 name: "很长很长名字的部门",
  185. 185 },
  186. 186 {
  187. 187 count: 5,
  188. 188 name: "财务部",
  189. 189 },
  190. 190 {
  191. 191 count: 5,
  192. 192 name: "行政部",
  193. 193 },
  194. 194 {
  195. 195 count: 5,
  196. 196 name: "很长名字的部门",
  197. 197 },
  198. 198 {
  199. 199 count: 588,
  200. 200 name: "人力部",
  201. 201 },
  202. 202 {
  203. 203 count: 5,
  204. 204 name: "销售部",
  205. 205 },
  206. 206 {
  207. 207 count: 5,
  208. 208 name: "运营部",
  209. 209 },
  210. 210 {
  211. 211 count: 5,
  212. 212 name: "很长名字的部门很长名字的部门",
  213. 213 },
  214. 214 {
  215. 215 count: 25,
  216. 216 name: "部门五",
  217. 217 },
  218. 218 {
  219. 219 count: 85,
  220. 220 name: "部门6",
  221. 221 },
  222. 222 {
  223. 223 count: 55,
  224. 224 name: "部门7",
  225. 225 },
  226. 226 {
  227. 227 count: 55,
  228. 228 name: "部门8",
  229. 229 },
  230. 230 {
  231. 231 count: 555,
  232. 232 name: "部门9",
  233. 233 },
  234. 234 ]
  235. 235 }
  236. 236 var _count = [], _name = [] ,_selected = {};
  237. 237 if (result.data.length > 0) {
  238. 238 $.each(result.data,function (i,v) {
  239. 239
  240. 240 var proname = v.name;
  241. 241 _count.push({value:v.count, name:proname});
  242. 242 _name.push(proname);
  243. 243 //小图表 只显示前五项 大图表默认全部显示
  244. 244 bool && (i < 5 ?_selected[proname] = true : _selected[proname] = false);
  245. 245
  246. 246 });
  247. 247
  248. 248 chart.setOption({
  249. 249 legend: {
  250. 250 data:_name,
  251. 251 selected:_selected
  252. 252 },
  253. 253 series: [
  254. 254 {
  255. 255 data:_count
  256. 256 }
  257. 257 ]
  258. 258 });
  259. 259
  260. 260
  261. 261 }
  262. 262 // }
  263. 263 // });
  264. 264 }
  265. 265
  266. 266
  267. 267 //全屏显示 toolbox回调
  268. 268 //@param option echarts的配置项
  269. 269 function setFullScreenToolBox(option) {
  270. 270 if ($('#fullScreenMask').css('display') === 'block') {
  271. 271 $('#fullScreenMask').hide();
  272. 272 ChartScreen = null;
  273. 273 return false;
  274. 274 }
  275. 275
  276. 276 $('#fullScreenMask').show();
  277. 277 chartScreen = echarts.init(document.getElementById('fullScreen'));
  278. 278 chartScreen.setOption(option);
  279. 279 chartScreen.setOption({
  280. 280 toolbox: {
  281. 281 feature: {
  282. 282 myTool: {
  283. 283 title: '退出全屏',
  284. 284 icon: "image://" + "./css/icon/exit-full-screen-default.png",
  285. 285 }
  286. 286 }
  287. 287 }
  288. 288 });
  289. 289 return true;
  290. 290 }
  291. 291
  292. 292 window.onresize = function () {
  293. 293 chartScreen.resize()
  294. 294 }
  295. 295
  296. 296 </script>
  297. 297 </html>

 

原文链接:http://www.cnblogs.com/zhinian-/p/11062515.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号