当前位置:   article > 正文

Vue ECharts X轴 type为value的数据格式 + X轴固定间隔并向上取整十位数 - 附完整示例_echarts x轴 value

echarts x轴 value

 ECharts:一个基于 JavaScript 的开源可视化图表库

目录

效果

一、介绍

 1、官方文档:Apache ECharts

2、官方示例

二、准备工作

1、安装依赖包

 2、示例版本 

三、使用步骤

1、在单页面引入 ' echarts '

2、指定容器并设置容器宽高

3、数据处理(关键点)

四、完整示例

tips

xAxis. interval  试一试


效果

一、介绍

 1、官方文档:Apache ECharts

Apache EChartsApache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。https://echarts.apache.org/zh/index.html

2、官方示例

二、准备工作

1、安装依赖包

npm install echarts --save

 2、示例版本 

"echarts": "^5.4.2",

三、使用步骤

1、在单页面引入 ' echarts '

import * as echarts from "echarts";

注:上面的代码会引入 ECharts 中所有的图表和组件,如果你不想引入所有组件,也可以使用 ECharts 提供的按需引入的接口来打包必须的组件。详见官方文档:在项目中引入 ECharts - 入门篇 - Handbook - Apache ECharts

2、指定容器并设置容器宽高

  1. <template>
  2. <div id="main"></div>
  3. </template>
  4. <script>
  5. import * as echarts from "echarts";
  6. export default {
  7. name: "mutiYAxis",
  8. data() {
  9. return {
  10. };
  11. },
  12. methods: {
  13. initChart() {
  14. let data = this.data
  15. let chartDom = document.getElementById("main");
  16. let myChart = echarts.init(chartDom);
  17. let option;
  18. ...详见完整示例
  19. },
  20. },
  21. };
  22. </script>
  23. <style scoped>
  24. #main {
  25. width: 1000px;
  26. height: 500px;
  27. }
  28. </style>

3、数据处理(关键点)

        1)数据格式为一维数组

  1. dataList: [
  2. [0, 221.6503],
  3. [35.564, 198.3526],
  4. [68.154, 168.4582],
  5. [108.124, 145.4562],
  6. [136.357, 128.1254],
  7. [158.354, 99.6574],
  8. [227.137, 58.5234],
  9. [268.854, 36.8563],
  10. [324.358, 21.2563],
  11. [385.135, 11.7854],
  12. [462.568, 0.35413]
  13. ]

        2)X轴type设为value

  1. xAxis: [
  2. {
  3. name: 'xAxisName',
  4. nameLocation: 'center',
  5. nameGap: 40,
  6. type: 'value',
  7. boundaryGap: false
  8. ......
  9. }
  10. ]

        3)  X轴固定间隔并向上取整十位数 + 设置最大值和最小值

向上取整的更多示例请看这里 =》CSDN

  1. let xMax = Math.ceil(dataList[dataList.length - 1][0] / 20) * 20;
  2. xAxis: [
  3. {
  4. name: 'xAxisName',
  5. nameLocation: 'center',
  6. nameGap: 40,
  7. type: 'value',
  8. boundaryGap: false,
  9. min: 0,
  10. max: xMax,
  11. interval: 20, // 无法在类目轴中使用。
  12. ......
  13. }
  14. ]

        4) dataZoom的type设为inside

  1. dataZoom: [{
  2. type: 'inside' // 内置于坐标系中,使用户可以在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系。
  3. }]

        5)  toolbox的feature的dataZoom即使是空对象也要保留,否则会没有缩放icon

  1. toolbox: {
  2. show: true,
  3. feature: {
  4. // dataZoom 空对象也要保留,否则会没有缩放icon
  5. dataZoom: {},
  6. restore: {
  7. show: true
  8. }
  9. },
  10. right: '2%',
  11. }

注:部分方法/数据的完整版在完整示例展示

