deepscatter

deepscatter

大规模交互式数据可视化JavaScript库 支持百万级数据点渲染

deepscatter是一款高性能JavaScript库,专为浏览器中的大规模数据集交互式可视化而设计。该库采用Apache Arrow格式、WebGL渲染和GPU计算技术,实现快速数据处理和渲染,可流畅处理百万级数据点。deepscatter适用于创建地图、文献分析等大规模数据可视化应用,支持静态部署。库提供丰富API,允许自定义颜色、大小、抖动等可视化效果。

Deepscatter大数据可视化WebGLApache Arrow交互式图表Github开源项目

Web版深度散点图

这是一个允许在浏览器中交互式可视化极大数据集的库。

它之所以快速有三个原因:

  1. 所有数据都以Apache Arrow的feather格式发送,采用自定义四叉树格式,使得只在需要时才加载缩放所需的数据。Feather在浏览器中传输后无需解析时间,压缩效果良好,并且可以直接复制到GPU而无需在JS中转换。这是未来的方向。我们现在还允许在Arrow数据上进行自定义的浏览器内计算。

  2. 大部分渲染都是使用WebGL的自定义图层完成的,缓冲区管理策略由REGL处理。这意味着对于点或不同对象没有不必要的抽象或单独的绘制调用;为所有需要的点附加最少数量的缓冲区。

  3. 几乎所有图形语法转换都在GPU上处理,这允许并行计算的插值过渡。

它也可以在完全静态的设置中运行,因此你可以通过类似Github Pages的方式托管一个百万点的散点图。

Deepscatter是Atlas的底层图形引擎。它以NC-CC-BY-SA许可证提供,用于所有非商业用途。

示例

文档

查看自动生成的typescript文档以获取完整的方法和函数列表。

获取帮助

欢迎在Github上提出问题,即使是质量较低的问题。

还有一个专门的Deepscatter Slack,欢迎你加入。Nomic维护着一个discord服务器,其中有专门的Deepscatter和Atlas支持频道。

我从非常非技术的背景开始做这些事情,欢迎人们带着初级问题加入。

快速开始

导入模块

查看上面的arxiv示例以了解一些基本示例。

本地运行

首先,安装用Python编写的配套分块库,并在50000个一组的块中生成100万个测试数据点。

python3 -V # 需要Python 3.9.x或3.10.x python3 -m pip install git+https://github.com/bmschmidt/quadfeather quadfeather-test-data 1_000_000 quadfeather --files tmp.csv --tile_size 50_000 --destination tiles

然后设置这个库来运行。它将启动一个本地开发服务器。

npm i npm run dev

如果你访问localhost:3344,你应该看到一个交互式散点图。要深入了解你所看到的,请打开index.html。 (在2021年,这个开发站点在Chrome中工作,不在Safari或Firefox中工作,因为它在webworker中使用ES6模块语法。模块的分发版本应该在所有浏览器中工作。)

你自己的数据

  1. 创建一个包含名为'x'和'y'列的CSV、parquet或feather文件。(或者一个包含xy列的feather文件)。任何其他列(分类信息等)都可以作为额外列包含在内。

  2. 将其分块:

cd deepscatter # 如果你还没在那里 quadfeather --files ../some-path-to/your-data.csv --tile_size 50000 --destination tiles
  1. 假设你的数据集有xy列,并且tiles文件夹在这个项目的根目录中,你可以通过运行以下命令来可视化数据
npm run dev

并在浏览器中打开http://localhost:3345/index-simplest-way-to-start.html

要编辑可视化或进行故障排除,请查看文件index-simplest-way-to-start.html,你应该能找到一个最基本的deepscatter实现。

探索index.html,并在http://localhost:3345/index.html渲染它,以获取更高级的示例。

注意:理想情况下,在未来的版本中,你将能够以不需要直接编码JSON的方式创建这些规格。

构建模块

npm run build

将在dist/deepscatter.es.js创建一个ES模块。导入这个模块的机制与index.html略有不同。

注意,这是一个ESM模块,因此需要你在代码中使用<script type="module">。 别担心!我们现在允许这么做!但要注意,这在运行非常旧浏览器的计算机上不起作用。

代码片段:

<div id="my-div"></div> <script type="module"> import Scatterplot from './dist/deepscatter.umd.js'; f = new Scatterplot('#my-div'); </script>

查看index_prod.html以获取示例

这目前是用vite和rollup打包的。上面还有/将会有一个进一步的交互层,但核心绘图组件是分离的,应该作为一个独立的层工作,通过API支持绘图请求。

代码策略

任何直接改变API调用的交互逻辑都不属于这个库。这里唯一的交互代码是用于缩放和与点交互。

未来的代码库拆分

绘图组件和分块组件在逻辑上是相当分离的;我可能会将分块策略拆分成一个单独的JS库,称为'quadfeather'。

Apache Arrow仍然是必要的中间格式,但可以使用例如arqueroDuckDB的WASM端口从CSV文件生成。

API

这仍然可能发生变化,并且没有完全记录。API的编码部分模仿了Vega-Lite,但有一些小的区别,以避免深度嵌套的查询,并添加动画和抖动参数。

{ encoding: { "x": { "field": "x", "transform": "literal" }, "color": { "field": "year", "range": "viridis", "domain": [1970, 2020] } }

已实现的美学

  1. x
  2. y
  3. size
  4. jitter_radius:抖动大小。API可能会改变。
  5. jitter_speed:抖动速度。API可能会改变。
  6. color(分类或线性:范围可以显式调用颜色比例,或接受任何d3-color名称。)
  7. x0(用于动画;在x0和x之间过渡)
  8. y0(用于动画;在y0和y之间过渡)
  9. filter。(这个库将过滤视为一种美学操作。)

计划中

  1. Symbol(将分类变量映射到单个字体中的单个unicode点;可能最多255个。)
  2. Label(全文标签)
  3. Image(像PixPlot)

抖动

抖动目前有点功能过载,但有些相当有趣。

抖动方法在'jitter_radius'字段的'method'键上设置。可能的值有:

  1. circle
  2. spiral
  3. time
  4. normal

原则

  1. 这是一个2D库。没有假3D。
  2. 中心缩放状态由d3-zoom处理。
  3. 使用缩放状态通过挂钩在Deepscatter顶部渲染其他层(注意on_zoom是直接设置的,_不是_通过prefs传入):
const scatterplot = new Scatterplot('#deepscatter'); scatterplot.on_zoom = (transform) => {...}

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多