right3_1.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. function right3_1(data){
  2. var myChart = echarts.init(document.getElementById('right3_1'), 'vintage');
  3. // data = [{
  4. // name: "电脑",
  5. // value:10
  6. // },
  7. // {
  8. // name: "手机",
  9. // value:23
  10. // },
  11. // {
  12. // name: "相机",
  13. // value:9
  14. // },
  15. // {
  16. // name: "刻录机",
  17. // value:15
  18. // },
  19. // {
  20. // name: "移动载体",
  21. // value: 20
  22. // },
  23. // ];
  24. arrName = getArrayValue(data, "name");
  25. arrValue = getArrayValue(data, "value");
  26. sumValue = eval(arrValue.join('+'));
  27. objData = array2obj(data, "name");
  28. optionData = getData(data)
  29. function getArrayValue(array, key) {
  30. var key = key || "value";
  31. var res = [];
  32. if (array) {
  33. array.forEach(function(t) {
  34. res.push(t[key]);
  35. });
  36. }
  37. return res;
  38. }
  39. function array2obj(array, key) {
  40. var resObj = {};
  41. for (var i = 0; i < array.length; i++) {
  42. resObj[array[i][key]] = array[i];
  43. }
  44. return resObj;
  45. }
  46. function getData(data) {
  47. var res = {
  48. series: [],
  49. yAxis: []
  50. };
  51. for (let i = 0; i < data.length; i++) {
  52. // console.log([70 - i * 15 + '%', 67 - i * 15 + '%']);
  53. res.series.push({
  54. name: '',
  55. type: 'pie',
  56. clockWise: false, //顺时加载
  57. hoverAnimation: false, //鼠标移入变大
  58. radius: [80 - i * 15 + '%', 70 - i * 15 + '%'],
  59. center: ["50%", "55%"],
  60. label: {
  61. show: false
  62. },
  63. itemStyle: {
  64. label: {
  65. show: false,
  66. },
  67. labelLine: {
  68. show: false
  69. },
  70. borderWidth: 0,
  71. },
  72. data: [{
  73. value: data[i].value,
  74. name: data[i].name
  75. }, {
  76. value: sumValue - data[i].value,
  77. name: '',
  78. itemStyle: {
  79. color: "rgba(0,0,0,0)",
  80. borderWidth: 0
  81. },
  82. tooltip: {
  83. show: false
  84. },
  85. hoverAnimation: false
  86. }]
  87. });
  88. res.series.push({
  89. name: '',
  90. type: 'pie',
  91. silent: true,
  92. z: 1,
  93. clockWise: false, //顺时加载
  94. hoverAnimation: false, //鼠标移入变大
  95. radius: [80 - i * 15 + '%', 70 - i * 15 + '%'],
  96. center: ["50%", "55%"],
  97. label: {
  98. show: false
  99. },
  100. itemStyle: {
  101. label: {
  102. show: false,
  103. },
  104. labelLine: {
  105. show: false
  106. },
  107. borderWidth: 0,
  108. },
  109. data: [{
  110. value: 7.5,
  111. itemStyle: {
  112. color: "rgb(3, 31, 62)",
  113. borderWidth: 0
  114. },
  115. tooltip: {
  116. show: false
  117. },
  118. hoverAnimation: false
  119. }, {
  120. value: 2.5,
  121. name: '',
  122. itemStyle: {
  123. color: "rgba(0,0,0,0)",
  124. borderWidth: 0
  125. },
  126. tooltip: {
  127. show: false
  128. },
  129. hoverAnimation: false
  130. }]
  131. });
  132. res.yAxis.push((data[i].value / sumValue * 100).toFixed(2) + "%");
  133. }
  134. return res;
  135. }
  136. option = {
  137. legend: {
  138. show: true,
  139. selectedMode:
  140. false,
  141. icon: "circle",
  142. top: "center",
  143. top: '12%',
  144. bottom: '53%',
  145. left: "55%",
  146. data: arrName,
  147. width: 40,
  148. padding: [0, 5],
  149. itemGap: 5,
  150. formatter: function(name) {
  151. return "{title|" + name + "}{value|" + (objData[name].value) + "} {title|台}"
  152. },
  153. textStyle: {
  154. rich: {
  155. title: {
  156. fontSize: 20,
  157. lineHeight: 30,
  158. color: "#00e4ff"
  159. },
  160. value: {
  161. fontSize:30,
  162. padding:[0,8,0,10],
  163. lineHeight: 20,
  164. color: "#fcdc00"
  165. }
  166. }
  167. },
  168. },
  169. tooltip: {
  170. show: true,
  171. trigger: "item",
  172. formatter: "{a}{b}:{c}({d}%)",
  173. textStyle:{
  174. fontSize:30
  175. }
  176. },
  177. color: ['#e6923e', '#3ee679','#3e6de6', 'rgb(52, 52, 176)'],
  178. xAxis: [{
  179. show: false
  180. }],
  181. series: optionData.series
  182. };
  183. myChart.setOption(option);
  184. }