在R中使用igraph控制图形的美观性

在R中使用igraph控制图形的美观性,r,plot,igraph,tkplot,R,Plot,Igraph,Tkplot,我有这样一个数据集: final.Df X1 X2 X3 1 event1 event2 event5.n1 2 event1 event2 event5.n1 3 event1 event2 event6.n1 4 event1 event3 event6.n2 5 event1 event3 event7.n2 6 event1 event3 event7.n2 7 event1 event4 event7.n3 8 event1 even

我有这样一个数据集:

final.Df
       X1     X2        X3
1  event1 event2 event5.n1
2  event1 event2 event5.n1
3  event1 event2 event6.n1
4  event1 event3 event6.n2
5  event1 event3 event7.n2
6  event1 event3 event7.n2
7  event1 event4 event7.n3
8  event1 event4 event7.n3
9  event1 event4 event8.n3
10 event1 event4 event8.n3 
(原始数据可能包括最多200行(aprox)和最多10列。我使用此简化数据集来说明问题。从该数据集中,我使用以下代码,使用R中的包
igraph
绘制流程图(或树形图)(下面的代码部分基于):

我在stackoverflow这里读到这个错误可能与一些遗留的tcl/tk 8.5安装()有关,但我已经检查过了,这不是我的情况(因此不知道如何解决这个错误)

在这个阶段,我需要一些专家的帮助来控制图表的美感。总结如下:

1-如何控制此处显示的绘图中边缘之间的位置和/或角度?另一个选项是更好地使用石英绘图窗口的整个表面

2-如何控制与边缘关联的标签的位置

3-不太重要的是,此
tkplot
错误消息来自何处


提前感谢

您可以使用
\n
ie
E(g)$label通过更改您的输出设备(例如在
pdf
中)的
高度和
宽度参数Hi user20650来偏移边缘标签。我将探索
布局的“调整”。reingold.tilford(g)
。这是一个好主意,谢谢!可能很复杂,但这是一个好主意。与pdf相关。我可以将绘图导出为pdf,但看起来仍然“紧凑”。可以随时放大,但我更喜欢根据代码调整绘图的外观:)。再次感谢你!
##create edges 
edges <- rbind(na.omit(final.Df[1:2]),
           do.call('rbind',
                   lapply(1:(ncol(final.Df)-2), function(i) 
                          na.omit(setNames(final.Df[(1+i):(2+i)],
                                           names(final.Df[1:2]))))))

##remove duplicated edges.
rm.ind <- c()
for (i in 2:nrow(edges)){
    if (edges[i,1] == edges[i-1,1] & edges[i,2] == edges[i-1,2]){
        rm.ind <- c(rm.ind, i) 
    }
}
edges <- edges[-rm.ind,]

## create graph
require(igraph)
g <- graph.data.frame(edges)
E(g)$curved <- 0
E(g)$label <- rep(1, nrow(edges))
plot.igraph(g, vertex.size=0, edge.arrow.size=0 ,
                  layout=-layout.reingold.tilford(g)[,2:1])
tkplot(g, canvas.width=450, canvas.height=450, vertex.size=0, edge.arrow.size=0 ,
                   layout=-layout.reingold.tilford(g)[,2:1])
Loading required package: tcltk
Error in structure(.External(.C_dotTclObjv, objv), class = "tclObj") : 
  [tcl] expected integer but got "font266".