gpt4 book ai didi

java - GraphStream 中的 setAttribute

转载 作者:行者123 更新时间:2023-12-01 10:51:12 24 4
gpt4 key购买 nike

我在 GraphStream 中有一个项目,我需要在其中更改图形的节点坐标。

这些坐标存储在名为“xy”的变量中

完成这项工作的函数应该是 setAttribute()addAttribute(),但是当我使用它们时,什么也没有发生,或者有时它给了我NaN 消息。

这是一个代码示例,其中根本没有进行任何更改:

public class TestClass {

public static void main(String[] args) {
Graph graph = new MultiGraph("Dorogovtsev mendes");
Generator gen = new DMCoordGen(); // Coordinates Generator
gen.addSink(graph);
gen.begin();
for (int j = 0; j < 5; j++) { // Graph Nodes
gen.nextEvents();
}
gen.end();
System.out.println("-----------------");
System.out.println("First Coordinates");
System.out.println("-----------------");
for(int i=0; i<graph.getNodeCount(); i++) { // First Reading
Double[] attributes = (Double[]) graph.getNode(i).getAttribute("xy");
Double x = attributes[0];
Double y = attributes[1];
System.out.println(x + " , " + y);
}
System.out.println("---------------");
System.out.println("New Coordinates");
System.out.println("---------------");
for(int i=0; i<graph.getNodeCount(); i++) { // Modification
Double[] attributes = (Double[]) graph.getNode(i).getAttribute("xy");
Double x = attributes[0] * 100;
Double y = attributes[1] * 100;
graph.getNode(i).setAttribute("xy", (Object[]) attributes);
}
for(int i=0; i<graph.getNodeCount(); i++) { // Second Reading
Double[] attributes = (Double[]) graph.getNode(i).getAttribute("xy");
Double x = attributes[0];
Double y = attributes[1];
System.out.println(x + " , " + y);
}
}

}

这段代码返回的结果是:

-----------------
First Coordinates
-----------------
0.27463410536937105 , 0.908142618579691
0.5945324304252239 , 0.011861230502362319
0.7645069243611142 , 0.8994092027470882
0.23856199477010953 , 0.6174255664753833
0.9215549969974312 , 0.46748048612026005
0.5283548936726747 , 0.3995089175747245
0.14035732608566487 , 0.32181008971710223
0.8782155705197804 , 0.8271792979519879
---------------
New Coordinates
---------------
0.27463410536937105 , 0.908142618579691
0.5945324304252239 , 0.011861230502362319
0.7645069243611142 , 0.8994092027470882
0.23856199477010953 , 0.6174255664753833
0.9215549969974312 , 0.46748048612026005
0.5283548936726747 , 0.3995089175747245
0.14035732608566487 , 0.32181008971710223
0.8782155705197804 , 0.8271792979519879

如您所见,使用 setAttribute()addAttribute() 没有任何修改。

请引用行 graph.getNode(i).setAttribute("xy", (Object[]) attribute);

我做错了什么?我该如何解决它?

谢谢!

最佳答案

在您的示例中,您的意思是:

attributes[0] *= 100;

而不是:

Double x = attributes[0] * 100;

在您的情况下,attributes 数组永远不会被修改。这可能就是为什么“setAttribute”调用(显然)没有效果的原因。

关于java - GraphStream 中的 setAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com