index.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <!--
  2. 描述: 双轴柱状图
  3. 作者: Jack Chen
  4. 日期: 2020-04-27
  5. -->
  6. <template>
  7. <div class="wrap-container sn-container">
  8. <div class="sn-content">
  9. <div class="sn-title">双轴柱状图</div>
  10. <div class="sn-body">
  11. <div class="wrap-container">
  12. <div class="chartsdom" id="chart_bar"></div>
  13. </div>
  14. </div>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. export default {
  20. name: "szBar",
  21. data() {
  22. return {
  23. option: null,
  24. xAxisData: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
  25. yData1: [9, 12, 15, 18, 15, 12, 9, 12, 15, 18, 15, 12],
  26. yData2: [-9, -12, -15, -18, -15, -12, -9, -12, -15, -18, -15, -12],
  27. }
  28. },
  29. mounted() {
  30. this.getEchart();
  31. },
  32. methods: {
  33. getEchart() {
  34. let myChart = echarts.init(document.getElementById('chart_bar'));
  35. let barWidth = '10%';
  36. let dataCoord = [
  37. {coord: [0, 9]},
  38. {coord: [1, 12]},
  39. {coord: [2, 15]},
  40. {coord: [3, 18]},
  41. {coord: [4, 15]},
  42. {coord: [5, 12]},
  43. {coord: [6, 9]},
  44. {coord: [7, 12]},
  45. {coord: [8, 15]},
  46. {coord: [9, 18]},
  47. {coord: [10, 15]},
  48. {coord: [11, 12]},
  49. ];
  50. let dataCoord2 = [
  51. {coord: [0, -9]},
  52. {coord: [1, -12]},
  53. {coord: [2, -15]},
  54. {coord: [3, -18]},
  55. {coord: [4, -15]},
  56. {coord: [5, -12]},
  57. {coord: [6, -9]},
  58. {coord: [7, -12]},
  59. {coord: [8, -15]},
  60. {coord: [9, -18]},
  61. {coord: [10, -15]},
  62. {coord: [11, -12]},
  63. ];
  64. this.option = {
  65. xAxis: {
  66. data: this.xAxisData,
  67. axisLabel: {
  68. color: '#999',
  69. formatter: '{value} 月'
  70. },
  71. axisTick: {
  72. show: false
  73. },
  74. axisLine: {
  75. show: true,
  76. lineStyle: {
  77. color: 'rgba(40, 103, 168, 0.3)',
  78. }
  79. },
  80. },
  81. yAxis: {
  82. axisLabel: {
  83. color: '#999'
  84. },
  85. axisTick: {
  86. show: false
  87. },
  88. splitLine: {
  89. show: false
  90. },
  91. axisLine: {
  92. show: true,
  93. lineStyle: {
  94. color: 'rgba(40, 103, 168, 0.3)'
  95. }
  96. },
  97. },
  98. grid: {
  99. top: 20,
  100. left: 20,
  101. right: 20,
  102. bottom: 20,
  103. containLabel: true
  104. },
  105. series: [
  106. {
  107. name: '正值柱状图',
  108. type: 'bar',
  109. stack: 'one',
  110. itemStyle: {
  111. normal: {
  112. color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  113. offset: 1,
  114. color: 'rgba(0, 0, 0, 0)'
  115. },{
  116. offset: 0.5,
  117. color: '#466e71'
  118. },{
  119. offset: 0,
  120. color: '#eb9b44'
  121. }])
  122. }
  123. },
  124. barWidth: barWidth,
  125. markPoint: {
  126. symbol: 'circle',
  127. itemStyle: {
  128. normal: {
  129. color: '#eb9b44',
  130. shadowColor: '#eb9b44',
  131. shadowBlur: 20
  132. }
  133. },
  134. symbolSize: [10, 10], // 容器大小
  135. symbolOffset: [0, 0], // 位置偏移
  136. data: dataCoord,
  137. },
  138. data: this.yData1
  139. },
  140. {
  141. name: '负值柱状图',
  142. type: 'bar',
  143. stack: 'one',
  144. itemStyle: {
  145. normal: {
  146. color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
  147. offset: 0,
  148. color: 'rgba(0, 0, 0, 0)'
  149. },{
  150. offset: 0.5,
  151. color: '#774a75'
  152. },{
  153. offset: 1,
  154. color: '#b34d69'
  155. }])
  156. }
  157. },
  158. barWidth: barWidth,
  159. markPoint: {
  160. symbol: 'circle',
  161. itemStyle: {
  162. normal: {
  163. color: '#b34d69',
  164. shadowColor: '#b34d69',
  165. shadowBlur: 20
  166. }
  167. },
  168. symbolSize: [10, 10],
  169. symbolOffset: [0, 0],
  170. data: dataCoord2,
  171. },
  172. data: this.yData2
  173. }
  174. ]
  175. };
  176. myChart.setOption(this.option, true);
  177. window.addEventListener('resize', () => {
  178. myChart.resize();
  179. });
  180. }
  181. },
  182. beforeDestroy() {
  183. }
  184. };
  185. </script>
  186. <style lang="scss" scoped>
  187. .sn-container {
  188. left: 975px;
  189. top: 690px;
  190. width: 895px;
  191. height: 400px;
  192. .chartsdom {
  193. width: 100%;
  194. height: 95%;
  195. }
  196. }
  197. </style>