导读
F2 是一个专注于移动,开箱即用的可视化解决方案,这次我们带来了F2 的v3.5版本,这个版本对不同端的适应能力做了更进一步的加强与升级,核心库即使在完全脱离浏览器环境后也能完美运行,真实实现一套代码全端运行的能力,在未来,我们还会提供在native上使用F2的能力,甚至是各种iot设备
另外除了多端适应能力的加强外,我们还在F2中新增了漏斗图和金字塔图,进一步扩充F2的图形种类
移动『端』的差异性
今天,我们在进行移动端的开发时,需要面临各种各样的移动端环境,包括传统的webview、各种小程序、node canvas,以及在native上绘制,当然未来可能还有更多,但是我们都需要对不同端有相应的适配才能比较好的运行,这就无法很好满足我们想要实现一套代码全端运行的愿景,所以在v3.5里,我们对多端的适配做了更进一步的统一,实现绘制代码的完全统一
如何在小程序中使用
针对支付宝小程序,和微信小程序我们统一了这2者的使用方式,让他们看起来更简单和统一
支付宝小程序
1. 安装依赖
npm install @antv/my-f2 --save
2. 使用组件
{
"usingComponents": {
"f2": "@antv/my-f2"
}
}
<view class="container">
<f2 onInit="onInitChart"></f2>
</view>
Page({
data: {},
onInitChart(F2, config) {
const chart = new F2.Chart(config);
const data = [
{ value: 63.4, city: 'New York', date: '2011-10-01' },
{ value: 62.7, city: 'Alaska', date: '2011-10-01' },
{ value: 72.2, city: 'Austin', date: '2011-10-01' },
{ value: 58, city: 'New York', date: '2011-10-02' },
{ value: 59.9, city: 'Alaska', date: '2011-10-02' },
{ value: 67.7, city: 'Austin', date: '2011-10-02' },
{ value: 53.3, city: 'New York', date: '2011-10-03' },
{ value: 59.1, city: 'Alaska', date: '2011-10-03' },
{ value: 69.4, city: 'Austin', date: '2011-10-03' },
];
chart.source(data, {
date: {
range: [0, 1],
type: 'timeCat',
mask: 'MM-DD'
},
value: {
max: 300,
tickCount: 4
}
});
chart.area().position('date*value').color('city').adjust('stack');
chart.line().position('date*value').color('city').adjust('stack');
chart.render();
// 注意:需要把chart return 出来
return chart;
}
});
微信小程序
1. 安装依赖
npm install @antv/wx-f2 --save
2. 使用组件
{
"usingComponents": {
"f2": "@antv/wx-f2"
}
}
<view class="container">
<f2 onInit="{{onInitChart}}" />
</view>
Page({
data: {
onInitChart(F2, config) {
const chart = new F2.Chart(config);
const data = [
{ value: 63.4, city: 'New York', date: '2011-10-01' },
{ value: 62.7, city: 'Alaska', date: '2011-10-01' },
{ value: 72.2, city: 'Austin', date: '2011-10-01' },
{ value: 58, city: 'New York', date: '2011-10-02' },
{ value: 59.9, city: 'Alaska', date: '2011-10-02' },
{ value: 67.7, city: 'Austin', date: '2011-10-02' },
{ value: 53.3, city: 'New York', date: '2011-10-03' },
{ value: 59.1, city: 'Alaska', date: '2011-10-03' },
{ value: 69.4, city: 'Austin', date: '2011-10-03' },
];
chart.source(data, {
date: {
range: [0, 1],
type: 'timeCat',
mask: 'MM-DD'
},
value: {
max: 300,
tickCount: 4
}
});
chart.area().position('date*value').color('city').adjust('stack');
chart.line().position('date*value').color('city').adjust('stack');
chart.render();
// 注意:需要把chart return 出来
return chart;
}
},
});
小结
支付宝小程序和微信小程序除了本身框架的差异外,在使用F2上几乎是一模一样的,更多细节可以参考git仓库
node canvas
在之前的版本上,由于node端不支持事件,所以在node端只能进行图表的纯绘制,在3.5版本中,只要能构造基础的事情对象,也能让图表响应图表的变化
下面demo这个就是完全用node canvas绘制,并以图片形式显示展示,且能响应交互的变化
具体实现可参考 https://github.com/zengyue/node-f2
漏斗图 & 金字塔图
除了上面的端的适应性外,3.5里还带了全新的图表,漏斗图和金字塔图
更多使用方式可参考 https://f2.antv.vision/zh/examples/funnel/basic
其他更多请参考官网