Rgraphviz:打印区域外的边标签

Rgraphviz:打印区域外的边标签,r,visualization,graphviz,graph-visualization,bioconductor,R,Visualization,Graphviz,Graph Visualization,Bioconductor,我试图用两个边缘标签绘制一个Rgraphviz对象。不幸的是,标签不在绘图范围内。以下是我的例子: require('Rgraphviz') set.seed(123) g1 <- randomGraph(letters[1:10], 1:4, 0.4) eAttrs <- list() eAttrs$label <- c("a~g" = "I have a very long label 1", "a~i" = "and a long label 2") plot(g1,

我试图用两个边缘标签绘制一个
Rgraphviz
对象。不幸的是,标签不在绘图范围内。以下是我的例子:

require('Rgraphviz')
set.seed(123)
g1 <- randomGraph(letters[1:10], 1:4, 0.4)
eAttrs <- list()
eAttrs$label <- c("a~g" = "I have a very long label 1", "a~i" = "and a  long label 2")
plot(g1, edgeAttrs = eAttrs)
3. 更改
par
属性:

par(oma=c(10,10,10,10))
plot(g1, edgeAttrs = eAttrs)
4.
?Rgraphviz::GraphvizAttributes更改节点、边和常规属性

attrs <- list(graph=list(size=c(1, 1)))
attrs$edge$fontsize<-8 
plot(g1, edgeAttrs = eAttrs, attrs=attrs)
问题出在哪里 调用
graph
对象上的
plot()
将分派一个S4方法(由
getMethod(“plot”、“graph”)
显示),该方法依次调用通过键入
getMethod(“plot”、“Ragraph”)显示的函数。该函数包含以下非常不幸的行,不管您进行了任何相关参数设置,这些行都将覆盖它们,以将左右边距重置为0。令人沮丧

oldpars <- par(mai = c(sheight, 0, mheight, 0))
on.exit(par(oldpars), add = TRUE)

我找到了另一个解决方案:在我最初的问题中,我改变了我用
agopen
获得的布局图中边界框的大小。绘制布局图时,根本没有显示任何边标签。我发现可以将边属性从图形对象传递到
agopen
,然后更改边界框:

require('Rgraphviz')
set.seed(123)
g1 <- randomGraph(letters[1:10], 1:4, 0.4)
eAttrs <- list()
eAttrs$label <- c("a~g" = "I have a very long label 1", "a~i" = "and a  long label 2")
z <- agopen(g1, "foo", edgeAttr=eAttrs)
z@boundBox@botLeft@x <- z@boundBox@botLeft@x - 400 ##left
z@boundBox@upRight@x <- z@boundBox@upRight@x + 200 ##right
plot(z)
require('Rgraphviz')
种子集(123)

g1顺便说一句,我在
par(mai=c(sheight,0,mheight,0))中得到一个错误

oldpars <- par(mai = c(sheight, 0, mheight, 0))
on.exit(par(oldpars), add = TRUE)
layout(matrix(1:3, nrow=1), widths=c(1,5,1))
par(xpd=NA)                    ## turn off all clipping
plot.new()                     ## blank plot in Panel 1
plot(g1, edgeAttrs = eAttrs)   ## graph in Panel 2
plot.new()                     ## blank plot in Panel 3
require('Rgraphviz')
set.seed(123)
g1 <- randomGraph(letters[1:10], 1:4, 0.4)
eAttrs <- list()
eAttrs$label <- c("a~g" = "I have a very long label 1", "a~i" = "and a  long label 2")
z <- agopen(g1, "foo", edgeAttr=eAttrs)
z@boundBox@botLeft@x <- z@boundBox@botLeft@x - 400 ##left
z@boundBox@upRight@x <- z@boundBox@upRight@x + 200 ##right
plot(z)