Project Icon

egui_graphs

Rust实现的egui图形可视化库

egui_graphs是一个基于Rust语言开发的图形可视化库,集成了petgraph和egui框架。该库提供了一个易于使用的Widget,用于在egui应用中展示交互式图形。主要功能包括复杂图形可视化、缩放平移、节点边标签显示、交互事件处理等。egui_graphs支持通过egui样式自定义外观,适配深浅主题,并允许用户通过事件处理机制扩展功能。作为egui生态系统中的图形可视化基础组件,egui_graphs为开发者提供了灵活的定制和扩展空间。

构建 Crates.io docs.rs

egui_graphs

基于rust、petgraphegui的图形可视化工具。

2023-04-28 23:14:38的截图

该项目为egui框架实现了一个Widget,使在rust中轻松实现交互式图形可视化。目标是在egui中实现基本的图形可视化引擎,可以根据需求轻松扩展和定制。

  • 复杂图形的可视化;
  • 缩放和平移;
  • 节点和边的标签;
  • 节点和边的交互以及事件报告:点击、双击、选择、拖拽;
  • 通过egui上下文样式进行样式配置;
  • 通过egui上下文样式支持深色/浅色主题;
  • 事件报告,用户可以通过处理这些事件来扩展图形功能;
  • 布局和自定义布局机制;

状态

项目正在朝着稳定的1.0.0版本发展。目前,可能会出现破坏性的发布。

请使用master分支获取最新更新。

查看演示示例以全面了解widget的功能。

功能

事件

可以通过events特性启用。事件描述了图形的变化,无论是缩放级别的变化还是节点的拖动。

将此功能与自定义节点绘制函数结合使用,可以根据发生的事件实现自定义节点行为和绘制。

Egui crates 功能支持

持久化

要使用egui的persistence功能,您需要启用此crate的egui_persistence功能。例如:

egui_graphs = { version = "0", features = ["egui_persistence"]}
egui = {version="0.23", features = ["persistence"]}

示例

基本设置示例

第1步:设置BasicApp结构体

首先,让我们定义一个BasicApp结构体来保存图形。

pub struct BasicApp {
    g: Graph<(), (), Directed>,
}

第2步:实现new()函数

接下来,为BasicApp结构体实现new()函数。

impl BasicApp {
    fn new(_: &CreationContext<'_>) -> Self {
        let g = generate_graph();
        Self { g: Graph::from(&g) }
    }
}

第3步:生成图形

创建一个名为generate_graph()的辅助函数。在这个例子中,我们创建三个节点,并用三条边以三角形模式连接它们。

fn generate_graph() -> StableGraph<(), (), Directed> {
    let mut g: StableGraph<(), ()> = StableGraph::new();

    let a = g.add_node(());
    let b = g.add_node(());
    let c = g.add_node(());

    g.add_edge(a, b, ());
    g.add_edge(b, c, ());
    g.add_edge(c, a, ());

    g
}

第4步:实现update()函数

现在,让我们为BasicApp实现update()函数。这个函数创建一个GraphView widget,提供图形的可变引用,并使用ui.add()函数将其添加到egui::CentralPanel中。

impl App for BasicApp {
    fn update(&mut self, ctx: &Context, _: &mut eframe::Frame) {
        egui::CentralPanel::default().show(ctx, |ui| {
            ui.add(&mut GraphView::<
                _,
                _,
                _,
                _,
                DefaultNodeShape,
                DefaultEdgeShape,
            >::new(&mut self.g));
        });
    }
}

第5步:运行应用程序

最后,使用run_native()函数运行应用程序,指定本机选项和BasicApp

fn main() {
    let native_options = eframe::NativeOptions::default();
    run_native(
        "egui_graphs_basic_demo",
        native_options,
        Box::new(|cc| Box::new(BasicApp::new(cc))),
    )
    .unwrap();
}

2023-10-14 23:49:49的截图 您可以通过修改设置或添加更多节点和边来进一步自定义图形的外观和行为。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

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

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号