- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 prefuse 应用程序,用于加载 GraphML 文件,其中节点具有“Color”字符串属性。即。
<node id="1">
<data key="Color">Green</data>
<node>
我想允许指定一系列预定义颜色,并且不想强制创建 GraphML 的程序使用所有颜色。
我认为这将是一个简单的任务(也许确实如此?),但 Prefuse 似乎处处与我作斗争。我提出了两个部分解决方案,但它们都有各自的问题。我的第一种方法是手动添加与“Color”字符串相关的新 Integer 属性,如下所示:
// Add new property to Graph g
g.addColumn("ColorNumber", int.class);
// Add property to each node
Iterator<Node> it = g.nodes();
while(it.hasNext()) {
Node n = it.next();
String type = n.getString("Color");
// Compare to an array of accepted types
for(int i=0; i < colorMap.length; i++) {
if(type.equalsIgnoreCase(colorMap[i])) {
n.setInt("ColorNumber", i);
break;
}
}
}
然后,您可以使用 prefuse 的默认颜色管理器将这些整数链接到数组索引。
draw.add(new DataColorAction("graph.nodes", "ColorNumber", Constants.NUMERICAL, VisualItem.FILLCOLOR, fillArray));
这种方法的最大问题(除了不优雅之外)是,当用户指定的唯一颜色少于三种时,它会失败。如果指定了两种颜色,则 prefuse 使用颜色数组的第一个和最后一个元素。如果有的话,第一个。嗯。
我的另一个解决方案是手动设置每个节点的颜色。
// Iterate over VisualItems in Visualization vis
Iterator<VisualItem> v_it = vis.items("graph.nodes");
while(v_it.hasNext()) {
VisualItem item = v_it.next();
String type = item.getString("Color");
for(int i=0; i < typeMap.length; i++) {
if(type.equalsIgnoreCase(typeMap[i])) {
item.setFillColor(fill[i]);
item.setEndFillColor(fill[i]);
break;
}
}
}
vis.repaint();
这适用于任意数量的颜色,但会随机困惑。我认为 prefuse 在自己的线程上处理这些方法,由于某种原因,该线程运行缓慢。对于较小的网络,我可以设置固定的等待时间(我还没有找到可以使用的 Thread.join() 方法)。但是,对于大型网络来说,这会失败(读:使我的计算机崩溃)。
所以,你已经明白了。为本来应该是微不足道的任务投入不必要的大量时间。有人设法做到这一点吗?有简单的方法吗?请告诉我我想太多了。
最佳答案
我非常了解 prefuse 的这些经历:-/
第一种方法是正确的,但指定了错误的数据类型。颜色是一个NOMINAL
变量。
DataColorAction color = new DataColorAction("graph.nodes", "Color",
Constants.NOMINAL, VisualItem.FILLCOLOR, fillArray);
ColorNumber
字段不是必需的。
您对第二种方法的结论是正确的。 prefuse 在单独的线程中运行其 ActionList
。因此,不应手动设置视觉属性。
如果需要更细粒度的代码,您可以扩展DataColorAction
。
关于java - GraphML 节点着色 Prefuse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10019329/
本文整理了Java中prefuse.controls.ZoomToFitControl类的一些代码示例,展示了ZoomToFitControl类的具体用法。这些代码示例主要来源于Github/Stac
本文整理了Java中prefuse.controls.ZoomControl类的一些代码示例,展示了ZoomControl类的具体用法。这些代码示例主要来源于Github/Stackoverflow/
我在 JPanels 中有一个 2x2 的图形网格。在左上角的图中,我有很多节点,当我单击一个节点时,我希望将该节点复制到下一个图中,以便它出现在那里。首先我正在制作图表然后我将数据添加到左上角的图表
赞here ,我的 Prefuse 图太密集了,看不到任何东西。所以我尝试了@bcr 在接受的答案中建议的方法。但是,它对我不起作用。这是我试过的: 我检索了默认设置。然后我更改了 ForceSimu
我是 Prefuse 的新手。演示示例都是从文件/数据库中加载的数据。有没有办法动态创建数据而不是从文件加载。例如,我想创建一个树数据结构并将其可视化。任何简单的工作示例对我来说都非常有帮助。 最佳答
我需要使用 prefuse 可视化一个 xml 文件,但由于其大小,我必须一次仅加载文件的一部分,并将它们表示为 prefuse 中的树结构。我设法加载并可视化第一棵树,其中包含所有 xml 元素的深
我们正在调用 Web 服务来收集包含大约 1500 个节点的图表的信息。我们在 Prefuse 中显示图表同时它不断地添加节点和边。大多数时候,这似乎工作得很好,但每隔一段时间,整个应用程序就会卡住,
我想使用Prefuse显示一个简单的图形,其中节点内有节点ID但这似乎比听起来更复杂。 Graph g = new Graph(); for (int i = 0; i (AggregateDemo.
有人可以告诉我如何使用 prefuse 绘制条形图吗?用Java?我可以查找哪些资源来学习如何绘制它们? 最佳答案 JFreeChart是一个优秀的绘图包,有大量的 documentation ,并且
我尝试通过以下方法在 Prefuse 中创建一个 Graph 实例: Graph(Table nodes, Table edges, boolean directed) /* Create a new
我有一个 prefuse 应用程序,用于加载 GraphML 文件,其中节点具有“Color”字符串属性。即。 Green 我想允许指定一系列预定义颜色,并且不想强制创建 GraphML 的程
我正在尝试创建一个动态更新的 Prefuse 图,其中定期添加和删除节点。我已经能够很好地添加节点和边,然后删除它们,但是当我尝试将边添加到下一组节点时,我会遇到异常。有谁知道从 Prefuse 图中
我使用 prefuse 创建的图表(如下所示)太密集了!有许多节点链接到许多其他节点。无论如何,我可以更分散地展示这个吗? 提前致谢! 最佳答案 您使用的是基于力的布局吗?如果是这样,请更改布局的力参
我想制作一个堆叠面积图,其前缀类似于以下内容: http://prefuse.org/gallery/namevoyager/ 不过,我不太确定从哪里开始,而且没有这些图表的示例代码。我确实找到了 p
我使用以下代码来显示图表: graph = new Graph(true); vis = new Visualization(); vis.add(GRAPH, graph);
我有一个巨大的 XML 文件(大小接近 2GB),其格式为 Graphml XML 格式,用于社交图谱。通过 创建新图时 graph = new GraphMLReader().readGra
本文整理了Java中prefuse.controls.ZoomToFitControl.()方法的一些代码示例,展示了ZoomToFitControl.()的具体用法。这些代码示例主要来源于Githu
本文整理了Java中prefuse.controls.ZoomControl.()方法的一些代码示例,展示了ZoomControl.()的具体用法。这些代码示例主要来源于Github/Stackove
我想通过 Prefuse Java 在表中可视化有关汽车的一些数据。使用了三种重要的数据对象: PIT(时间点) 值(包含 Double 形式的 Gas 消耗) Car(代表汽车的类) 所以首先我将它
我在使用 Prefuse 中的 SpecifiedLayout 时遇到问题。我想在已经预定义的位置设置一些节点。我尝试过使用 AxisLayout。节点设置到正确的位置,但我无法真正使用 DragCo
我是一名优秀的程序员,十分优秀!