Coder Social home page Coder Social logo

antvis / l7plot Goto Github PK

View Code? Open in Web Editor NEW
81.0 20.0 22.0 5.11 MB

🌍 Geospatial Visualization Chart Library

Home Page: https://l7plot.antv.antgroup.com

License: MIT License

JavaScript 0.97% Shell 0.03% TypeScript 98.99%
visualization map geojson mapbox-gl-js plot gis data-visualization antvis l7 amap-js-api

l7plot's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

l7plot's Issues

🤔 [QUESTION] 使用html2canvas下载地图png不是每次都能成功

🐛 Question description [Please make everyone to understand it]

如题,用的是L7Plot的高级图表

部分代码如下:

image

container是地图的chart实例

实际下载图片如下:
image

地图的map属性:
image
尝试设置preserveDrawingBuffer: true来解决问题未果

不太确定是不是html2canvas本身的问题,来寻求官方的帮助

💻 Link to minimal reproduction

Please provide a link by forking these links L7Plot or GitHub repo. What is a minimal reproduction, and why is it required?

🏞 Expected result

下载地图png每次都能成功

🚑 Any additional [like screenshots]

  • L7Plot Version: 0.0.11
  • Platform:

🐛 [BUG] Breaks Vite building

🐛 Bug description [Please make everyone to understand it]

This package, which is a dependency of @ant-design/charts, breaks Vite building with following error:

$ vite build
vite v2.6.14 building for production...
✓ 35 modules transformed.
[vite:resolve] Failed to resolve entry for package "@antv/l7plot". The package may have incorrect main/module/exports specified in its package.json: Failed to resolve entry for package "@antv/l7plot". The package may have incorrect main/module/exports specified in its package.json.
error during build:
Error: Failed to resolve entry for package "@antv/l7plot". The package may have incorrect main/module/exports specified in its package.json: Failed to resolve entry for package "@antv/l7plot". The package may have incorrect main/module/exports specified in its package.json.
    at packageEntryFailure (/Volumes/Projects/workspace/sample/node_modules/vite/dist/node/chunks/dep-e0fe87f8.js:30273:11)
    at resolvePackageEntry (/Volumes/Projects/workspace/sample/node_modules/vite/dist/node/chunks/dep-e0fe87f8.js:30269:9)
    at tryNodeResolve (/Volumes/Projects/workspace/sample/node_modules/vite/dist/node/chunks/dep-e0fe87f8.js:30044:11)
    at Object.resolveId (/Volumes/Projects/workspace/sample/node_modules/vite/dist/node/chunks/dep-e0fe87f8.js:29910:28)
    at /Volumes/Projects/workspace/sample/node_modules/rollup/dist/shared/rollup.js:22706:25
error Command failed with exit code 1.

📷 Step to reproduce

yarn
yarn build

🏞 Expected result

Built without error.

🚑 Any additional [like screenshots]

Dependency Path:
image

package.json of this package from unpkg, which declares an invalid 'module' that does not exist:
image

  • L7Plot Version: 0.0.3-alpha.6
  • Platform:

🐛 [BUG]limitInPlot属性无法屏蔽一些后出现的状态

limitInPlot属性无法屏蔽一些后出现的状态

🐛 Bug description [Please make everyone to understand it]

Please provide a link by forking these links L7Plot or GitHub repo, a minimal reproduction.

  • Required Link to minimal reproduction:

📷 Step to reproduce

limitInPlot: true 设置了屏蔽图表外的显示但是折线图的active还是会显示

🏞 Expected result

坐标轴以外的不显示

🚑 Any additional [like screenshots]

1642474629461_1642413791463_9885C938-B913-4d68-93D8-070A8EC6C68C

  • L7Plot Version:
  • Platform:

🤔 行政区域图Choropleth不能离线使用?不联网状态下如何载入初始的图json依赖数据?

🐛 Question description

