移动端柱形图左右滑动 antv F2

超、凢脫俗 2022-04-11 09:47 355阅读 0赞

移动端柱形图滑动效果用antv F2就可以实现

我是直接用阿里的在线编辑器的,不知道后续会不会失效。

https://antv.alipay.com/zh-cn/f2/3.x/demo/interaction/pan-for-bar-chart.html

也可以直接复制下面代码改一改

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
  6. <meta name="chart-name" content="柱状图平移">
  7. <title>F2 图表组件库 - AntV</title>
  8. <link rel="stylesheet" href="https://gw.alipayobjects.com/os/rmsportal/YmDAMEQVbLJpVbKiRQVX.css" />
  9. </head>
  10. <body>
  11. <script>/*Fixing iframe window.innerHeight 0 issue in Safari*/document.body.clientHeight;</script>
  12. <script src="https://gw.alipayobjects.com/os/antv/assets/f2/3.3.0/f2-all.min.js"></script>
  13. <script src="https://gw.alipayobjects.com/os/antv/assets/lib/jquery-3.2.1.min.js"></script>
  14. <!-- 在 PC 上模拟 touch 事件 -->
  15. <script src="https://gw.alipayobjects.com/os/rmsportal/NjNldKHIVQRozfbAOJUW.js"></script>
  16. <div class="chart-wrapper">
  17. <canvas id="mountNode"></canvas>
  18. </div>
  19. <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
  20. <script>
  21. function formatNumber(n) {
  22. return String(Math.floor(n * 100) / 100).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  23. }
  24. $.getJSON('/assets/data/f2/steps.json', function(data) {
  25. var originDates = ['2018-05-01','2018-05-02','2018-05-03'];
  26. var originSteps = [];
  27. var firstDayArr = [];
  28. var chart = new F2.Chart({
  29. id: 'mountNode',
  30. pixelRatio: window.devicePixelRatio
  31. });
  32. chart.source(data, {
  33. date: {
  34. type: 'timeCat',
  35. tickCount: 15,
  36. values: originDates,
  37. mask: 'MM-DD'
  38. },
  39. steps: {
  40. tickCount: 5
  41. }
  42. });
  43. chart.axis('date', {
  44. tickLine: {
  45. length: 4,
  46. stroke: '#cacaca'
  47. },
  48. label: {
  49. fill: '#cacaca'
  50. },
  51. line: {
  52. top: true
  53. }
  54. });
  55. chart.axis('steps', {
  56. position: 'right',
  57. label: function label(text) {
  58. return {
  59. text: formatNumber(text * 1),
  60. fill: '#cacaca'
  61. };
  62. },
  63. grid: {
  64. stroke: '#d1d1d1'
  65. }
  66. });
  67. chart.tooltip({
  68. showItemMarker: false,
  69. background: {
  70. radius: 2,
  71. padding: [3, 5]
  72. },
  73. onShow: function onShow(ev) {
  74. var items = ev.items;
  75. items[0].name = '';
  76. items[0].value = items[0].value + ' 步';
  77. }
  78. });
  79. chart.interval().position('date*steps').style({
  80. radius: [2, 2, 0, 0]
  81. });
  82. firstDayArr.forEach(function(obj) {
  83. chart.guide().line({
  84. top: false,
  85. start: [obj.date, 'min'],
  86. end: [obj.date, 'max'],
  87. style: {
  88. lineWidth: 1,
  89. stroke: '#A4A4A4'
  90. }
  91. });
  92. chart.guide().text({
  93. position: [obj.date, 'max'],
  94. content: moment(obj.date).format('YYYY-MM'),
  95. style: {
  96. textAlign: 'start',
  97. fill: '#cacaca',
  98. textBaseline: 'top'
  99. },
  100. offsetX: 5,
  101. offsetY: 5
  102. });
  103. });
  104. // 定义进度条
  105. chart.scrollBar({
  106. mode: 'x',
  107. xStyle: {
  108. backgroundColor: '#e8e8e8',
  109. fillerColor: '#808080',
  110. offsetY: -2
  111. }
  112. });
  113. chart.interaction('pan');
  114. chart.render();
  115. });
  116. </script>
  117. </body>
  118. </html>

重点是这个,data是全部数据,originDates是部分数据,剩余的数据被隐藏,然后平移才可以查看剩余的数据,适当修改originDates就可以看到效果了。要调用这个方法 chart.interaction(‘pan’)(上面代码中有调用,自己搜吧)才可以滑动。

npm引入F2好像目前来看默认是没有这个平移的,导入了感觉也没有效果,目前找不到原因,我建议直接引入f2-all.min.js,maybe后续会有大神填坑。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dvc2hpZGFtaW1pMA_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,355人围观)

还没有评论,来说两句吧...

相关阅读

    相关 F2图表插件绘制圆角

    F2图表插件是蚂蚁金服开源的一款移动端图表插件,用起来还不错,特别是图表的字体可以适应移动端,而其他图表插件在移动端的表现并不是特别的好。 地址[https://www.yu