【免费下载链接】kuvaA scientific plotting library in Rust项目地址https://gitcode.com/gh_mirrors/ku/kuva点击查看免费下载kuva 是一个用 Rust 编写的科学绘图库README.md支持 60 余种图表类型。它的--interactive特性可以把浏览器交互能力直接写进输出的 SVG 文件里悬停提示、点击固定、搜索过滤、图例开关全部可用而且不需要服务器、不需要 CDN、不依赖任何外部资源——一个.svg文件就是完整交付物。为什么把 JavaScript 写进 SVG传统做法是把图表做成静态图片再配一个前端框架如 D3、Plotly做交互——这意味着你要部署网页、引入依赖、维护两套代码。kuva 的做法不同渲染 SVG 时它直接把一小段 JavaScriptsrc/backend/interactive_js.rs 中约 220 行的JS常量连同 CSS 一起注入到script标签里。文件发出去之后任何人用浏览器打开就能交互断网环境、邮件附件、静态站点都适用。生成可交互 SVG 的两个入口CLI加一个--interactive参数每个子命令都接受--interactive例如kuva scatter examples/data/scatter.tsv --x x --y y --color-by group --legend --interactive -o plot.svg kuva volcano examples/data/volcano.tsv --gene gene --log2fc log2fc --pvalue pvalue --legend --interactive -o volcano.svg用浏览器打开plot.svg交互即生效。示例数据可以直接使用仓库里的 examples/data/scatter.tsv 和 examples/data/volcano.tsv。Rust 库一行with_interactive()作为库使用时只要在布局上开启开关src/render/layout.rslet layout Layout::auto_from_plots(plots).with_interactive();之后SvgBackend::new().render_scene(scene)输出的 SVG 就自带交互。多面板Figure也会逐面板继承该开关行为见 tests/interactive_svg.rs。原理单个 SVG 文件里藏着什么打开一个交互版 SVG会发现三处额外内容这也是全部秘密所在1. SVG 根节点上的data-*坐标系元数据SVG 后端 在svg标签上写入data-xmin、data-xmax、data-ymin、data-ymax、绘图区四边坐标data-plot-left/top/right/bottom以及data-log-x、data-log-y对数轴标记。JavaScript 靠这些数字把鼠标像素位置换算回数据坐标——这就是坐标读数功能的来源。2. 数据点被包进带属性的g classtt交互模式下每个散点/条形不再是裸元素而是被包进带data-group、data-x、data-y属性的g组并附上原生title提示文本tooltip 机制见 tests/tooltip_svg.rs。搜索和图例开关都是基于这些属性做的 DOM 过滤。3.foreignObject搜索框 script注入渲染收尾阶段后端在/svg前依次写入底部 UI 条HTML 搜索输入框、save 按钮、ⓘ 帮助图标、坐标读数文本、以及 CDATA 包裹的 JavaScript。CSS 高亮/暗化规则.pinned、.dim、.muted则放在defs内的style中。6 个开箱即用的交互功能功能使用方式悬停提示光标移到数据点上显示标签与数值点击固定点击数据点保持高亮、其余变暗再点一次或按Escape清除搜索过滤在搜索框输入基因名/组名不匹配的点自动淡出坐标读数光标在绘图区内移动时实时显示数据空间的 x/y 值图例开关点击图例条目显示/隐藏对应系列保存 SVG右上角 save 按钮序列化当前 DOM 状态下载功能尚未完善火山图还有彩蛋显著性阈值线可以直接拖拽点的颜色会随阈值实时重算交互脚本第 190–222 行。本版本完整接入了scatter、line、bar、strip、volcano五类图其他子命令也接受--interactive会加载搜索框和坐标读数 UI逐点悬停/搜索将在后续版本补齐详见 docs/src/cli/index.md。这些场景下会自动降级--interactive是纯增量开关关闭时输出字节级不变以下情况它会静默失效得到普通静态 SVG输出为 PNG--features png或 PDF--features pdf终端渲染--terminal在 Inkscape / Illustrator 中打开脚本标签会被剥离所以放心把--interactive加进流水线不会对现有静态产物产生任何影响。延伸阅读官方交互文档含可在线体验的火山图示例docs/src/reference/interactive.md注入的完整 JavaScript 源码src/backend/interactive_js.rs交互 UI 与脚本注入逻辑src/backend/svg.rs端到端测试断言data-*属性、script、CSS 类均存在tests/interactive_svg.rsstrip 图叠加图例开关的用法示例docs/src/cli/strip.md小结kuva 用元数据属性 内嵌脚本 foreignObject UI三板斧把交互能力折叠进单个 SVG 文件。一个 flag 的成本换来可以离线分发的可交互科学图表——这就是它最讨巧的设计。赞分享【免费下载链接】kuvaA scientific plotting library in Rust项目地址https://gitcode.com/gh_mirrors/ku/kuva点击查看免费下载相关推荐如何在5分钟内用Rust画出科学图表Rust绘图库kuva快速上手教程如何在5分钟内用Rust画出科学图表Rust绘图库kuva快速上手教程 kuva 是一款 Rust 科学绘图库scientific plotting libRust科学绘图库kuva完全指南60种图表类型、从SVG到终端一站式可视化解决方案Rust科学绘图库kuva完全指南60种图表类型、从SVG到终端一站式可视化解决方案 kuva 是一款用 Rust 编写的科学绘图库scientific如何用clip创建交互式图表SVG导出和Web集成的完整方案如何用clip创建交互式图表SVG导出和Web集成的完整方案 在数据可视化的世界中clip图表生成工具为开发者提供了一个简单高效的解决方案。这个开源命令行工创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考