AntV中F2在微信小程序中的使用 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

AntV中F2在微信小程序中的使用

发表时间:2020-9-23

发布人:葵宇科技

浏览次数:98

F2的微信小程序使用

  1. F2简介及语法参照网址

    https://www.yuque.com/antv/f2/miniprogram

  2. F2的微信小程序图表示例参照

    https://github.com/antvis/wx-f2

  3. @antv/f2-canvas 模块为 F2 的微信小程序图表自定义组件,依赖于 @antv/wx-f2(F2
    对于微信小程序进行的适配),请直接使用 @antv/f2-canvas。

    https://github.com/antvis/f2-canvas

原文链接(和原文相比有完善的地方)

F2的微信小程序使用详解

此教程适用于初步了解微信小程序基础框架的用户

  1. 创建标准小程序
  2. 在项目根目录下,初始化创建package.json文件
npm init    /*此处如果直接使用官方npm install 可能会出现没有node_modules错误*/
  1. 安装npm install --production
npm install --production    /*建议使用--production选项,可以减少安装一些业务无关的 npm 包,从而减少整个小程序包的大小*/
  1. 安装微信小程序 F2 图表组件
npm i @antv/f2-canvas
  1. 安装好依赖包之后,运行**
点击开发者工具顶部详情,勾选 使用npm模块,再点击菜单栏中工具下的构建npm即可运行

在这里插入图片描述

  1. 开始绘制柱状图
xx.json 配置文件,引入 f2-canvas 组件,由于微信小程序组件名不允许包含数字,所以这里将其命名为 ff-canvas。
// index.json
{
  "usingComponents": {
    "ff-canvas": "@antv/f2-canvas"
  }
}




xx.wxml 视图,使用 ff-canvas 组件,
其中 opts 是一个我们在 xx.js 中定义的对象,必设属性,
它使得图表能够在页面加载后被初始化并设置,详见 xx.js 中的使用
<!--index.wxml-->
<view class="container">
  <ff-canvas id="column-dom" canvas-id="column" opts="{{ opts }}"></ff-canvas>
</view>



xx.wxss 定义 ff-canvas 组件宽、高度
#column-dom{
  height: 100%;
  width: 100%
}


x.js 逻辑处理,这里还需要引入 F2 用于绘制图表,结构如下,注意路径正确。
// index.js
import F2 from '@antv/wx-f2'; // 注:也可以不引入, initChart 方法已经将 F2 传入,如果需要引入,注意需要安装 @antv/wx-f2 依赖

let chart = null;

function initChart(canvas, width, height, F2) { // 使用 F2 绘制图表
  const data = [
    { year: '1951 年', sales: 38 },
    { year: '1952 年', sales: 52 },
    { year: '1956 年', sales: 61 },
    { year: '1957 年', sales: 145 },
    { year: '1958 年', sales: 48 },
    { year: '1959 年', sales: 38 },
    { year: '1960 年', sales: 38 },
    { year: '1962 年', sales: 38 },
  ];
  chart = new F2.Chart({
    el: canvas,
    width,
    height
  });

  chart.source(data, {
    sales: {
      tickCount: 5
    }
  });
  chart.tooltip({
    showItemMarker: false,
    onShow(ev) {
      const { items } = ev;
      items[0].name = null;
      items[0].name = items[0].title;
      items[0].value = '¥ ' + items[0].value;
    }
  });
  chart.interval().position('year*sales');
  chart.render();
  return chart;
}

Page({
  data: {
    opts: {
     >: initChart
    }
  },

  onReady() {
  }
});
  1. Q1:如果报如下图错误,检查是否有在 .wxss 文件中为 ff-canvas 组件定义 width 和 height 样式属性,如没有,加上即可,如此代码所示:

在这里插入图片描述

/**app.wxss**/
.container {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  box-sizing: border-box;
} //这里是之前作者没有写到的本人探坑有这个


//可以不再app.wxss里面加这个,加这个会造成被绝对定位了可以只在xxx.wxss里加一个
.container {
		width: 100%;
		height: 75upx;
}
//只加高和宽就可以了
x.js 逻辑处理,这里还需要引入 F2 用于绘制图表,结构如下,注意路径正确。
在官方给的api中有这个
const chart = new F2.Chart({
  id: 'container',
  pixelRatio: window.devicePixelRatio
});
用的是这个window.devicePixelRatio会报错的
chart = new F2.Chart({
    el: canvas,
    width,
    height
  });
  直接把官方实例上的那个改成这个就行了el就是initChart的第一个实参调用这个方法时已经把window.devicePixelRatio封装进initChart的实参里了



// index.js
import F2 from '@antv/wx-f2'; // 注:也可以不引入, initChart 方法已经将 F2 传入,如果需要引入,注意需要安装 @antv/wx-f2 依赖

let chart = null;

function initChart(canvas, width, height, F2) { // 使用 F2 绘制图表
  const data = [
    { year: '1951 年', sales: 38 },
    { year: '1952 年', sales: 52 },
    { year: '1956 年', sales: 61 },
    { year: '1957 年', sales: 145 },
    { year: '1958 年', sales: 48 },
    { year: '1959 年', sales: 38 },
    { year: '1960 年', sales: 38 },
    { year: '1962 年', sales: 38 },
  ];
  chart = new F2.Chart({
    el: canvas,
    width,
    height
  });

  chart.source(data, {
    sales: {
      tickCount: 5
    }
  });
  chart.tooltip({
    showItemMarker: false,
    onShow(ev) {
      const { items } = ev;
      items[0].name = null;
      items[0].name = items[0].title;
      items[0].value = '¥ ' + items[0].value;
    }
  });
  chart.interval().position('year*sales');
  chart.render();
  return chart;
}

Page({
  data: {
    opts: {
     >: initChart
    }
  },

  onReady() {
  }
});

相关案例查看更多