标签: edges

图自动布局算法

为了简化问题,我有一个图表,其中包含2D平面上的节点和边.

我想要做的是单击一个按钮,它会自动布局图形看起来干净.我的意思是边缘的最小交叉,节点之间的漂亮空间,甚至可能代表图形比例(加权边缘).

我知道这是一个看起来很干净的图表是完全主观的,但有没有人知道一个算法开始,而不是重新发明轮子?

谢谢.

algorithm layout graph edges nodes

61
推荐指数
2
解决办法
4万
查看次数

如何制作边缘光滑的CSS三角形?

我有一个三角形(JSFiddle)使用这个CSS:

.triangle {
    width: 0;
    height: 0;
    border-top: 0;
    border-bottom: 30px solid #666699;
    border-left: 20px solid transparent; 
    border-right: 20px solid transparent;
    }
Run Code Online (Sandbox Code Playgroud)

这个HTML:

<div class="triangle"></div>
Run Code Online (Sandbox Code Playgroud)

这会形成一个三角形,但对角线呈锯齿状和像素化.我怎样才能让它们变得光滑?(我可以通过点缀它们来在Safari和Chrome中平滑它们,但这打破了Firefox和IE中的三角形.)

css geometry smooth edges css-shapes

31
推荐指数
4
解决办法
4万
查看次数

使用List和Stack实现深度优先搜索到C#

我想创建一个深度优先搜索,我有点成功.

这是我到目前为止的代码(除了我的构造函数,请注意Vertex和Edge类只包含属性,这里没有重要的内容):

private Stack<Vertex> workerStack = new Stack<Vertex>();
private List<Vertex> vertices = new List<Vertex>();
private List<Edge> edges = new List<Edge>();

private int numberOfVertices;
private int numberOfClosedVertices;
private int visitNumber = 1;

private void StartSearch()
{
    // Make sure to visit all vertices
    while (numberOfClosedVertices < numberOfVertices && workerStack.Count > 0)
    {
        // Get top element in stack and mark it as visited
        Vertex workingVertex = workerStack.Pop();
        workingVertex.State = State.Visited;

        workingVertex.VisitNumber = visitNumber;
        visitNumber++;

        numberOfClosedVertices++;

        // Get all edges connected to …
Run Code Online (Sandbox Code Playgroud)

c# search edges depth vertex

28
推荐指数
2
解决办法
4万
查看次数

用点强制正交(垂直或水平)边

我想强制点只显示节点之间的垂直或水平边缘.

我发现了一个类似的请求,使用Dot/GraphViz发布了Family树布局,但我没有处理树,所以我希望有一个解决方案,而不插入额外的节点...

如果我构建以下图表:

digraph G {

    splines=ortho

    A [ shape=box ]
    B [ shape=box ]
    C [ shape=box ]
    D [ shape=box ]

    A -> B
    A -> C

    B -> D
    C -> D

}

我得到的是这个:

在此输入图像描述

但我想要一个像这样的图表:

在此输入图像描述

我怎样才能得到这样的渲染?

编辑:"splines"属性似乎没有按预期工作......有没有我做错了?

dot graphviz orthogonal edges

26
推荐指数
1
解决办法
2万
查看次数

使用d3在两个节点之间绘制多个边

我一直在关注此示例中的 Mike Bostock的代码,以了解如何在d3中绘制有向图,并想知道如何构造代码以便我可以在图中的两个节点之间添加多个边.例如,如果上例中的数据集定义为

var links = [{source: "Microsoft", target: "Amazon", type: "licensing"},
             {source: "Microsoft", target: "Amazon", type: "suit"},
             {source: "Samsung", target: "Apple", type: "suit"},
             {source: "Microsoft", target: "Amazon", type: "resolved"}];
Run Code Online (Sandbox Code Playgroud)

然后运行代码,我看到的只有一行.所有路径都在html代码中正确绘制,但它们都具有相同的坐标和方向,使视觉看起来像1行.在这个例子中需要进行什么样的代码重组才能让3个边缘不能相互叠加?

html svg graph edges d3.js

23
推荐指数
2
解决办法
1万
查看次数

GraphViz,对相同的边缘进行分组

digraph G {
  a -> b [ label = "foo" ];
  a -> b [ label = "bar" ];
}
Run Code Online (Sandbox Code Playgroud)

这将在'a'和'b'节点之间创建两条边.有没有办法只有一条边(将它们分组)?

graphviz edges

20
推荐指数
2
解决办法
1万
查看次数

根据networkx重复边缘更新权重信息

我有一个JSON提要数据,其中包含许多用户关系,例如:

"subject_id = 1, object_id = 2, object = added 
subject_id = 1, object_id = 2, object = liked
subject_id = 1, object_id = 3, object = added
subject_id = 2, object_id = 1, object = added"
Run Code Online (Sandbox Code Playgroud)

现在我使用以下代码将JSON转换为networkx Graph:

def load(fname):
G = nx.DiGraph()
d = simplejson.load(open(fname))
for item in d:
    for attribute, value in item.iteritems():
        G.add_edge(value['subject_id'],value['object_id'])
return G
Run Code Online (Sandbox Code Playgroud)

结果如下:

[('12820', '80842'), ('12820', '81312'), ('12820', '81311'), ('13317', '29'), ('12144', '81169'), ('13140', '16687'), ('13140', '79092'), ('13140', '78384'), ('13140', '48715'), ('13140', '54151'), …
Run Code Online (Sandbox Code Playgroud)

python duplicates edges networkx

16
推荐指数
1
解决办法
9132
查看次数

获取graphviz以绘制边缘上方的节点

是否有任何方法可以强制graphviz始终在边缘上绘制节点,即使边缘被绘制(或最好是在节点下)?

到目前为止,我已经尝试过订购它们和不同的图层选项,但没有找到一种有效的方法.

graphviz edges nodes

12
推荐指数
1
解决办法
2953
查看次数

图片框中的圆角边缘C#

如何在图片框控件中舍入边缘.我想获得像椭圆这样的角度,但我不知道该怎么做.我用C#.谢谢!

c# picturebox edges

12
推荐指数
3
解决办法
3万
查看次数

R igraph将平行边缘转换为权重属性

我正在使用igraph for R.我的图表基于一个包含平行边缘的边缘列表(多个边缘具有相同的源和目标).我想将这些平行边缘转换为边缘属性权重.有没有一种方法可以做到这一点?

如果没有简单的方法.如何识别这些平行边缘?

    duplicated(E(net))
Run Code Online (Sandbox Code Playgroud)

不会返回单个副本.我想它正在寻找重复的边缘ID.

r edges igraph weighted-graph

12
推荐指数
2
解决办法
5385
查看次数