与here一样,我的Prefuse图表太密集而无法看到任何内容。所以我在接受的答案中尝试了@bcr建议的方法。但是,它对我不起作用。这就是我试过的:
我检索了默认设置。然后我更改了NBodyForce
的{{1}}的第二个参数(称为ForceSimulator
)和Distance
的第二个参数(称为SpringForce
),并将它们与其他默认值 - 进入我的新DefaultSpringLength
。但输出中没有任何改变。我错了什么?
这是我的代码:
ForceSimulator
答案 0 :(得分:2)
一种方法可能是添加JForcePanel
,即
Swing组件,用于配置给定
Force
中ForceSimulator
函数的参数。用于在制作可视化文件时探索不同的参数化。
这可以帮助您找到在getForceSimulator()
的实现中使用的最佳参数。
ForceSimulator fsim = ((ForceDirectedLayout) layout.get(0)).getForceSimulator();
JForcePanel fpanel = new JForcePanel(fsim);
frame.add(fpanel, BorderLayout.SOUTH);
在分发中包含的demos
中,prefuse.demos.GraphView
是一个完整的示例。根据经验,似乎某些参数根据所选数据集具有或多或少的影响。
附录:仔细观察,我发现您的方法使fdl
的内部状态保持不变。而是创建一个新的ForceSimulator
并在布局和强制面板中使用它;以下示例将defaultLength
的{{1}}从SpringForce
更改为DEFAULT_SPRING_LENGTH
。
42
或者,直接更新ForceDirectedLayout fdl = new ForceDirectedLayout("graph");
ForceSimulator fs = new ForceSimulator();
fs.addForce(new NBodyForce());
fs.addForce(new DragForce());
fs.addForce(new SpringForce(DEFAULT_SPRING_COEFF, 42));
fdl.setForceSimulator(fs);
,如图here所示。
SpringForce