行政区域图地理数据需要默认线上载入数据,官网默认配置如下:
geoArea: {
url: 'https://gw.alipayobjects.com/os/alisis/geo-data-v0.1.2/choropleth-data',
type: 'topojson',
},
我已经通过下载地图依赖json文件,本地建了相似的choropleth-data文件夹,此时将geoArea配置中的URL改为本地/项目的choropleth-data文件夹地址,都失效。

请问,行政图功能如何载入依赖的json文件夹?

🤔 [QUESTION] ArcLayer 支持 label 画在飞线上面吗?

🐛 Question description [Please make everyone to understand it]

希望实现 label 压在飞线**的效果,类似下图:
image
尝试了 textAnchor 和 textOffset 属性不行,现在这个 label 的锚点是基于起点是吗?有办法基于起点和终点之间弧线的中点么?

💻 Link to minimal reproduction

Please provide a link by forking these links L7Plot or GitHub repo. What is a minimal reproduction, and why is it required?

🏞 Expected result

🚑 Any additional [like screenshots]

  • L7Plot Version:
  • Platform:

Case Screenshot

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://cdn.tailwindcss.com"></script>
  </head>
  <body>
    <div id="container" class="grid grid-rows-6 grid-cols-4 gap-6" style="padding: 80px"></div>
    <script>
      const list = [
        // 点
        'https://gw.alipayobjects.com/zos/antfincdn/JVdKQHfpZC/d3287038-6329-4bdd-8471-c830d5daf52f.png',
        // 'https://gw.alipayobjects.com/zos/antfincdn/VbC9OPwdNg/8bf7bd3f-2479-4228-b04b-4cb38af1d7af.png',
        // 'https://gw.alipayobjects.com/zos/antfincdn/gozHK9LNFl/d37bc490-722b-4b73-a627-3c261b0401d2.png',
        'https://gw.alipayobjects.com/zos/antfincdn/dTdD4KQGvH/06e323e4-92ce-40d9-a58f-837adbce5f26.png',
        // 'https://gw.alipayobjects.com/zos/antfincdn/kDRYz0hAqk/88b8ee59-de23-4c49-becb-a80354adaaee.png',
        'https://gw.alipayobjects.com/zos/antfincdn/u31zxgii2R/d3fe9e5f-feb6-4b32-8237-4d79ae99a906.png',
        'https://gw.alipayobjects.com/zos/antfincdn/cfT2Jb1Fi2/83261ea9-3ccc-4684-a47a-721343c0279b.png',
        'https://gw.alipayobjects.com/zos/antfincdn/t5BQDH5Jp8/dbcddc7e-5ff9-4d3b-af9b-2d86f40b626a.png',

        // 网格
        'https://gw.alipayobjects.com/zos/antfincdn/fKPFt8cFk4/a091a42a-2411-4011-9dc7-ef7d39197f8d.png',
        'https://gw.alipayobjects.com/zos/antfincdn/7W1VDrMpy%24/63f536b0-244a-41e9-9698-c3249a2108a7.png',
        // 热力
        'https://gw.alipayobjects.com/zos/antfincdn/svqQmzIKVw/2977de7d-6362-42f1-b731-05e734b6bfe0.png',
        // 'https://gw.alipayobjects.com/zos/antfincdn/qgKi3OxQVE/4553729d-c2ce-490b-aebb-ea948bef7f2e.png',
        'https://gw.alipayobjects.com/zos/antfincdn/5osUdJv%24Nq/51c6693d-e00a-4c32-adb2-90b95359d4f2.png',

        // 线
        'https://gw.alipayobjects.com/zos/antfincdn/0BBZcXixuK/ec49b3ab-4f47-42ef-907c-9912a9c3e4ea.png',
        'https://gw.alipayobjects.com/zos/antfincdn/EQVpMcc11v/ab32657b-2410-4770-99ee-f73f62a4848b.png',
        // 'https://gw.alipayobjects.com/zos/antfincdn/y9%26C49CVvy/72b49289-9325-4836-816e-99560385d698.png',
        // 流向
        'https://gw.alipayobjects.com/zos/antfincdn/%26fdYw4HPc2/dcc23314-d910-4887-998a-ed5470bbb7d0.png',
        // 'https://gw.alipayobjects.com/zos/antfincdn/CHihJw0kuI/c4144d36-fd67-4138-950a-28ffe2f3c2ef.png',
        'https://gw.alipayobjects.com/zos/antfincdn/5%266ER7Qzw%26/6510f8b9-6384-4b43-8fae-b473b2f18b15.png',

        // 面
        'https://gw.alipayobjects.com/zos/antfincdn/FxfaZh3ji5/15fef873-a1e8-4ddc-b6a2-320dd9d059da.png',
        'https://gw.alipayobjects.com/zos/antfincdn/TNRpqWoYoC/91d7085a-72eb-49fb-b5eb-e1a40c20672a.png',

        // 区域
        'https://gw.alipayobjects.com/zos/antfincdn/n5MwQP7qEE/9482d87d-c1e5-4b3a-ab31-46e9959e881b.png',
      ];

      const container = document.querySelector('#container');
      const imgs = list
        .map((item) => {
          return `<div class="h-48 shadow-2xl bg-white rounded-lg bg-cover bg-center  bg-no-repea" style="background-image: url(${item})"></div>`;
        })
        .join('');

      container.innerHTML = imgs;
    </script>
  </body>
