经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue+F2生成折线图的方法
来源:jb51  时间:2022/4/7 12:49:29  对本文有异议

本文实例为大家分享了vue+F2生成折线图的具体代码,供大家参考,具体内容如下

1、效果图

2、打开命令窗口,通过 npm 安装F2

  1. npm install @antv/f2 --save

3、使用 import 或 require 引入F2

  1. const F2 = require('@antv/f2');

4、在页面上创建一个具备宽高的 canvas 标签,并指定 id:

  1. <template>
  2. ? <div class="container">
  3. ? ? <canvas id="myChart"></canvas>
  4. ? </div>
  5. </template>

5、编写图表绘制代码

  1. <template>
  2. ? <div class="container">
  3. ? ? <canvas id="myChart"></canvas>
  4. ? </div>
  5. </template>
  6.  
  7. <script>
  8. const F2 = require("@antv/f2");
  9.  
  10. export default {
  11. ? name: "aaa",
  12. ? data() {
  13. ? ? return {
  14. ? ? ? chartData: [
  15. ? ? ? ? {
  16. ? ? ? ? ? date: "2017-06-05",
  17. ? ? ? ? ? value: 116
  18. ? ? ? ? },
  19. ? ? ? ? {
  20. ? ? ? ? ? date: "2017-06-06",
  21. ? ? ? ? ? value: 129
  22. ? ? ? ? },
  23. ? ? ? ? {
  24. ? ? ? ? ? date: "2017-06-07",
  25. ? ? ? ? ? value: 135
  26. ? ? ? ? },
  27. ? ? ? ? {
  28. ? ? ? ? ? date: "2017-06-08",
  29. ? ? ? ? ? value: 86
  30. ? ? ? ? },
  31. ? ? ? ? {
  32. ? ? ? ? ? date: "2017-06-09",
  33. ? ? ? ? ? value: 73
  34. ? ? ? ? },
  35. ? ? ? ? {
  36. ? ? ? ? ? date: "2017-06-10",
  37. ? ? ? ? ? value: 85
  38. ? ? ? ? },
  39. ? ? ? ? {
  40. ? ? ? ? ? date: "2017-06-11",
  41. ? ? ? ? ? value: 73
  42. ? ? ? ? },
  43. ? ? ? ? {
  44. ? ? ? ? ? date: "2017-06-12",
  45. ? ? ? ? ? value: 68
  46. ? ? ? ? },
  47. ? ? ? ? {
  48. ? ? ? ? ? date: "2017-06-13",
  49. ? ? ? ? ? value: 92
  50. ? ? ? ? },
  51. ? ? ? ? {
  52. ? ? ? ? ? date: "2017-06-14",
  53. ? ? ? ? ? value: 130
  54. ? ? ? ? },
  55. ? ? ? ? {
  56. ? ? ? ? ? date: "2017-06-15",
  57. ? ? ? ? ? value: 245
  58. ? ? ? ? },
  59. ? ? ? ? {
  60. ? ? ? ? ? date: "2017-06-16",
  61. ? ? ? ? ? value: 139
  62. ? ? ? ? },
  63. ? ? ? ? {
  64. ? ? ? ? ? date: "2017-06-17",
  65. ? ? ? ? ? value: 115
  66. ? ? ? ? },
  67. ? ? ? ? {
  68. ? ? ? ? ? date: "2017-06-18",
  69. ? ? ? ? ? value: 111
  70. ? ? ? ? },
  71. ? ? ? ? {
  72. ? ? ? ? ? date: "2017-06-19",
  73. ? ? ? ? ? value: 309
  74. ? ? ? ? },
  75. ? ? ? ? {
  76. ? ? ? ? ? date: "2017-06-20",
  77. ? ? ? ? ? value: 206
  78. ? ? ? ? },
  79. ? ? ? ? {
  80. ? ? ? ? ? date: "2017-06-21",
  81. ? ? ? ? ? value: 137
  82. ? ? ? ? },
  83. ? ? ? ? {
  84. ? ? ? ? ? date: "2017-06-22",
  85. ? ? ? ? ? value: 128
  86. ? ? ? ? },
  87. ? ? ? ? {
  88. ? ? ? ? ? date: "2017-06-23",
  89. ? ? ? ? ? value: 85
  90. ? ? ? ? },
  91. ? ? ? ? {
  92. ? ? ? ? ? date: "2017-06-24",
  93. ? ? ? ? ? value: 94
  94. ? ? ? ? }
  95. ? ? ? ]
  96. ? ? };
  97. ? },
  98. ? created() {},
  99.  
  100. ? methods: {
  101. ? ? drawChart() {
  102. ? ? ? var _this = this;
  103. ? ? ? // Step 1: 创建 Chart 对象
  104. ? ? ? const chart = new F2.Chart({
  105. ? ? ? ? id: "myChart",
  106. ? ? ? ? pixelRatio: window.devicePixelRatio // 指定分辨率
  107. ? ? ? });
  108.  
  109. ? ? ? // Step 2: 载入数据源
  110. ? ? ? chart.source(_this.chartData, {
  111. ? ? ? ? value: {
  112. ? ? ? ? ? tickCount: 10, // 坐标轴上刻度点的个数
  113. ? ? ? ? ? min: 50, // 手动指定value字段最小值
  114. ? ? ? ? ? max: 350 // 手动指定value字段最大值
  115. ? ? ? ? },
  116. ? ? ? ? date: {
  117. ? ? ? ? ? type: "timeCat", // 指定date字段为时间类型
  118. ? ? ? ? ? range: [0, 0.8], // 占x轴80%
  119. ? ? ? ? ? tickCount: 3 // 坐标轴上刻度点的个数
  120. ? ? ? ? }
  121. ? ? ? });
  122.  
  123. ? ? ? // Step 3:使用图形语法进行图表的绘制
  124. ? ? ? // 注意:f2是移动端图表库,只有在移动端才能显示图例
  125. ? ? ? chart.tooltip({
  126. ? ? ? ? custom: true, // 是否自定义 tooltip 提示框
  127. ? ? ? ? showXTip: true, // 是否展示 X 轴的辅助信息
  128. ? ? ? ? showYTip: true, // 是否展示 Y 轴的辅助信息
  129. ? ? ? ? snap: true, // 是否将辅助线准确定位至数据点
  130. ? ? ? ? crosshairsType: "xy", // 辅助线的种类
  131. ? ? ? ? crosshairsStyle: {
  132. ? ? ? ? ? // 配置辅助线的样式
  133. ? ? ? ? ? lineDash: [2], // 点线的密度
  134. ? ? ? ? ? stroke: "rgba(255, 0, 0, 0.25)",
  135. ? ? ? ? ? lineWidth: 2
  136. ? ? ? ? }
  137. ? ? ? });
  138.  
  139. ? ? ? // 坐标轴配置(此处是为date对应的坐标轴进行配置)
  140. ? ? ? chart.axis("date", {
  141. ? ? ? ? label: function label(text, index, total) {
  142. ? ? ? ? ? const textCfg = {
  143. ? ? ? ? ? ? textAlign: "center"
  144. ? ? ? ? ? };
  145. ? ? ? ? ? // 第一个点左对齐,最后一个点右对齐,其余居中,只有一个点时左对齐
  146. ? ? ? ? ? if (index === 0) {
  147. ? ? ? ? ? ? textCfg.textAlign = "left";
  148. ? ? ? ? ? } else if (index === total - 1) {
  149. ? ? ? ? ? ? textCfg.textAlign = "right";
  150. ? ? ? ? ? }
  151. ? ? ? ? ? textCfg.text = "day: " + text; // textCfg.text 支持文本格式化处理
  152. ? ? ? ? ? return textCfg;
  153. ? ? ? ? }
  154. ? ? ? });
  155. ? ? ? // 点按照 x 轴连接成一条线,构成线图
  156. ? ? ? chart.line().position("date*value");
  157.  
  158. ? ? ? // Step 4: 渲染图表
  159. ? ? ? chart.render();
  160. ? ? }
  161. ? },
  162.  
  163. ? components: {},
  164.  
  165. ? mounted() {
  166. ? ? var _this = this;
  167. ? ? _this.drawChart();
  168. ? },
  169.  
  170. ? computed: {},
  171.  
  172. ? watch: {}
  173. };
  174. </script>
  175.  
  176. <style scoped>
  177. .container {
  178. ? ? background-color: #fff;
  179. }
  180. #myChart {
  181. ? ? width: 100%;
  182. ? ? height: 260px;
  183. }
  184. </style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

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

本站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号