首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定制化igraph

定制化igraph
EN

Stack Overflow用户
提问于 2018-11-06 19:55:24
回答 1查看 170关注 0票数 1

我生成了一个无向加权网络图,如下所示:

然而,它看上去并不整洁,节点是否可以以圆形的方式排列,以使它看起来更整洁和清晰?还有什么方法可以增加图例的大小并使其出现在中间的底部?

这方面的R代码如下:

代码语言:javascript
复制
library(igraph)
setwd('C:/Users/malsa876/Desktop/RTest')
    a <-c(33,6,5,5,6,1,2,1,0,4,2,4,1,2,2,0,0,0,5,0,0,0,2,1,0,0,2,1,0,2,0,0,0,0,0,0,1,0,0,1,0,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
    class(a)
    dim(a) <- c(8,8)
    #l <-layout.reingold.tilford(g) 
    a
    # create igraph object.
    g <- graph.adjacency(a, mode="undirected", weighted=TRUE)
    V(g)$label.cex <- 0.5
    V(g)$name<-c("OD", "ACC", "SI", "T", "RD","SCA", "RU", "CC")
    plot(g,main = 'Network Analysis of Interlinked Dimensions',edge.label=round(E(g)$weight, 3),vertex.label = V(g)$name)
    legend("bottomright", c("OD - Operational Demonstration", "ACC - Accuracy", "SI - Stakeholders Interests",  "T - Time", "RD - Requirements Dependency","SCA - Scalability","RU - Requirements Updates","CC - Computational Complexity"),cex=0.5,title = 'Legend')
    V(g)$label.cex <- 0.5
    V(g)$name<-c("OD", "ACC", "SI", "T", "RD","SCA", "RU", "CC")
    d<-V(g)$label
    E(g)$width <- E(g)$weight + min(E(g)$weight) + 1 # offset=1
    plot(g,main = 'Network Analysis of Parameters',edge.label=round(E(g)$weight, 3),vertex.label = V(g)$name)
    legend("bottomright", c("OD - Operational Demonstration", "ACC - Accuracy", "SI - Stakeholders Interests",  "T - Time", "RD - Requirements Dependency","SCA - Scalability","RU - Requirements Updates","CC - Computational Complexity"),cex=0.5,title = 'Legend')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 20:18:49

您可以通过构建自己的布局来实现这一点。

首先,要获得一个纯粹的循环布局,您可以使用:

代码语言:javascript
复制
LO1 = matrix(c(cos((0:7)*2*pi/8), sin((0:7)*2*pi/8)),ncol=2)
plot(g,main = 'Network Analysis of Parameters', layout=LO1)
    edge.label=round(E(g)$weight, 3),vertex.label = V(g)$name)
legend("bottomright", c("OD - Operational Demonstration", 
    "ACC - Accuracy", "SI - Stakeholders Interests",  
    "T - Time", "RD - Requirements Dependency",
    "SCA - Scalability","RU - Requirements Updates",
    "CC - Computational Complexity"),cex=0.5,title = 'Legend', 
    bty="n")

请注意,我使用bty="n"为传奇腾出了一点额外空间。但这只给传奇留下了一点空间。另一种方法是在右下角的图例布局中留出一些额外的空间。然后你可以把字体做大一点。

代码语言:javascript
复制
LO2 = matrix(c(cos((0:7)*2*pi/9), sin((0:7)*2*pi/9)),ncol=2)
plot(g,main = 'Network Analysis of Parameters', layout=LO2,
    edge.label=round(E(g)$weight, 3),vertex.label = V(g)$name)
legend("bottomright", c("OD - Operational Demonstration", 
    "ACC - Accuracy", "SI - Stakeholders Interests",  
    "T - Time", "RD - Requirements Dependency",
    "SCA - Scalability","RU - Requirements Updates",
    "CC - Computational Complexity"),cex=0.7,title = 'Legend', 
    bty="n")

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

https://stackoverflow.com/questions/53179079

复制
相关文章

相似问题

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