在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
ieE(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".