首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图的顶点位置类似于其他一些图

图的顶点位置类似于其他一些图
EN

Stack Overflow用户
提问于 2019-04-23 17:40:20
回答 2查看 145关注 0票数 0

我试图绘制一些图,它是互补的,我希望在绘制它们时,顶点在同一个位置。例如,在绘制具有4个顶点的圈图时:

我希望能够绘制它的互补(边1-3和0-2),而在同一位置的顶点。相反,在绘制它是互补的时候,我得到了以下信息:

我试着用字典来表示位置,但是,当我用n个顶点绘制多个位置时,这只适用于特定的情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-25 01:53:57

对于您的特定用例,我认为有一个很好的方法.complement()可以保留这一点。

代码语言:javascript
复制
sage: H = graphs.CycleGraph(6)                        
sage: graphics_array([H.plot(),H.complement().plot()])

但是,通常您可能希望在相同的位置上绘制另一张图,并且

使用字典

确实是你想在这里做的。一个简单的例子是你的第一个,但我调整了新的图形,使它不再是一个补充。

代码语言:javascript
复制
sage: G = graphs.CycleGraph(4)
sage: pos_dict = G.get_pos()
sage: pos_dict
{0: (0.0, 1.0), 1: (-1.0, 0.0), 2: (0.0, -1.0), 3: (1.0, 0.0)}

这是一本有关的字典,一本位置字典。现在我做了一个新的图表,并试图用另一个来绘制它。

代码语言:javascript
复制
sage: G1 = Graph({1: [3,2], 2: [0]})
sage: graphics_array([G.plot(),G1.plot(pos=pos_dict)])

票数 1
EN

Stack Overflow用户

发布于 2019-04-23 18:16:59

我为我的n个顶点问题找到了一个可行的解决方案。这是代码:

代码语言:javascript
复制
n = 6

# Don't modify
posi = {}
r = 1

G = Graph()
F = Graph()

for i in [0..(n-1)]:
    for j in [0..(n-1)]:
        if i==(j+1)%n or j==(i+1)%n : 
            G.add_edge( (i ,j) )
F = G.complement()

for i in [0..(n-1)]:
    if n % 2 != 0 and i == 0:
        x=0.5
        y=i
    else:
        if i < n/2:
            x=-0.15 if i%2 !=0 else 0.15 #Avoid consecutive vertices to be in-line
            y=i
        else:
            x=0.85 if i%2 !=0 else 1.15  #Avoid consecutive vertices to be in-line
            y=i-r
            r = r+2
    posi[i] = [x, y]

结果(也把它们放在一起):

在写这篇文章的时候,我觉得有一些“更酷”的方法可以做到这一点,但这是完美的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55816704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档