首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在JgraphT中显示权重

在 JGraphT 中显示权重是指在图形中显示边的权重,即在两个顶点之间的边上显示连接它们的权重值。在 JGraphT 中,可以通过自定义边的渲染器来实现显示权重的功能。

以下是一个简单的示例代码,用于在 JGraphT 中显示权重:

代码语言:java
复制
import org.jgrapht.Graph;
import org.jgrapht.graph.DefaultWeightedEdge;
import org.jgrapht.graph.builder.GraphTypeBuilder;

import java.awt.*;
import java.awt.geom.Rectangle2D;

public class WeightedEdgeDemo {
    public static void main(String[] args) {
        // 创建一个有向图
        Graph<String, DefaultWeightedEdge> graph = GraphTypeBuilder
                .directed().weighted(true).allowingMultipleEdges(true).allowingSelfLoops(true)
                .vertexSupplier(new StringSupplier()).edgeSupplier(DefaultWeightedEdge::new)
                .buildGraph();

        // 添加顶点和边
        graph.addVertex("A");
        graph.addVertex("B");
        graph.addVertex("C");
        graph.addEdge("A", "B").setWeight(2.0);
        graph.addEdge("B", "C").setWeight(3.0);
        graph.addEdge("A", "C").setWeight(5.0);

        // 自定义边的渲染器
        JGraphXAdapter<String, DefaultWeightedEdge> jgxAdapter = new JGraphXAdapter<>(graph);
        mxGraphComponent graphComponent = new mxGraphComponent(jgxAdapter);
        graphComponent.getGraph().setEdgeLabels(true);
        graphComponent.getGraph().setHtmlLabels(true);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_EDGE, mxEdgeStyle.ElbowConnector);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_BACKGROUNDCOLOR, mxConstants.NONE);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_FONTCOLOR, "#000000");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_STROKECOLOR, "#000000");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_POSITION, mxConstants.ALIGN_CENTER);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_FONTSIZE, "12");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_FONTCOLOR, "#000000");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_BORDERCOLOR, "#000000");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_BORDERWIDTH, "1");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_VERTICAL_ALIGN, mxConstants.ALIGN_TOP);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_ALIGN, mxConstants.ALIGN_CENTER);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_WIDTH, "80");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_HEIGHT, "20");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL, "");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_OVERFLOW, "hidden");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_PADDING, "2");
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_BORDERSTYLE, mxConstants.LINE_STYLE_SOLID);
        graphComponent.getGraph().getStylesheet().getDefaultEdgeStyle()
                .put(mxConstants.STYLE_LABEL_HORIZONTAL_ALIGN, mxConstants.ALIGN_CENTER);

        // 显示图形
        JFrame frame = new JFrame("Weighted Edge Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(graphComponent);
        frame.pack();
        frame.setSize(800, 600);
        frame.setVisible(true);
    }
}

在上面的代码中,我们使用了 JGraphX 库来渲染图形,并且自定义了边的样式和标签。其中,我们将边的标签设置为空字符串,以便在边上显示权重值。

在 JGraphT 中,我们可以通过将权重值添加到边的属性中来实现显示权重的功能。具体来说,我们可以使用 setWeight() 方法将权重值添加到边的属性中,然后在自定义边的渲染器中获取权重值,并将其显示在边上。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在DataGrid中显示图片