</html>

image

🤔 [QUESTION] 世界行政地图如何渲染数据

🐛 Question description [Please make everyone to understand it]

如何在世界行政地图中添加各个国家渲染的数据?应该是需要一个code,但是没有提供code-国家对照表
https://codesandbox.io/s/magical-chihiro-xvf3y?file=/index.ts
国内的数据格式是{name:"xxx",code:xxx,value:xxx},可以正常渲染

🏞 Expected result

正常展示数据

🚑 Any additional [like screenshots]

  • L7Plot Version:1.3.4
  • Platform:macos 11

石油行业的点位图和地理剖面图使用哪种antv工具库图例?

🐛 Question description [Please make everyone to understand it]

石油行业的地理剖面图使用哪种antv工具库?

💻 Link to minimal reproduction

类似https://www.int.com/geotoolkit-demos/deviated-schematics/图例的偏差示意图,antv有没有替代工具?
我的原型图如下:
u166
u265
在antv的示例中似乎找不到合适的解决方案?

Please provide a link by forking these links L7Plot or GitHub repo. What is a minimal reproduction, and why is it required?

🏞 Expected result

🚑 Any additional [like screenshots]

  • L7Plot Version:
  • Platform:

🐛 [BUG]

DotLayer 在绘制 icon 的时候,必须要将 color 赋值 #fff 才会生效

🤔 [QUESTION] 遇到这样问题,有一个下拉筛选列表里面是各个省,选中某一个省这个该怎样更新到对应的省的地图

🐛 遇到这样问题,有一个下拉筛选列表里面是各个省,选中某一个省这个该怎样更新到对应的省的地图

💻 Link to minimal reproduction

image

🏞 Expected result

想知道筛选条件后拿到后端返回当前省下城市的数据怎样下钻到省下的地图

🚑 Any additional [like screenshots]

  • L7Plot Version:
  • Platform:

🐛 [BUG] 多图表不支持流向图 flow

🐛 Bug description [Please make everyone to understand it]

高级图表中的多图表 type 不支持配置 flow

图表组配置,图表类型支持 L7Plot 内置的图表。

Please provide a link by forking these links L7Plot or GitHub repo, a minimal reproduction.

  • Required Link to minimal reproduction:

📷 Step to reproduce

🏞 Expected result

🚑 Any additional [like screenshots]

  • L7Plot Version:
  • Platform:

