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) => {...}

编辑推荐精选

TRAE编程

TRAE编程

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

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

热门AI工具生产力协作转型TraeAI IDE
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI助手AI工具AI写作工具AI辅助写作蛙蛙写作学术助手办公助手营销助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多