除了与数据源直接绑定以外,我们还可以通过列绑定模板对 DataGrid 的列进行自定义,来按照我们设定的格式显示数据。     ...例如,数据表中有一个字段 f_DemoImage 用来存放图片的路径(包括图片文件名),为了在 DataGrid 的 Cell 中显示实际的图片,我们可以定义一个模板列,然后给该列赋予字段 f_DemoImage...的值,就可以在 DataGrid 的 Cell 中显示图片。...object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面   if (Page.IsPostBack)   { }   else   {   // 在...DataGrid 中显示数据(包括图象):   myTableAccess oDbTable = new myTableAccess(); //myTableAccess我是定义的数据库访问类   oDbTable.sDbPath

3.4K30

用图机器学习探索 A 股个股相关性变化

在本系列的前文 1,2中,我们介绍了如何使用 Python 语言图分析库 NetworkX 3 + Nebula Graph 4 来进行中人物关系图谱分析。...在本文中我们将介绍如何使用 Java 语言的图分析库 JGraphT 5 并借助绘图库 mxgraph 6 ,可视化探索 A 股的行业个股的相关性随时间的变化情况。...JGraphT JGraphT 是一个开放源代码的 Java 类库,它不仅为我们提供了各种高效且通用的图数据结构,还为解决最常见的图问题提供了许多有用的算法: 支持有向边、无向边、权重边、非权重边等;...下面,我们来实践一把,先在 JGraphT 中创建一个有向图: import org.jgrapht.*; import org.jgrapht.graph.*; import org.jgrapht.nio...在 JGraphT 中进行图分析 第一步:在 JGraphT 中创建一个无向加权图 graph: Graph graph = GraphTypeBuilder

1.4K20
  • 在Android中显示APNG动图

    三、在Android中显示APNG动图 这里使用了一个开源库来解析加载APNG图,apng-view 使用示例: String url = "http://xxx.png"; imageView.setOnClickListener...[batn8vbhrw.png] 源码解读 (1)prepare 先从图片文件读取这里说起,图片读取是在ApngDrawable这个prepare()方法中进行的; // 文件路径:com/github...instanceof PngChunkFCTL) { fctlArrayList.add((PngChunkFCTL) chunk); // 收集帧动画控制的数据块 } } } 这个过程大体上就是在解析这个...= null) apngListener.onAnimationRepeat(this); } currentFrame++; } 绘制动图的核心代码在drawAnimateBitmap方法里: private...总结下来ApngDrawable核心逻辑大致分三步: (1)APNG拆分成多个帧文件:图片文件通过开源库pngj以PngChunk的数据结构读到内存,然后遍历数据块,将APNG每一帧数据保存到本地文件中;

    17K20

    在 WordPress 中如何定义字段依赖显示

    比如插件的「缩略图设置」页面,只需写表单字段的配置代码和字段之间上的显示依赖关系,除了插件本身的基础的数据比较代码之外,其他都是通过配置定义的。...定义了字段依赖关系之后,表单渲染的时候,字段显示就需要进行数据比较是经常进行的操作,当然我们可以使用 PHP 和 JavaScript 的比较操作符进行操作的,但是如果需要进行回调操作的时候,那就要有点麻烦了...args:可以指定要比较 item 中的哪个字段(key 指定),比较的方法(compare 指定),要比较的值(value 指定),说起来有点复杂,还是来看例子吧: wpjam_show_if($post...定义字段依赖显示 看一段简化之后的缩略图设置的字段定义代码,其中 width 和 height 的字段都有 show_if 属性,它指定了只有 type 字段的值为空的时候才显示。...show_if' => $show_if, 'group' => 'term', 'class' => 'small-text', ] ]; 通过这样的方式来定义表单的字段和字段之间依赖显示关系

    8.5K20

    在Jupyter Notebook中显示AI生成的图像

    使用合适的工具,您可以将想法转化为创意,通过将文本转换为生成的图像并使用数字媒体管理工具Cloudinary将其存储在云中。 OpenAI的高智能图像API使得显示AI生成的图像成为可能。...在本指南中,我将详细介绍如何构建一个基于用户输入的动态高效图像生成应用程序,并在Jupyter Notebook中显示图像输出。 什么是Jupyter Notebook?...创建应用程序 在您的项目目录终端中,运行此命令:jupyter notebook,以在http://localhost:8888上启动开发环境。...如果他们没有输入提示,则当用户在空白输入上按下回车键时,提供的提示将显示图像。...以上代码中的导入语句将使用存储的Cloudinary AI生成的图像的URL以可视方式显示图像,而不是仅显示图像的URL。requests库发出HTTP请求。

    8010

    DeepMind新作:无需权重更新、提示和微调,transformer在试错中自主改进

    在近日 DeepMind 的一篇论文中,研究者假设 PD 没能通过试错得到改进的原因是它训练用的数据无法显示学习进度。...由于策略在源 RL 算法的训练过程中持续改进,因此 AD 不得不学习改进算子以便准确地建模训练历史中任何给定点的动作。...研究者在很多需要探索的部分可观察环境中评估了 AD,包括来自 DMLab 的基于像素的 Watermaze,结果表明 AD 能够进行上下文探索、时序信度分配和泛化。...首先,通过在许多不同的任务上运行单独的基于梯度的 RL 算法来收集学习历史数据集。接下来,训练具有多情节上下文的序列模型来预测历史中的动作。...为了回答这个问题,该研究保留测试集数据中沿源算法历史的不同点采样策略,然后,使用此策略数据预先填充 AD 和 ED 的上下文,并在 Dark Room 的环境中运行这两种方法,将结果绘制在图 5 中。

    43410

    linux中vim如何显示行数,vim 在linux下中如何设置显示行数「建议收藏」

    在.vimrc(或/etc/vimrc)文件中输入如下文本: set tabstop=4 set softtabstop=4 set shiftwidth=4 set noexpandtab set...nu:表示显示行 vim在linux下中如何设置显示行数 在.vimrc(或/etc/vimrc)文件中输入如下文本: set tabstop=4 set softtabstop=4 set shiftwidth...设置显示行数 左上角-文件-属性 终端-设置最大 … MongoDB在Linux下常用优化设置 MongoDB在Linux下常用优化设置 以下是一些MongoDB推荐的常用优化设置.在生产环境下选取合适的参数值...\d :代表日期,格式为 … [工具][vim] vim设置显示行号 转载自:electrocrazy的博客 在linux环境下,vim是常用的代码查看和编辑工具....在程序编译出错时,一般会提示出错的行号,但是用vim打开的代码确不显示行号,错误语句的定位非常不便.那么怎 … Linux下环境变量设置 (转) Linux下环境变量设置 1.在Windows 系统下

    6.6K20

    指针在液晶屏显示中的用法(二)

    饭量也得到了很大的提升,以至于公司食堂在考虑要不要收他双人份的伙食费。 这天,张三在爬楼的时候遇到了保洁阿姨,于是上前打招呼。...一开始只是显示一些参数,这倒还好。后来要在屏幕上设定一些参数,设定的时候,要在相应位置显示光标。一个页面可能要设置四五个参数。 阿姨:还好吧,很难吗?...这个屏幕虽然有光标显示的功能,但是不符合要求。它就像word里的光标一样,写入一个字,光标自动后移。但实际上,我们设定的时候,是要求光标固定在一个位置不要动的。...进入设定状态的时候,在特定位置循环显示” ”和”_”,循环时间是几百个微秒,这样人眼能看到。...开始的时候,光标显示部分的函数是这样写的: if(A_Step == 1) //页面A的第一处光标 { if(cursor_cnt >= 500)

    2K40

    指针在液晶屏显示中的用法(一)

    这天,老板给了一个任务,给他们公司的产品增加一个液晶屏LCD1602,显示五个页面,可通过上下按键进行切换。 张三心想,这简单啊。...但是老板是个想法很多的人,时不时的会让张三调整显示的顺序,或者增加一个页面,又或者减少一个页面。 于是张三经常要调整page值和数组的对应关系,增加或减少显示页面的函数。...这时保洁阿姨过来,看了一眼,说: 你定义一个指针数组,把这几个页面数组的首地址按顺序存下来,显示页面的时候通过页面数组的首地址来显示就行了,显示函数就不用写那么麻烦了。...page_p[1] = B[0]; page_p[2] = C[0]; page_p[3] = C[0]; page_p[3] = E[0]; 再 然后是显示函数...16,page_num); Lcd1602A _SetPoint(2,0); Lcd1602A _DisplayString(16,page_num + 16); } 如果要显示页面

    2K30

    X# 开发 Winform 项目在 gridView 中显示数据

    在学习X#过程中,我感到最大的难度或应用阻碍在几方面: X# 在国内没有生态,可能除了 xinjie 老师的群,几乎没人关注 帮助文件全是E文,里面说明过于简单粗糙,示例代码太少,有些还是未实现的(todo...没有系统的学习资料,很多需要摸索 VFP 一些核心的内容还是没有实现,如缓冲及提交更新等,要么就是我还没掌握 下面,我将使用X#开发一个Windows Form应用,实现一个最基本的从SQL服务器查询数据并显示在...grid中的小例子。...form设计及代码 回到 form 设计界面,我们往 form 中拖入一个 DataGridView 组件用于记录表格显示。...我们再回头看这个 form1.prg 文件里的代码: 主要代码我写了注释,从功能上就是在窗体运行时,连接 SQL 数据库,并执行一个 SQL 查询,将集合记录显示在 gridView 组件里。

    9410
    领券