- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 prefuse 可视化工具包,工具包中的 GraphView Demo 非常棒,它提供了各种控件来可视化数据。
我能够为我的数据集生成 GraphML 并使用 GraphView 对其进行可视化,我希望拥有的另一件事是用权重或颜色编码标记边缘,以展示两个节点之间的强度。
非常感谢任何有关相同的输入..谢谢..
最佳答案
免责声明:我没有使用 API,只是检查了文档:) 似乎 API 有一个 EdgeRenderer 接口(interface),您应该实现该接口(interface)以实现所需的行为。
引用:http://prefuse.org/doc/manual/introduction/example/ , http://prefuse.org/doc/api/prefuse/render/DefaultRendererFactory.html
更新:首先更正:实际上 EdgeRenderer 不是一个 iterface 而是一个类。我做了一个简单的演示来说明如何实现自定义边缘渲染。
特征
将标签添加到包含节点标签首字母的边
方法
我做了一个快速而肮脏的解决方案,即复制 LabelRenderer 并进行修改以处理边缘。
代码
我将类(class)命名为 MyEdgeRenderer
:
public class MyEdgeRenderer extends AbstractShapeRenderer {
EdgeRenderer
绘制边缘线(请参阅下面的
render()
以了解正在运行的渲染器):
protected EdgeRenderer m_edgeRenderer = new EdgeRenderer();
getText()
从节点获取首字母:
protected String getText(VisualItem item) {
EdgeItem edge = (EdgeItem)item;
VisualItem item1 = edge.getSourceItem();
VisualItem item2 = edge.getTargetItem();
String t1 = null, t2 = null;
if ( item1.canGetString(m_labelName) ) {
t1 = item1.getString(m_labelName).substring(0,1);
};
if ( item2.canGetString(m_labelName) ) {
t2 = item2.getString(m_labelName).substring(0,1);
};
if (t1 != null && t2 != null)
return t1 + "-" + t2;
else
return null;
}
getAlignedPoint()
将标签放在边缘的一半:
protected void getAlignedPoint(Point2D p, VisualItem item,
double w, double h, int xAlign, int yAlign)
{
double x=0, y=0;
EdgeItem edge = (EdgeItem)item;
VisualItem item1 = edge.getSourceItem();
VisualItem item2 = edge.getTargetItem();
// label is positioned to the center of the edge
x = (item1.getX()+item2.getX())/2;
y = (item1.getY()+item2.getY())/2;
...
render()
(I)首先画线和(II)使用黑色:
public void render(Graphics2D g, VisualItem item) {
m_edgeRenderer.render(g, item);
...
// render text
int textColor = ColorLib.color(Color.BLACK); // item.getTextColor()
if ( text != null && ColorLib.alpha(textColor) > 0 ) {
...
// -- 3. the renderers and renderer factory ---------------------------
// draw the "name" label for NodeItems
LabelRenderer ir = new LabelRenderer("name");
ir.setRoundedCorner(8, 8); // round the corners
// draw the "name" initials for EdgeItems
MyEdgeRenderer er = new MyEdgeRenderer("name");
er.setRoundedCorner(8, 8); // round the corners
// create a new default renderer factory
// return our name label renderer as the default for all non-EdgeItems
// includes straight line edges for EdgeItems by default
vis.setRendererFactory(new DefaultRendererFactory(ir, er));
EdgeItem.getString(), getTextColor()
.我猜这两个属性都可能来自 GraphML 数据。示例代码还显示了如何为节点设置颜色,它也可能适用于边缘(尽管我没有尝试过):
// -- 4. the processing actions ---------------------------------------
...
// use black for node text
ColorAction text = new ColorAction("graph.nodes",
VisualItem.TEXTCOLOR, ColorLib.gray(0));
关于java - 预置 : Adding edge weights to the GraphView Demo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8010823/
我想通过注册表更改 Edge 浏览器中的主页,但它是加密的,我在注册表中看到( protected - 修改违反 Windows 策略。请参阅 aka.ms/browserpolicy)。请帮助我在注
如果我开发一个网站,它是否会以相同的方式在 IE11、Chrome、Firefox 和 edge 上运行,还是我们需要专门为 IE11 编写代码?我没有 Windows 8,因此无法在边缘浏览器上测试
如果我开发一个网站,它是否会以相同的方式在 IE11、Chrome、Firefox 和 edge 上运行,还是我们需要专门为 IE11 编写代码?我没有 Windows 8,因此无法在边缘浏览器上测试
如果 Edge 在某些机器上发生崩溃,我们需要检查日志以了解发生了什么情况。 最佳答案 Microsoft Edge 实际上是一个 Windows 进程,因此您应该能够在事件查看器中查看日志。此外,您
我们公司已将 Chrome 扩展程序移植到 Edge。扩展工作正常,但弹出窗口本身有很多重要内容。如果您在扩展设置中切换“地址栏旁边的显示按钮”,边缘扩展似乎只显示弹出按钮。这通常是一种糟糕的用户体验
我正在尝试在 Microsoft Edge 中调试崩溃的应用程序,但它提供了友好的错误页面: This page is having a problem loading We tried to loa
经过长时间的研究,我创建了我的最佳电子书 (Epub) 阅读器。作为主要设备,我基本上使用 Windows 10 平板电脑和 Microsoft Edge 作为 (Epub) 阅读器。 这是伟大的和惊
如何使用注册表或命令行获取 Microsoft Edge 浏览器版本? 我不想从 UI 中获取它。 最佳答案 对于 Microsoft Edge Legacy ,您可以使用 Get-AppxPacka
是否有可靠的编程方式来确定 Microsoft Edge 是默认浏览器? 我知道一种选择是使用 IApplicationAssociationRegistration::QueryCurrentDef
当人们在 Edge 中浏览网站时,很高兴看到“阅读 View ”按钮已启用。想要了解一个页面如何适合阅读模式。这将有助于开发人员在开发网站时牢记阅读模式。 最佳答案 答案来自 Microsoft Ed
我们在三周前向申请表提交了 Microsoft Edge 扩展:https://aka.ms/extension-request . 我们还没有收到任何反馈,在开发者仪表板中提交扩展包时,我们收到以下
我可以运行 code 从 WSL2 内部启动 VSCode。 我将如何启动 Edge(当前基于 Chromium 的 Edge)? 我试过了: ~/Code/company/workshops-web
最新版本的 Microsoft Edge 浏览器 (41.162...) 在单击后退和前进按钮时请求新页面。我在多个平台上测试了多个浏览器,只有 Edge 表现出这种行为。 这是一个 test pag
我在 Windows 1803 版本 17134.376 中使用 Microsoft Edge。 我有一个在 IIS 中本地运行的 ASP.NET Core 网站。该网站在 Edge 中可以正常打开,
Edge on Desktop 未加载谷歌字体。事实上,它甚至没有使用被定义为回退的“sans-serif”。 此行为不会在 Mobile Edge 中复制。 How it should look l
iotedge logs 暴露的日志在哪里?命令存储? 通常在 Linux 上会在哪里? 最佳答案 只需执行 docker inspect 及以下 LogPath您将获得容器的当前位置。例如。对于
我正在尝试将 Polymer 2 组件集成到现有的 SPA([ab] 使用 JSF 构建)。只要我的 POC 在 Chrome 中运行,我的基础知识就可以正常工作,我真的不在乎它是在 Shadow 还
我们的大型单页 JavaScript 应用程序在 Edge 浏览器中根本无法运行。 (我们在 Chrome 和 Firefox 中正式支持它,我们不允许在 IE 中使用它,因为它只能在那里工作一半,我
Microsoft Edge 16 中存在错误(已多次报告并在此处确认:https://developer.microsoft.com/en-us/microsoft-edge/platform/is
Microsoft Edge 16 中存在错误(已多次报告并在此处确认:https://developer.microsoft.com/en-us/microsoft-edge/platform/is
我是一名优秀的程序员,十分优秀!