Plot 绘制顶点位置与其他图形类似的图形

Plot 绘制顶点位置与其他图形类似的图形,plot,graph,sage,Plot,Graph,Sage,我正在尝试绘制一些图形,它是互补的,我希望在绘制它们时顶点位于同一位置。例如,绘制具有4个顶点的循环图时: 我希望能够绘制它的互补(边1-3和0-2),同时使顶点处于相同的位置。相反,当绘制它是互补的时,我得到以下结果: 我尝试使用字典来表示位置,但由于我正在绘制多个具有n个顶点的位置,这只适用于特定情况。我找到了一个解决n个顶点问题的有效方法。代码如下: n = 6 # Don't modify posi = {} r = 1 G = Graph() F = Graph() for

我正在尝试绘制一些图形,它是互补的,我希望在绘制它们时顶点位于同一位置。例如,绘制具有4个顶点的循环图时:
我希望能够绘制它的互补(边1-3和0-2),同时使顶点处于相同的位置。相反,当绘制它是互补的时,我得到以下结果:


我尝试使用字典来表示位置,但由于我正在绘制多个具有n个顶点的位置,这只适用于特定情况。

我找到了一个解决n个顶点问题的有效方法。代码如下:

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]
n=6
#不要修改
posi={}
r=1
G=图()
F=图()
对于[0.(n-1)]中的i:
对于[0.(n-1)]中的j:
如果i==(j+1)%n或j==(i+1)%n:
G.添加_边((i,j))
F=G.补语()
对于[0.(n-1)]中的i:
如果n%2!=0和i==0:
x=0.5
y=i
其他:
如果i
结果(也将它们绘制在一起):


在写这篇文章时,我认为有一些“更酷”的方法可以做到这一点,但这非常有效。

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

sage: H = graphs.CycleGraph(6)                        
sage: graphics_array([H.plot(),H.complement().plot()])

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

使用字典

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

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)}
这是有问题的词典,一本关于地点的词典。现在我制作了一个新的图表,并尝试用另一个来绘制它

sage: G1 = Graph({1: [3,2], 2: [0]})
sage: graphics_array([G.plot(),G1.plot(pos=pos_dict)])

这是一个比我的更好、更灵活的解决方案,谢谢。很高兴能提供帮助!但也很高兴你通过解决问题展现了自己的能力:)