柱状图横向滚动

思路

通过 Interaction 实现平移,通过 ScrollBar 显示滚动条

1.Interaction

F2 提供一套交互机制,以达到通用交互行为的封装和复用。基于此机制,我们提供了以下五种通用的交互行为:

  • 饼图选中
  • 柱状图选中
  • 图表平移 pan
  • 图表缩放
  • 图表 swipe 快扫

2.ScrollBar

Scroll bar 是一个静态插件,主要用于辅助 panpinch 交互。 滚动条只是为 pan 服务的。

数据结构

数据结构:

[
  {
    provinceShortName: "北京",
    index: 0,
    confirmedCount: 168
  },
  //...
]

引入 F2

import F2 from "@antv/f2/lib/index";

不成功

  1. 下面是不成功的例子,如果你不是吃瓜群众,可以直接通过文章目录跳转到 成功
  2. 为什么要放出来,因为我搞得是柱状图,看官方文档柱状图的例子搞的没搞出来。
  3. 可以横向滚动了,但是当横坐标只显示刚开始定义的 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 数据可视化填坑,图表横向滚动的更多相关文章

  1. Echarts数据可视化,easyshu图表集成。

      介绍: ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Sa ...

  2. 移动端可视化框架antv f2出现两个legend选项

    前天遇到个坑,把我给坑死了 ,在帮朋友做一个微信公众号的项目,使用的vue全家桶,有个模块需要用到数据可视化展现,之前做项目的时候用过antv,比较熟悉,因为是移动端的项目,所以用的是antv f2这 ...

  3. 使用bokeh-scala进行数据可视化(2)

    目录 前言 几种高级可视化图表 总结 一.前言        之前已经简单介绍过一次如何使用Bokeh-scala进行数据可视化(见使用bokeh-scala进行数据可视化),以及如何在Geotrel ...

  4. WebApi传参总动员(填坑)

    本以为系列文章已经Over,突然记起来前面留了个大坑还没填,真是自己给自己挖坑. 这个坑就是: (body 只能被读取一次)Only one thing can read the body MVC和W ...

  5. PoPo数据可视化周刊第5期

    PoPo数据可视化 聚焦于Web数据可视化与可视化交互领域,发现可视化领域有意思的内容.不想错过可视化领域的精彩内容, 就快快关注我们吧 :) World Wire 数据可视化演示(视频) IBM公司 ...

  6. AntV F2+vue-cli构建移动端可视化视图

    AntV F2是蚂蚁金服旗下的一个专注于移动,开箱即用的可视化解决方案,完美支持 H5 环境同时兼容多种环境(Node, 小程序,Weex), 完备的图形语法理论,满足你的各种可视化需求,专业的移动设 ...

  7. AntV 数据可视化解决方案发布

    今天蚂蚁金服发布了一套数据可视化规范AntV. AntV 是一套专业的数据可视化规范,这套规范的目的是为了让可视化的使用者更懂数据可视化.这套规范是蚂蚁金服在可视化建设过程中的理论沉淀,它可以很好得指 ...

  8. Python图表数据可视化Seaborn:3. 线性关系数据| 时间线图表| 热图

    1. 线性关系数据可视化 lmplot( ) import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...

  9. Python图表数据可视化Seaborn:2. 分类数据可视化-分类散点图|分布图(箱型图|小提琴图|LV图表)|统计图(柱状图|折线图)

    1. 分类数据可视化 - 分类散点图 stripplot( ) / swarmplot( ) sns.stripplot(x="day",y="total_bill&qu ...

随机推荐

  1. C# 如何解析XML

  2. c++ CArray函数

    CArray属于MFC,是一个数组模板类.MFC的数组类支持的数组类似于常规数组,可以存放任何数据类型.常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,即先确定大小,而MFC数组类创建的对象 ...

  3. sql查询分类和所有子类

    select * from [JianDu].[dbo].[ZuZhiJiGou] where id = 64 --查询节点 union allSELECT TOP 1000 a.* FROM [Ji ...

  4. java 使用 morphia 存取枚举为值

    源码 https://github.com/zhongchengyi/zhongcy.demos/tree/master/mongo-morphia-demo 前言 morphia是java 使用or ...

  5. JS-数组常用方法整理

    想了解数组有哪些原生方法,控制台输出,如图: length:数组的实例属性,返回或设置一个数组中的元素个数. toString():可以把数组转换成字符串,并返回结果. toLocaleString( ...

  6. 使用Theia——构建你自己的IDE

    上一篇:Theia架构 构建你自己的IDE 本指南将教你如何构建你自己的Theia应用. 必要条件 你需要安装node 10版本(译者:事实上最新的node稳定版即可): curl -o- https ...

  7. TemplateMethodPattern(模板方法模式)-----Java/.Net

    一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行.这种类型的设计模式属于行为型模式

  8. Python 中 unittest 单元测试框架中需要知识点

    现在正在使用 unittest 框架,我们来记录下这个框架的知识点: unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 TestCase 的类和方法,私有方法除外,来识 ...

  9. Redis实战 | 持久化、主从复制特性和故障处理思路

    前言 前面两篇我们了解了Redis的安装.Redis最常用的5种数据类型.本篇总结下Redis的持久化.主从复制特性,以及Redis服务挂了之后的一些处理思路. 前期回顾传送门: Linux下安装Re ...

  10. pom.xml引入依赖时顺序错误而编译异常

    java.lang.NoClassDefFoundError: Lorg/springframework/beans/factory/access/BeanFactoryReference; at j ...