1122 推文

格物、革悟 —— 地理图表

今天 AntV 地理可视分析也新增了一位成员 L7Plot - 地理可视化图表库。

L7Plot 是简单易用、图表丰富、支持定制的地理空间数据可视化地理图表库。

特性

  • 📦 开箱即用:配置式的地理图表,内置多粒度行政数据
  • 🚀 元素丰富:图表类型及地图组件丰富,多地图底图支持
  • 💯 容易定制: 数据驱动,从数到形,支持多图层及多图表层叠
  • 🌱 动态交互:图表交互能力强、支持 2/3D 视角、提供命令式动态交互 API

关系

  • L7Plot 基于 L7 实现的开箱即用地理空间数据可视化图表库。
  • L7 基于图形符号学为理论,以图形语法 API 方式使用,概念较多,实现简单的地理可视化业务需要不少代码量。
  • L7Plot 专注于地理可视化图表。
    • 以声明配置式的方式,降低用户使用成本;
    • 以常见地理图表分类的方式,降低用户选择成本;
    • 内部集成全国行政区域数据,降低用户使用地理数据心智;
    • 支持多图层及多图表层叠,方便用户定制复杂的业务场景;
  • L7Plot 专注于地理数据可视化展示,不会涉及数据编辑能力。

图表

  • 散点图
  • 气泡图
  • 图标图
  • 热力图
  • 网格图
  • 蜂窝图
  • 区域图
  • 行政区域图

1122

Dot 图会显示一段空白的 tooltip 框🐛 [BUG]

🐛 Bug description [Please make everyone to understand it]

Please provide a link by forking these links L7Plot or GitHub repo, a minimal reproduction.

l7plot 官网文档的例子
https://antv-l7plot.gitee.io/zh/examples/dot/bobble#earthquake-level

📷 Step to reproduce

鼠标靠近气泡点附近,会出现空白的 tooltip 框

dot-bug

🏞 Expected result

显示正常的 tooltip 框

🚑 Any additional [like screenshots]

  • L7Plot Version: 0.0.10
  • Platform: MacBook M1 / Google Chrome 版本 99.0.4844.83(正式版本) (arm64)

🐛 [BUG] 行政区域图 Choropleth 在使用 Vite 构建的项目中下钻不显示标签

🐛 Bug description

在 Vite 构建的 Vue3 项目中使用行政区域图 Choropleth,下钻操作标签没有同步切换,还是显示全国级别的标签。
问题示例

📷 Step to reproduce

  1. 点击任一省份
  2. 区域切换,下级标签不显示

🏞 Expected result

下钻操作,显示下级标签

🚑 Any additional

国内镜像 区域钻取|L7 表现正常
国际站 区域钻取|L7 也有同样的问题
image

  • L7Plot Version: 0.1.0
  • Platform: Windows 10

🤔 发现使用多表图添加飞线图时,飞线图会被遮挡。

一、问题描述:

在尝试通过plots添加多个图表时,飞线图会被其他的图表遮挡,即使修改飞线图的zIndex也没有效果

二、可复现问题的代码:

import { L7Plot } from "@antv/l7plot";

