首页
学习
活动
专区
工具
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
  • Keras实现保存和加载权重及模型结构

    你可以使用model.save(filepath)将Keras模型和权重保存在一个HDF5文件,该文件将包含: 模型的结构,以便重构该模型 模型的权重 训练配置(损失函数,优化器等) 优化器的状态,以便于从上次训练中断的地方开始...注意,使用前需要确保你已安装了HDF5和其Python库h5py。...’) 如果你需要加载权重到不同的网络结构(有些层一样),例如fine-tune或transfer-learning,你可以通过层名字来加载模型: model.load_weights(‘my_model_weights.h5...first model; will only affect the first layer, dense_1. model.load_weights(fname, by_name=True) 以上这篇Keras...实现保存和加载权重及模型结构就是小编分享给大家的全部内容了,希望能给大家一个参考。

    3K20

    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每一帧数据保存到本地文件

    16.6K20

    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

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

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

    42710

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

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

    6.5K20

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

    饭量也得到了很大的提升,以至于公司食堂考虑要不要收他双人份的伙食费。 这天,张三爬楼的时候遇到了保洁阿姨,于是上前打招呼。...一开始只是显示一些参数,这倒还好。后来要在屏幕上设定一些参数,设定的时候,要在相应位置显示光标。一个页面可能要设置四五个参数。 阿姨:还好吧,很难吗?...这个屏幕虽然有光标显示的功能,但是不符合要求。它就像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

    macmatplotlib显示中文的操作方法

    具体步骤如下: 先打开终端,command+空格 搜索 ter,然后会蹦出终端,点开 输入 fc-list :lang=zh 如果显示command not found 输入 conda install...知识点补充: 给大家补充一个matplotlib中文乱码问题 ubuntu16.04使用python的matplotlib模块进行科学制图时,输出图例或者标题的时候出现中文乱码问题: 解决: 下载字体...font.sans-serif后添加中文字体 Microsoft YaHei, …(其余不变) 删除~/.cache/matplotlib下文件fontList.py3k.cache 重启python即可 注意:我修改完成后还需要在代码里加入...'] = False # 显示负数不乱码 另外:可以执行下这段程序–可以打印出可用的字体: #!...zh_fonts print ('*' * 10, '可用的字体', '*' * 10) for f in available: print (f) 总结 到此这篇关于mac如何在matplotlib显示中文的文章就介绍到这了

    6K40
    领券