四、完整示例

  1. <template>
  2. <div class="typeValue">
  3. <div id="main"></div>
  4. </div>
  5. </template>
  6. <script>
  7. import * as echarts from "echarts";
  8. export default {
  9. name: "typeValue",
  10. data() {
  11. return {
  12. result: {
  13. dataList: [
  14. [0, 221.6503],
  15. [35.564, 198.3526],
  16. [68.154, 168.4582],
  17. [108.124, 145.4562],
  18. [136.357, 128.1254],
  19. [158.354, 99.6574],
  20. [227.137, 58.5234],
  21. [268.854, 36.8563],
  22. [324.358, 21.2563],
  23. [385.135, 11.7854],
  24. [462.568, 0.35413],
  25. ],
  26. seriesName: '名称'
  27. },
  28. };
  29. },
  30. mounted() {
  31. this.$nextTick(() => {
  32. this.initChart(this.result);
  33. });
  34. },
  35. methods: {
  36. initChart(data) {
  37. let chartDom = document.getElementById("main");
  38. let myChart = echarts.init(chartDom);
  39. let option;
  40. const { dataList, seriesName } = data;
  41. if (dataList === null || dataList.length === 0) return;
  42. let legendData = [];
  43. legendData.push(seriesName);
  44. let xMax = Math.ceil(dataList[dataList.length - 1][0] / 20) * 20;
  45. option = {
  46. title: {
  47. left: '10%',
  48. top: '3%',
  49. text: 'title',
  50. },
  51. grid: {
  52. left: '12%'
  53. },
  54. toolbox: {
  55. show: true,
  56. feature: {
  57. // dataZoom 空对象也要保留,否则会没有缩放icon
  58. dataZoom: {},
  59. restore: {
  60. show: true
  61. }
  62. },
  63. right: '2%',
  64. },
  65. tooltip: {
  66. trigger: "axis",
  67. borderColor: 'rgba(226,231,234,0.75)',
  68. borderRadius: 4,
  69. backgroundColor: 'rgba(240,244,248,0.75)',
  70. textStyle: {
  71. color: '#333',
  72. fontSize: 13
  73. },
  74. formatter: function (params) {
  75. const { data } = params[0]
  76. return `(${data[0]}, ${data[1]})`;
  77. },
  78. },
  79. legend: {
  80. type: "scroll",
  81. data: legendData,
  82. textStyle: {
  83. color: "#999"
  84. }
  85. },
  86. xAxis: [
  87. {
  88. name: 'xAxisName',
  89. nameLocation: 'center',
  90. nameGap: 40,
  91. type: 'value',
  92. boundaryGap: false,
  93. min: 0,
  94. max: xMax,
  95. interval: 20, // 无法在类目轴中使用。
  96. boundaryGap: false,
  97. axisLabel: {
  98. show: true,
  99. },
  100. splitLine: {
  101. show: false,
  102. },
  103. axisTick: {
  104. show: false,
  105. },
  106. axisLine: {
  107. show: true,
  108. }
  109. }
  110. ],
  111. yAxis: [
  112. {
  113. type: 'value',
  114. boundaryGap: [0, '100%'],
  115. name: 'yAxisName',
  116. nameLocation:'center',
  117. nameGap: 40,
  118. splitLine: {
  119. show: false,
  120. },
  121. axisTick: {
  122. show: false,
  123. },
  124. axisLabel: {
  125. show: true,
  126. },
  127. axisLine: {
  128. show: true,
  129. },
  130. }
  131. ],
  132. series: [
  133. {
  134. name: data.seriesName,
  135. type: "line",
  136. symbol: 'none',
  137. sampling: 'lttb',
  138. itemStyle: {
  139. color: 'rgb(255, 70, 131)'
  140. },
  141. areaStyle: {
  142. color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
  143. {
  144. offset: 0,
  145. color: 'rgb(255, 158, 68)'
  146. },
  147. {
  148. offset: 1,
  149. color: 'rgb(255, 70, 131)'
  150. }
  151. ])
  152. },
  153. data: dataList,
  154. }
  155. ],
  156. dataZoom: [{
  157. type: 'inside' // 内置于坐标系中,使用户可以在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系。
  158. }]
  159. };
  160. option && myChart.setOption(option);
  161. },
  162. },
  163. }
  164. </script>
  165. <style lang="less" scoped>
  166. #main {
  167. width: 1000px;
  168. height: 500px;
  169. }
  170. </style>

tips

1、X轴的type一般都是category,假如该示例的type为category,图形会如下图所示,很显然数据显示有问题,所以务必要修改type为value

2、X轴设置interval,无法在类目轴中使用。由于需要设置interval,因此X轴的type改为value

Documentation - Apache ECharts

xAxis. interval  试一试

number

强制设置坐标轴分割间隔。

因为 splitNumber 是预估的值,实际根据策略计算出来的刻度可能无法达到想要的效果,这时候可以使用 interval 配合 minmax 强制设定刻度划分,一般不建议使用。

无法在类目轴中使用。在时间轴(type: 'time')中需要传时间戳,在对数轴(type: 'log')中需要传指数值。

 欢迎扫码下方二维码关注VX公众号

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/617195
推荐阅读
相关标签
  

闽ICP备14008679号