fetch(
  `https://gw.alipayobjects.com/os/alisis/geo-data-v0.1.2/administrative-data/area-list.json`
)
  .then((response) => response.json())
  .then((list) => {
    const data = list
      .filter(({ level }) => level === "province")
      .map((item) => Object.assign({}, item, { value: Math.random() * 5000 }));

    new L7Plot("container", {
      map: {
        type: "mapbox",
        style: "blank",
        center: [120.19382669582967, 30.258134],
        zoom: 3,
        pitch: 0
      },
      plots: [
        {
          type: "flow",
          zIndex: 100,
          source: {
            data: [
              {
                x: 116.407387,
                x1: 113.266887,
                y: 39.904179,
                y1: 23.133306
              },
              {
                x: 116.407387,
                x1: 112.578781,
                y: 39.904179,
                y1: 37.813948
              },
              {
                x: 116.407387,
                x1: 87.628579,
                y: 39.904179,
                y1: 43.793301
              }
            ],
            parser: {
              type: "json",
              x: "x",
              y: "y",
              x1: "x1",
              y1: "y1"
            }
          },
          shape: "arc3d",
          size: [2, 5],
          color: "red",
          style: {
            opacity: 1
          },
          state: {
            active: { stroke: "black", lineWidth: 1 }
          },
          animate: {
            interval: 2,
            trailLength: 2,
            duration: 1
          },
          radiation: {
            color: "#333",
            size: 30,
            style: {
              opacity: 1
            }
          },
          active: true
        },
        {
          type: "choropleth",
          zIndex: 1,
          source: {
            data: [],
            joinBy: {
              sourceField: "code",
              geoField: "adcode"
            }
          },
          viewLevel: {
            level: "country",
            adcode: "100000"
          },
          autoFit: true,
          color: "#fff",
          style: {
            opacity: 1,
            stroke: "#F2F7F7",
            lineWidth: 0.6,
            lineOpacity: 0.8
          },
          label: {
            visible: true,
            field: "name",
            style: {
              fill: "#000",
              opacity: 0.8,
              fontSize: 10,
              stroke: "#f0f0f0",
              strokeWidth: 2,
              textAllowOverlap: false,
              padding: [5, 5],
              textOffset: [0, 40]
            }
          }
        }
      ],
      layers: [],
      zoom: {
        position: "bottomright"
      }
    });
  });

三、 问题图如下:

当在plots中添加区域图和飞线图,发现飞线图被区域图遮挡了:

image

当改变区域图的透明度后,飞线正常显示的出来:

image

四、 个人疑问:

怎样才能使飞线图正常展示在最顶层不被遮挡呢 ?怎样才能使飞线图在不改变其他图层透明度的情况下正常展示呢?飞线图的zIndex修改无效是什么原因?

scaleDiverging is not exported from 'd3-scale'🐛 [BUG]

🐛 Bug description [Please make everyone to understand it]

Please provide a link by forking these links L7Plot or GitHub repo, a minimal reproduction.

  • Required Link to minimal reproduction:

📷 Step to reproduce

🏞 Expected result

🚑 Any additional [like screenshots]

  • L7Plot Version:
  • Platform:
    image
    image
    image

行政区域图Choropleth关于选中问题🤔 [QUESTION]

在行政区域图Choropleth中,在设置了state.select下,能否手动设置城市让地图中相应的位置设置选中状态,操作流程是,前端界面上有一个下拉框,当选择某一城市时,地图上相应的城市区域会显示选中状态。

请问实例支持修改center么

我有个动作是从**地图触发changeView({ level: 'world', adcode: 'all'}),变成世界地图,有api改变center吗,希望可以比较聚焦到**

🤔 [QUESTION] 行政区域图设置区县,不显示无区县的城市

🐛 Question description [Please make everyone to understand it]

image

行政区域图,viewLevel设置为区县,没有区县的城市,未显示出来。如上图所示海南省只显示了海口跟三亚两个城市。

image

image

💻 Link to minimal reproduction

🏞 Expected result

没有区县一级的城市,设置viewLevel的granularity为区县时就显示城市数据

🚑 Any additional [like screenshots]

  • L7Plot Version:
  • Platform:

🤔 [QUESTION]请问区域图中label的textAnchor为何不起作用

🐛 Question description [Please make everyone to understand it]

💻 Link to minimal reproduction

image
label中的textAnchor设置为top-right,但并没有产生效果,label的定位还是center。请问这是为什么呢

🏞 Expected result

🚑 Any additional [like screenshots]

  • L7Plot Version:0.1.0
  • Platform:vue

🐛 [BUG] 首次加载时图例不显示

