Diagrams are essential tools for problem-solving and communication as they externalize conceptual structures using spatial relationships. But when picking a diagramming framework, users are faced with a dilemma. They can either use a highly expressive but low-level toolkit, whose API does not match their domain-specific concepts, or select a high-level typology, which offers a recognizable vocabulary but supports a limited range of diagrams. To address this gap, we introduce Bluefish: a diagramming framework inspired by component-based user interface (UI) libraries. Bluefish lets users create diagrams using relations: declarative, composable, and extensible diagram fragments that relax the concept of a UI component. Unlike a component, a relation does not have sole ownership over its children nor does it need to fully specify their layout. To render diagrams, Bluefish extends a traditional tree-based scenegraph to a compound graph that captures both hierarchical and adjacent relationships between nodes. To evaluate our system, we construct a diverse example gallery covering many domains including mathematics, physics, computer science, and even cooking. We show that Bluefish's relations are effective declarative primitives for diagrams. Bluefish is open source, and we aim to shape it into both a usable tool and a research platform.
翻译:图表作为利用空间关系外化概念结构的工具,在问题解决与交流中至关重要。然而在选择图表框架时,用户面临两难困境:要么使用表达能力强大但底层抽象的图形工具包(其API与领域特定概念不匹配),要么选择高级图表类型学(其提供可识别的视觉词汇但支持的图表范围有限)。为填补这一空白,我们提出Bluefish:一种受组件化用户界面(UI)库启发的图表框架。Bluefish允许用户通过关系(relations)创建图表——这些声明式、可组合且可扩展的图表片段,松化了UI组件的概念。与组件不同,关系既不独占其子元素的控制权,也无需完全指定其布局。为渲染图表,Bluefish将传统的树形场景图扩展为复合图结构,以同时捕获节点间的层次关系与相邻关系。为评估系统性能,我们构建了涵盖数学、物理、计算机科学乃至烹饪等多元领域的示例库。实验表明,Bluefish的关系机制是有效的声明式图表原语。本框架已开源,我们致力于将其发展为实用工具与研究平台。