R(igraph):边缘从同一顶点开始和结束的方向

时间:2018-09-19 16:26:09

标签: r igraph

我想更改在同一顶点处开始和结束的边的方向。当我使用plot.igraph时,这些边缘全部朝右,这意味着圆左侧的顶点的边缘将与其他边缘重叠。有谁知道我们如何控制他们的方向,例如指向圆的外面?下面是我要编辑的实际图形。

Example of problem

下面是一个小例子,供您参考:

PriceCodes

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以使用参数edge.loop.angle进行控制。
请参阅帮助页面?igraph.plotting

plot(graph, layout = layout.circle(graph), 
     edge.loop.angle=c(0,0,4*pi/3,0, 2*pi/3,0))

Graph with angled loops

请注意,您需要为所有边缘提供一个角度,而不仅仅是循环,即使这仅适用于循环。而且,该角度似乎表示从水平方向顺时针旋转的量。

答案 1 :(得分:0)

问题在于,所有的边缘必须被引用,这使得大型网络难以使用。这似乎可行:

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Traits\CompositeKeyTrait;

class Order extends Model{

    use CompositeKeyTrait;
    protected $table = "order";
    protected $fillable = [
        'id_order',
        'id_trip', 
        'id_users_customer', 
        'date_order',
        'id_users_operator'
    ];

    protected $primaryKey = ['id_order', 'id_trip'];

    public function detail_order(){   
        return $this->hasMany(Detail_Order::class);   
    }
}

然后,当您调用igraph时,请像这样使用它:

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;
use App\Traits\CompositeKeyTrait;

class Detail_Order extends Model{
    use CompositeKeyTrait;

    protected $table = "detail_order";
    protected $fillable = [
        'id_trip',  
        'id_seat',
        'id_users_feeder', 
        'id_order',
        etc
    ];

    protected $primaryKey = ['id_trip', 'id_seat'];

    public function order(){
        return $this->belongsTo(Order::class, 'id_order', 'id_trip');
    }
}