🐛 Bug description [Please make everyone to understand it]

Please provide a link by forking these links L7Plot or GitHub repo, a minimal reproduction.

📷 Step to reproduce

官方文档中的示例是有设置选项

        legend: {
          position: 'bottomleft',
        },

但是图例不显示

🏞 Expected result

🚑 Any additional [like screenshots]

image

  • L7Plot Version:
  • Platform:

🐛 [BUG]官方demo choropleth图层事件绑定报错

🐛 Bug description [Please make everyone to understand it]

Please provide a link by forking these links L7Plot or GitHub repo, a minimal reproduction.

  • Required Link to minimal reproduction:

📷 Step to reproduce

image

🏞 Expected result

🚑 Any additional [like screenshots]

  • L7Plot Version:
  • Platform:

1122 开源 TODO

1122 开源 TODO

组件

  • 主题抽离分类
  • l7 zoom scale layerMenu 样式配置化
  • tooltip 支持自定组件,暴露组件活动事件
  • 分类图例

图表

  • choropleth
    • 描边高亮、支持单选及多选
    • 下钻性能优化
    • 行政数据抽稀,支持 topojson
    • 无值时颜色映射可默认化配置
  • line
    • path(trail)
    • flow(arc/connection)

文档

  • API 补齐
  • API Demo

Demo

  • choropleth
  • area
  • line
    • trail/path
    • arc/flow/connection
  • l7plot
    • muti plot
    • muti layer

测试

  • layers
  • 图表
  • l7plot

教程

  • 简介
  • 快速上手
  • #75

Charts

  • 散点
  • 热力
  • 区域
  • 行政

Workflows

  • Build UMD
  • Automatic Rebase
  • ISSUE_TEMPLATE、PULL_REQUEST_TEMPLATE
  • Gitee sync
  • CHANGELOG

🐛 [BUG] 行政区域图-Choropleth,更新fontFamily不生效

🐛 Bug description

Choropleth 区域行政图,对于textLayer,如label。当有切换字体的需求时,字体切换失败。同样的方法对字体大小是生效的。
希望能够实现字体切换

复现地址

📷 复现步骤:

  1. 建立Choropleth
  2. 变更字号,其实是修改:config.label.style.fontSize ,然后调用plot.update,可以成功
  3. 变更字体,其实是修改:config.label.style.fontFamily,然后调用plot.update, 失败,而且之前已经调用了 @antv/l7plot 的 registerFontFace

🏞 希望结果

能够实现字体切换

🚑 截图

  • L7Plot Version: 0.1.0
  • Platform: any

🤔 [QUESTION] new L7Plot 通过点击事件怎么获取到点击区域的值('choropleth' 或 'dot')

🐛 Question description [Please make everyone to understand it]

https://l7plot.antv.vision/zh/examples/advanced-plot/muti-plots#china-bubble

image

💻 Link to minimal reproduction

Please provide a link by forking these links L7Plot or GitHub repo. What is a minimal reproduction, and why is it required?

🏞 Expected result

通过点击区域或点获取到当前的数据

🚑 Any additional [like screenshots]

  • L7Plot Version:
  • Platform:

🥰 [FEATURE] 复合图层多选问题

💻 Features description [Please make everyone to understand it]

多选不符合常用交互,多选一般和单选并存的,多选交互需要点击 shift + 选中。目前是点击直接触发多选

🏞 What problem does this feature solve

🧐 What does the proposed API look like

🚑 Any additional [like screenshots]

🐛 [BUG]警告Too many active WebGL contexts. Oldest context will be lost.

🐛 警告Too many active WebGL contexts. Oldest context will be lost.

用官网的例子多次修改配置信息会出现警告Too many active WebGL contexts. Oldest context will be lost.
我自己的代码也同样的问题,已经在组件卸载的时候调用了destroy

  • L7Plot Version:0.0.11
  • Platform:vue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.