首页
学习
活动
专区
工具
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() 方法将权重值添加到边的属性中,然后在自定义边的渲染器中获取权重值,并将其显示在边上。

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

相关·内容

PNAS:网络连接的中断预示着中风后多种行为障碍

中风后的行为障碍通常归因于局灶性损伤,但最近的证据表明,分布式脑网络破坏起着关键作用。来自华盛顿医学院研究人员在PNAS发文,他们招募了132名中风患者,测量静息态功能连接、病灶分布和多类行为表现(注意、视觉记忆、形象记忆、语言、运动和视觉),并使用机器学习模型来预测单个受试者的神经损伤。结果发现,FC能更好地预测视觉记忆和形象记忆,而病灶图能更好地预测视觉和运动损伤。两者都能很好地预测注意力和语言缺陷。接下来,研究者确定了生理网络功能障碍的一般模式,包括半球间整合和半球内连接的减少,这与多个领域的行为损伤密切相关。网络特异性的功能障碍模式预测了特定的行为障碍,而跨网络模块的大脑半球间沟通的丧失与跨多个行为领域的损伤相关。这些结果将大脑网络的关键组织特征与中风的大脑行为关系联系起来,阐明了脑结构与脑功能的补充价值,并为中风后多个行为领域障碍提供了生理机制。本文发表在PNAS杂志。

02

使用拓扑数据分析理解卷积神经网络模型的工作过程

神经网络在各种数据方面处理上已经取得了很大的成功,包括图像、文本、时间序列等。然而,学术界或工业界都面临的一个问题是,不能以任何细节来理解其工作的过程,只能通过实验来检测其效果,而无法做出合理的解释。相关问题是对特定数据集经常存在某种过拟合现象,这会导致对抗行为的可能性。出于这些原因,开发用于发展对神经网络的内部状态的一些理解的方法是非常值得尝试的。由于网络中神经元的数量非常庞大,这成为使得对其进行数据分析显得比较困难,尤其是对于无监督数据分析。 在这篇文章中,将讨论如何使用拓扑数据分析来深入了解卷积神经网络(CNN)的工作过程。本文所举示例完全来自对图像数据集进行训练的网络,但我们确信拓扑建模可以很容易地解释许多其他领域卷积网络的工作过程。 首先,对于神经网络而言,一般是由节点和有向边组成。一些节点被指定为输入节点,其他节点被指定为输出节点,其余节点被指定为内部节点。输入节点是数据集的特征。例如,在处理图像时,输入节点将是特定图像格式的像素。在文本分析时,它又可能是单词。假设给定一个数据集和一个分类问题,比如手写数字MNIST数据集,试图将每个图像分类为数字0到9中的某一个数字。网络的每个节点对应于一个变量值(激活值)。因此,每个数据点为神经网络中的每个内部和输出节点生成值。网络每个节点的值由分配给每个边的权重系统决定。节点节点Z上的值由与之连接的节点A,B,C,D节点的激活函数来确定。

02
领券