AntV F2 数据可视化填坑,图表横向滚动
柱状图横向滚动
思路
通过 Interaction
实现平移,通过 ScrollBar
显示滚动条
1.Interaction
F2 提供一套交互机制,以达到通用交互行为的封装和复用。基于此机制,我们提供了以下五种通用的交互行为:
- 饼图选中
- 柱状图选中
- 图表平移 pan
- 图表缩放
- 图表 swipe 快扫
2.ScrollBar
Scroll bar
是一个静态插件,主要用于辅助 pan
和 pinch
交互。 滚动条只是为 pan 服务的。
数据结构
数据结构:
[
{
provinceShortName: "北京",
index: 0,
confirmedCount: 168
},
//...
]
引入 F2
import F2 from "@antv/f2/lib/index";
不成功
- 下面是不成功的例子,如果你不是吃瓜群众,可以直接通过文章目录跳转到 成功
- 为什么要放出来,因为我搞得是柱状图,看官方文档柱状图的例子搞的没搞出来。
- 可以横向滚动了,但是当横坐标只显示刚开始定义的
originProvinces
, 想着动态改变originProvinces
,鼓捣半天发现不知道在什么地方触发。如果您知道原因,欢迎指教!
// 通过横坐标定义初始显示的数据,剩余的数据通过滑动显示(好像是不对的)
const originProvinces = ["浙江","广东","台湾","江苏","内蒙古","云南"];
const chart = new F2.Chart({
id: "province-trend",
// plugins: [ScrollBar], 通过 import 引入不需要在这里注册了
pixelRatio: window.devicePixelRatio
});
chart.source(data, {
provinceShortName: {
type: "cat", // 数值类型
tickCount: 5,
values: originProvinces // 对应上面
},
confirmedCount: {
tickCount: 5
}
});
chart
.interval()
.position("provinceShortName*confirmedCount")
.color("provinceShortName");
chart.tooltip({
showItemMarker: true,
background: {
radius: 2,
padding: [3, 5]
},
onShow(ev) {
const items = ev.items;
items[0].name = items[0].title;
items[0].value = items[0].value + " 人";
}
});
chart.interaction("pan");
chart.scrollBar({
xStyle: {
backgroundColor: "#e8e8e8",
fillerColor: "#808080",
offsetY: -2
}
});
chart.render();
成功
官方还给了另一个个横向滚动的 例子,不过是折线图的,只能硬着头皮上了,仿照官方折线图滚动的例子改成如下:
const chart = new F2.Chart({
id: "province-trend",
pixelRatio: window.devicePixelRatio
});
chart.source(data, {
index: { // 这里横坐标使用 index,
min: 0, // 设置刚开始显示的区间 0-5
max: 5
}
});
chart.tooltip({
showCrosshairs: false,
showItemMarker: false,
background: {
radius: 2,
fill: "#1890FF",
padding: [3, 5]
},
nameStyle: {
fill: "#fff"
},
onShow(ev) {
const items = ev.items;
items[0].name = items[0].title;
}
});
// 这里横坐标应该显示的是 provinceShortName,
// 但是用这种方法必须使用 index 了
// 后面在将横坐标使用类似于起别名的方式改成 provinceShortName
chart.interval().position("index*confirmedCount");
chart
.point()
.position("index*confirmedCount")
.style({
lineWidth: 1,
stroke: "#fff"
});
chart.axis("index", {
label(text) {
return {
fontSize: 14,
// 在这里将横坐标显示为 provinceShortName
text: data[text].provinceShortName
};
}
});
chart.interaction("pan");
chart.scrollBar({
mode: "x",
xStyle: {
offsetY: -5
}
});
chart.render();
大功告成了,这里只放了关键代码,其他细节再优化。 仅仅实现图表滚动,是不是稍微有点麻烦 ?
AntV F2 数据可视化填坑,图表横向滚动的更多相关文章
- Echarts数据可视化,easyshu图表集成。
介绍: ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Sa ...
- 移动端可视化框架antv f2出现两个legend选项
前天遇到个坑,把我给坑死了 ,在帮朋友做一个微信公众号的项目,使用的vue全家桶,有个模块需要用到数据可视化展现,之前做项目的时候用过antv,比较熟悉,因为是移动端的项目,所以用的是antv f2这 ...
- 使用bokeh-scala进行数据可视化(2)
目录 前言 几种高级可视化图表 总结 一.前言 之前已经简单介绍过一次如何使用Bokeh-scala进行数据可视化(见使用bokeh-scala进行数据可视化),以及如何在Geotrel ...
- WebApi传参总动员(填坑)
本以为系列文章已经Over,突然记起来前面留了个大坑还没填,真是自己给自己挖坑. 这个坑就是: (body 只能被读取一次)Only one thing can read the body MVC和W ...
- PoPo数据可视化周刊第5期
PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) World Wire 数据可视化演示(视频) IBM公司 ...
- AntV F2+vue-cli构建移动端可视化视图
AntV F2是蚂蚁金服旗下的一个专注于移动,开箱即用的可视化解决方案,完美支持 H5 环境同时兼容多种环境(Node, 小程序,Weex), 完备的图形语法理论,满足你的各种可视化需求,专业的移动设 ...
- AntV 数据可视化解决方案发布
今天蚂蚁金服发布了一套数据可视化规范AntV. AntV 是一套专业的数据可视化规范,这套规范的目的是为了让可视化的使用者更懂数据可视化.这套规范是蚂蚁金服在可视化建设过程中的理论沉淀,它可以很好得指 ...
- Python图表数据可视化Seaborn:3. 线性关系数据| 时间线图表| 热图
1. 线性关系数据可视化 lmplot( ) import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...
- Python图表数据可视化Seaborn:2. 分类数据可视化-分类散点图|分布图(箱型图|小提琴图|LV图表)|统计图(柱状图|折线图)
1. 分类数据可视化 - 分类散点图 stripplot( ) / swarmplot( ) sns.stripplot(x="day",y="total_bill&qu ...
随机推荐
- C语言中的符号总结
1.注释符号 //和/* ...*/ 2.续行符号 \ 3.转义符号 常用:\ ...
- no supported authentication methods avaiable
在git(小乌龟)向github远程推送(push)文件是会报一个异常 no supported authentication methods avaiable 解决方法:因为git(小乌龟)和Git ...
- tomcat启动慢问题
sed -i 's/securerandom\.source\=file\:\/dev\/random/securerandom\.source\=file\:\/dev\/urandom/g' $J ...
- 组长组Beta阶段贡献分配规则
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9910“ “组长”组贡献分分配规则: 组里五位成员分别有入团队贡献分10分 ...
- $HDU1846\ Brave\ Game$ 博弈论
正解:博弈论 解题报告: 传送门! 巴什博奕板子题鸭$QwQ$ 就有个结论,是说当$(m+1)\mid n$时先手必败,否则必胜 这个瞎证明一下就能出来 就考虑当$(m+1)\mid 1$时,若先手取 ...
- 1025 反转链表 (25 分)C语言
题目描述 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转.例如:给定L为1→2→3→4→5→6,K为3,则输出应该为 3→2→1→6→5→4:如果K为4,则输出应该为4→3→2→1→5 ...
- 1024 科学计数法 (20 分)C与Java
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部 ...
- HashMap中的位运算
二进制基础回顾 以下操作相对正整数的二进制而言,对非整数不太适用. 二进制转十进制 在二进制中,位权是2的幂,所以每一位所代表的权值从右到左分别为2^(1-1) .2^(2-1) .... . 2 ...
- 小白学 Python 爬虫(35):爬虫框架 Scrapy 入门基础(三) Selector 选择器
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 手把手带你了解消息中间件(3)——RocketMQ
一.RocketMQ简介 RocketMQ作为一款纯java.分布式.队列模型的开源消息中间件,支持事务消息.顺序消息.批量消息.定时消息.消息回溯等. 二.RocketMQ架构 如图所示为R ...