demo.js 4.4 KB

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